The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Google развивает AtScript, вариант JavaScript с аннотациями типов

05.11.2014 13:42

Miško Hevery, один из основателей JavaScript-фреймворка AngularJS, ныне работающий в Google, представил проект AtScript, в рамках которого развивается расширенный вариант языка JavaScript, поддерживающий определение информации о типах через добавление аннотаций, что позволяет существенно увеличить эффективность работы JIT-компилятора и оптимизатора.

AtScript обеспечивает совместимость с кодом существующих проектов и JavaScript-движков за счёт использования допустимого в спецификации ECMAScript 4 синтаксиса ":", например, вместо "methodA(name)" можно указать "methodA(name:string):int", а также элементов, развиваемых в стандарте ECMAScript 6. Кроме аннотаций типов в AtScript реализована поддержка аннотаций полей и аннотаций метаданных. Аннотации полей позволяют явно определить используемые в классе поля перед их использованием. Для определения полей также применяется выражение ":", например "class Point { x:int; y:int; }".

Аннотации метаданных дают возможность использовать методы декларативного программирования и привязать к коду дополнительную информацию, например, указать необходимые фреймворкам сведения для подстановки зависимостей. Для определения метаданных предлагается использовать символ '@', например, "@Component({selector: 'foo'})". Также в AtScript предусмотрены механизмы интроспекции для определения типа объекта во время выполнения программы и доступа к данным о типах. Таким образом, AtScript можно рассматривать как ECMAScript 6, расширенный поддержкой типов, аннотаций и интроспекции.

В отличие от развиваемого компанией Miсrosoft языка TypeScript, в AtScript добавлена поддержка интроспекции и аннотаций метаданных, при этом AtScript совместим с TypeScript, так как использует ту же схему указания типов через выражение ":", и может смешиваться с кодом на TypeScript. Похожие методы также применяются в языке Dart. При этом TypeScript и Dart требуют предварительной компиляции кода в JavaScript-представление. AtScript пытается избавиться от данной фазы и остаться максимально приближенным к JavaScript. Такой подход напоминает Asm.js от Mozilla, но предлагаемая в Asm.js система определения типов в специальных комментариях не слишком удобна при разработке вручную и больше предназначена для автоматической компиляции в JavaScript.

В настоящее время AtScript находится в стадии формирования экспериментального прототипа. На GitHub размещена подборка тестовых сценариев, которые можно использовать для экспериментов с AtScript. Кроме того, для работы с AtScript можно использовать JavaScript компилятор Traceur, позволяющий транслировать в обычный JavaScript (ECMAScript 5) некоторые экспериментальные возможности ECMAScript 6 (AtScript завязан на поддержке классов и модулей, которые появятся в будущем стандарте ECMAScript 6). В том числе для Traceur подготовлены настройки, обеспечивающие преобразование AtScript в код на языке Dart или код ECMAScript 5, который может выполняться в обычном браузере. Для загрузки модулей AtScript предлагается использовать фреймворк RequireJS. Первым крупным проектом, использующим AtScript станет web-фреймворк Angular, выпуск 2.0 которого планируется полностью переписать на AtScript.

  1. Главная ссылка к новости (http://www.theregister.co.uk/2...)
  2. OpenNews: Выпуск языка программирования Dart 1.7, развиваемого Google для замены JavaScript
  3. OpenNews: Язык Dart утверждён ассоциацией Ecma в качестве международного стандарта
  4. OpenNews: Релиз Firefox 22 с поддержкой Asm.js
  5. OpenNews: Выпуск языка программирования Rust 0.12, развиваемого проектом Mozilla
  6. OpenNews: Увидел свет TypeScript 1.0, продвигаемый Microsoft в качестве альтернативы JavaScript
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41006-javascript
Ключевые слова: javascript, atscript, typescript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (60) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 14:27, 05/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    NIH синдром + мания велосипедостроения
     
     
  • 2.13, Аноним (-), 15:19, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нет. В отличие от нечитаемого asm.js используется нормальный человеческий синтаксис. Угадай, какой в итоге взлетит.
     
     
  • 3.18, А (??), 15:59, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Тот у которого больше.
     
  • 3.24, inferrna (ok), 16:46, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    asm.js вообще немного не то. Это на 90% asm и лишь 10% js - там даже управление памятью ручное (если писать вручную). А типизация для обычного js не помешала бы, да.
     
     
  • 4.41, cmp (ok), 00:09, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это очень мягкое определение asm, любители костылей из мозилы родили очередной шедевр, еще более мутным было бы только бинарное представление данных.
     
     
  • 5.45, Аноним (-), 05:49, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > еще более мутным было бы только бинарное представление данных.

    Так оно для машины, машинам все-равно. А парсить и выполнять так быстрее. И места меньше занимает. Потому что у байта 256 возможных значений и если обуть себя на часть возможных значений - появится неэффективность.

     
     
  • 6.53, cmp (ok), 00:43, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так для машин полным полно протоколов передачи данных, и http НЕ один из них, так нафига спрашивается перемешивать, если для машин так и делайте для машин изначально бинарным, а все эти доделки и допилы - бессмысленые усложнения и снижение эффективности на ровном месте
     
     
  • 7.54, Аноним (-), 02:59, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > делайте для машин изначально бинарным, а все эти доделки и допилы
    > - бессмысленые усложнения и снижение эффективности на ровном месте

    А теперь посмотрим на HTTP/2 aka SPDY. Где ваш бог теперь? :)

     
     
  • 8.56, cmp (??), 13:25, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Где ваш spdy где ipv6, где tcpmp web - это сильно, и сочетание html js css htt... текст свёрнут, показать
     
     
  • 9.57, arisu (ok), 13:42, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    да прямо вот, работают учитывая их костыльность и мерзопакостность 8212 наве... текст свёрнут, показать
     
     
  • 10.69, cmp (??), 17:27, 08/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Наверняка, но не в этом измерении, запаса прочности ip4 и http хватит еще на дол... текст свёрнут, показать
     
     
  • 11.70, arisu (ok), 17:31, 08/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    здравствуй, испытатель криокамер добро пожаловать в XXI-й век ... текст свёрнут, показать
     
     
  • 12.71, cmp (ok), 00:35, 10/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ой, да ладно, ну-ка раскажите нам о повсемесно используемой технологии которой м... текст свёрнут, показать
     
     
  • 13.72, arisu (ok), 01:06, 10/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    какое это имеет отношение к теме ... текст свёрнут, показать
     
     
  • 14.75, cmp (ok), 07:02, 10/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да очень простое, вы изобретаете палку, и все ею пользуются чтобы мамонтов гонят... текст свёрнут, показать
     
     
     
    Часть нити удалена модератором

  • 16.77, cmp (ok), 11:01, 10/11/2014 [ответить]  
  • –1 +/
    Не всем же быть таким маргинальным быдлом как вы ... текст свёрнут, показать
     
     
  • 17.78, arisu (ok), 11:08, 10/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ты прав нам, быдлу, недоступна чарующая сила упарывающей химии p s а всё-таки... текст свёрнут, показать
     
     
  • 18.79, cmp (ok), 00:13, 11/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https ru wikipedia org wiki Аллегория Книжки читать надо, логическое мышление ... текст свёрнут, показать
     
     
  • 19.80, arisu (ok), 00:20, 11/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    смотри в камень, пожалуйста дОвление твоей мудрости почти невыносимо ... текст свёрнут, показать
     
  • 3.44, Аноним (-), 05:47, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > В отличие от нечитаемого asm.js используется нормальный человеческий синтаксис.

    Нормально было бы закончить уже выделываться и если уж хочется нормальных приложений с нормальной скоростью - ну вон LLVM привинтить к браузеру и нефиг уже этим онaнизмом заниматься. А все эти попытки научить ежа летать, растягивая несчастного чтобы улучшить аэродинамику - жестокий глум без особого результата.

    Нормальная реализация типов - это когда парсер может проверить типы и пнуть програмера если тот сравнивает бананы и гвозди, а кодогенератор может заранее сгенерить оптимальный код. А вот это - полумеры галимые.

    > Угадай, какой в итоге взлетит.

    См. комикс номер 927 на XKCD :)

     
     
  • 4.81, Аноним (-), 11:49, 16/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > ну вон LLVM привинтить к браузеру и нефиг уже этим онaнизмом заниматься.

    +1 В chromium уже давно PNaCl встроен. Работает быстрее любого asm.js плюс поддерживает нормальную многопоточность и SIMD. Один недостаток -- первый запуск занимает больше времени чем на asm.js, поскольку программа компилируется целиком. Но результат компиляции кешируется, поэтому второй и последующие запуски мгновенные.

     

  • 1.3, Аноним (-), 14:29, 05/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    не понятно поведение Гугла:

    если они ведут развитие Яваскрипта, то их попытки продвинуть Дарт проваляться, т.к. уже люди спрашивают:

    "...не оставит ли Гугл Дарт, если он не наберет критической массы пользователей и фреймворков на нем...??!"

    я уже не вижу резона переходить на Дарт, когда слышно о таких проектах как этот, от Мозиллы асм, и т.п.

     
     
  • 2.16, manster (ok), 15:47, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Невольно возникает вопрос - как же дарт. Поматросили и бросили?

    Нежели у гугла такие неограниченные ресурсы?

     
     
  • 3.17, arisu (ok), 15:50, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > Невольно возникает вопрос - как же дарт. Поматросили и бросили?
    > Нежели у гугла такие неограниченные ресурсы?

    пока что тут есть человек, который занимается полулюбительским проектом. при этом человек работает у гугеле, что даёт повод одним идиотам писать «гугель делает новый язык», а другим идиотам некритично это проглатывать.

     
     
  • 4.22, MPEG LA (ok), 16:36, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • –3 +/
    да неважно кто его делает, важно что вместо запилить пару этих фич в tsc, сырцы которого на гитхабе, вместе с сотней FR об этих фичах - мы не можем, зато изобрести еще одну полуненужность, наступив на все грабли ts по дороге - запросто.
     
     
  • 5.23, arisu (ok), 16:37, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    тебе мсоподелие интересно? иди и запиливай.
     
     
  • 6.25, MPEG LA (ok), 16:50, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > тебе мсоподелие интересно? иди и запиливай.

    типа мс большее зло чем гугл? компилер под APL - почему не контрибютить, учитывая что сообщество вокруг ts уже собралось и ждет этих фич? в итоге будет очередная поделка-дубликат.

     
     
  • 7.26, arisu (ok), 16:55, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > типа мс большее зло чем гугл?

    где тут гугл, а?

    > компилер под APL - почему не
    > контрибютить, учитывая что сообщество вокруг ts уже собралось и ждет этих
    > фич?

    вот поэтому, навреное, и не хотят. потому что «сообщество собралось и ждёт.»

    > в итоге будет очередная поделка-дубликат.

    и что? человек забыл у тебя спросить, чем ему заниматься? это бывает.

     
     
  • 8.29, MPEG LA (ok), 17:07, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а где тут ms предлагаете всем заниматься написанием языков если что-то не устра... текст свёрнут, показать
     
     
  • 9.47, Аноним (-), 09:29, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Гугловый компилятор, traceur, был доступен на google code задолго до первого рел... текст свёрнут, показать
     
  • 5.43, Аноним (-), 01:00, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    traceur был раньше ts, туда недавно добавили типы - остальное уже было. просто дали имя atscript тому диалекту es6/7, который фактически уже реализован
     
  • 4.36, Аноним (-), 18:55, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Dart - аналогичная полулюбительская поделка, только развиваемая не одним, а несколькими гуглерами. Кстати, очевидными джавистами.
     
     
  • 5.40, Аноним (-), 22:40, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Это есть хорошо или плохо?
    к чему клоним? что у Гугла нет стратегии в данном направлении?
     

  • 1.9, Бутират (?), 15:06, 05/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Если оно реально будет компеляться через traceur, то может и выстрелит и angular 2.0 вы
     
     
  • 2.10, Бутират (?), 15:09, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    .. выйдет в приемлимые сроки, не успев состариться еще до выхода.

    Однако, лучше бы они с Typescript скооперировались. У TS куча приятных плюшек и серьезый архитектор языков во главе. Всю функциональность TS ангуляровцам и за 2 года не запилить

     
     
  • 3.14, Аноним (-), 15:28, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>  У TS куча приятных плюшек и серьезый архитектор языков во главе

    Это MS то? Такое и даром не надо.

     
     
  • 4.51, ПолковникВасечкин (?), 17:51, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    у тебя есть альтернативы?
     
     
  • 5.55, Аноним (-), 03:57, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > у тебя есть альтернативы?

    Для начала MS в вебе никто и звать никак. Технология которая пропихивается только одним MS - не имеет никакого будущего. Особенно в вебе.

     

  • 1.19, manster (ok), 16:17, 05/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    аннотации это конечно хорошо, не попахивает мегакостылями
     
     
  • 2.37, Crazy Alex (ok), 18:59, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Мегакостылями оно в принципе попахивает из-за наследственных болезней JS. Увы - Дарт, как выяснилось, не лучше.

    Но что до именно этих аннотаций - то от аннотаций там одно название. Вполне приличная типизация - нормальный синтаксис, заход на умение работать с ними в самом браузере, а трансляция - как переходной этап...

     
     
  • 3.38, Аноним (-), 21:28, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Дарт, как выяснилось, не лучше.

    можно с этого места поподробней, с прувами

     
     
  • 4.60, Crazy Alex (ok), 19:15, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Тут же на опеннете в пределах месяца меня просветили насчет той же кривизны оператора "+", например, что и в JS. Для меня - этого достаточно, ибо дикость.
     
  • 4.61, Crazy Alex (ok), 19:20, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Вот: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?quote=not_empty&az=pos
     
  • 3.58, manster (ok), 17:39, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Мегакостылями оно в принципе попахивает из-за наследственных болезней JS. Увы - Дарт,
    > как выяснилось, не лучше.
    > Но что до именно этих аннотаций - то от аннотаций там одно
    > название. Вполне приличная типизация - нормальный синтаксис, заход на умение работать
    > с ними в самом браузере, а трансляция - как переходной этап...

    js, не смотря на кучу недостатков прекрасен и оказался живуч. Направление развития языковых, инструментальных средств для окружения браузеров будет всегда перспективным и актуальным.

    strict mode, jshint/jslint в общем решают проблему хрупкости и капризности языка, ну и ликбез по DOM-ready

     
     
  • 4.59, arisu (ok), 17:44, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    js неимоверно уродлив. даже бидон лучше, чем это недоразумение. «живуч» он оказался только потому, что у него тупо не было альтернативы. и пока её не было, люди успели понаписать на js кучу говнокода, и теперь уже от js никуда не денешься.
     
  • 4.62, Crazy Alex (ok), 19:29, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хм, ну, уже за меня ответили насчет "живуч".

    А язык, который не принуждает к модульности и четким интерфейсам, для продакшна малопригоден. Это вам не менюшку подсветить, это горы кода, которые должны писаться и поддерживаться командами, переживать смену разработчиков, активно модифицироваться и т.д. Тут нужны не джаваскриптовые извраты и ошибки, выстреливающие через пол-года, а предельная простота, читабельность и предсказуемость. Что, в общем, означает - "мейнстримное" ООП, явную строгую типизацию (возможно, с выводом типов - но определённо с возможностью определять структуры и номинальными типами) и принудительную изоляцию модулей и объектов.

     
     
  • 5.64, arisu (ok), 19:48, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    но — справедливости ради — Брэндан тогда не предполагал, что на ЭТОМ станут писать полноценный софт нехилых размеров. и что баги и недочёты ЭТОГО превратятся в стандарт, которому все должны следовать, ёлы-палы.
     
     
  • 6.67, Crazy Alex (ok), 22:52, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Разумеется.
     
  • 5.65, arisu (ok), 19:51, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    при всём этом на планете существуют идиоты, которые добровольно выбирают ту же ноду.жс для реализации немаленьких проектов. я положительно не в состоянии представить, что происходит внутри черепа у этих существ.

    зато я всегда был уверен, что нода.жс взлетит. потому что такой идиотизм просто не может не взлететь в «веб-разработке», в которой контингент — как на подбор…

     
     
  • 6.66, Crazy Alex (ok), 22:52, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, тут палка о двух концах. Когда на обеих сторонах один язык - это таки удешевляет и упрощает разработку, и, учитывая, что альтернативы (что там реально распространено? PHP, Python, иногда Ruby) не так далеко ушли, то почему бы и нет? По крайней мере, тогда придётся бороться с одним набором заскоков, а не с двумя.
     
     
  • 7.68, arisu (ok), 10:17, 08/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > (что там реально распространено? PHP, Python, иногда Ruby) не так далеко
    > ушли

    ну, похапэ да, а бидон и руби таки лучше. чёрт, там хотя бы модули есть, одно это уже epic win.

    > тогда придётся бороться с одним набором заскоков, а не с двумя.

    да ну, всё равно код сервера и код уеб-клиента обычно разные люди пишут. потому что если одни и те же, то всё ещё хуже, чем представлялось изначально: большинство ушибленых уебом вообще нельзя к программированию подпускать, а уж к программированию серверов и подавно.

    нода.жс же, вдобавок, — на редкость стрёмная попытка реализации сопрограмм в языке, где их нет. причём на языке, где откровенные баги дизайна не просто не починены, а объявлены стандартом.

     

  • 1.39, Аноним (-), 22:03, 05/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да запарили вы уже своими "улучшенными" JS и Java.
     
     
  • 2.42, Led (ok), 00:16, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Да запарили вы уже своими "улучшенными" JS и Java.

    Эти "улучшенными" полезны хотя бы тем, что вызывают такой батхэрт у быдлокодеров.

     

  • 1.48, Mirraz (ok), 10:07, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Сначала придумываем себе проблем с динамически типизированными языками, а потом героически их решаем.
     
  • 1.49, xPhoenix (ok), 10:50, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Каждые полгода Google придумывает новый язык, который заменит JavaScript. Каждые, мать его, полгода... Вы вдумайтесь, какие масштабы!
     
     
  • 2.52, ПолковникВасечкин (?), 17:53, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Каждые полгода Google придумывает новый язык, который заменит JavaScript. Каждые, мать
    > его, полгода... Вы вдумайтесь, какие масштабы!

    Департаменту инноваций как-то нужно оправдывать свое существование

     
  • 2.63, Crazy Alex (ok), 19:37, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Гугл так делает уже много лет - вываливает гору инноваций, потом смотрит - что выживет, откуда можно взять отдельные фрагменты, а что хоронить. Стратегия у них такая, пора бы привыкнуть уже.
     

  • 1.50, Аноним (-), 11:11, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    внезапно, Dart-окапец
     
  • 1.73, Аноним (-), 01:30, 10/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Uber FTS!
     
  • 1.74, Аноним (-), 02:06, 10/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Смахивает на синдром отмены строгих типов, у тех кто недавно начал писать на JS.

    Советую посмотреть вот это http://youtu.be/_kXiH1Yiemw

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру