Miško Hevery, один из основателей JavaScript-фреймворка AngularJS, ныне работающий в Google, представил (http://www.theregister.co.uk/2014/11/04/improving_javascript.../) проект AtScript (http://atscript.org/), в рамках которого развивается расширенный вариант языка 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 (https://www.opennet.ru/opennews/art.shtml?num=39488), в AtScript добавлена поддержка интроспекции и аннотаций метаданных, при этом AtScript совместим с TypeScript, так как использует туже схему указания типов через выражение ":", и может смешиваться с кодом на TypeScript. Похожие методы также применяются в языке Dart (https://www.opennet.ru/opennews/art.shtml?num=40849). при этом TypeScript и Dart требуют предварительной компиляции кода в JavaScript-представление. AtScript пытается избавиться от данной фазы и остаться максимально приближенным к JavaScript. Такой подход напоминает Asm.js (http://asmjs.org/) от Mozilla, но предлагаемая в Asm.js система определения типов в специальных комментариях не слишком удобна при разработке вручную и больше предназначена для автоматической компиляции в JavaScript.
В настоящее время AtScript находится в стадии формирования экспериментального прототипа. На GitHub размещена (https://github.com/vojtajina/atscript-playground) подборка тестовых сценариев, использующих для трансляции AtScript. Кроме того, Google открыл код JavaScript компилятора Traceur (https://github.com/google/traceur-compiler), позволяющий транслировать в обычный JavaScript некоторые экспериментальные возможности, развиваемые как JavaScript.next (https://github.com/google/traceur-compiler/wiki/LanguageFeat...). В том числе для Traceur подготовлены настройки, обеспечивающие преобразование AtScript в код ECMAScript 5, который может выполняться в обычном браузере (AtScript завязан на поддержке классов и модулей, которые появятся в будущем стандарте ECMAScript 6). Для загрузки модулей AtScript предлагается использовать фреймворк RequireJS. Первым крупным проектом, использующим AtScript станет web-фреймворк Angular, выпуск 2.0 которого планируется полностью переписать на AtScript.
URL: http://www.theregister.co.uk/2014/11/04/improving_javascript.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=41006
NIH синдром + мания велосипедостроения
Нет. В отличие от нечитаемого asm.js используется нормальный человеческий синтаксис. Угадай, какой в итоге взлетит.
Тот у которого больше.
asm.js вообще немного не то. Это на 90% asm и лишь 10% js - там даже управление памятью ручное (если писать вручную). А типизация для обычного js не помешала бы, да.
Это очень мягкое определение asm, любители костылей из мозилы родили очередной шедевр, еще более мутным было бы только бинарное представление данных.
> еще более мутным было бы только бинарное представление данных.Так оно для машины, машинам все-равно. А парсить и выполнять так быстрее. И места меньше занимает. Потому что у байта 256 возможных значений и если обуть себя на часть возможных значений - появится неэффективность.
Так для машин полным полно протоколов передачи данных, и http НЕ один из них, так нафига спрашивается перемешивать, если для машин так и делайте для машин изначально бинарным, а все эти доделки и допилы - бессмысленые усложнения и снижение эффективности на ровном месте
> делайте для машин изначально бинарным, а все эти доделки и допилы
> - бессмысленые усложнения и снижение эффективности на ровном местеА теперь посмотрим на HTTP/2 aka SPDY. Где ваш бог теперь? :)
Где ваш spdy? где ipv6, где tcpmp?web - это сильно, и сочетание html+js+css+http проживет еще очень долго, но технология уже сложилась, ломать совместимость ради копеечной экономии никто не станет.
А вот придумать новое поколение вэба с ssl, p2p, jquery из каробки гуглу слабо
> Где ваш spdy? где ipv6да прямо вот, работают. учитывая их костыльность и мерзопакостность — наверняка будут очередными «стандартами».
Наверняка, но не в этом измерении, запаса прочности ip4 и http хватит еще на долго, а там глядишь чего получше придумают.
> Наверняка, но не в этом измерении, запаса прочности ip4 и http хватит
> еще на долго, а там глядишь чего получше придумают.здравствуй, испытатель криокамер! добро пожаловать в XXI-й век!
ой, да ладно, ну-ка раскажите нам о повсемесно используемой технологии которой меньше 10 лет.
какое это имеет отношение к теме?
Да очень простое, вы изобретаете палку, и все ею пользуются чтобы мамонтов гонять, да кокосы сбивать с пальм, но тут приходит некий умник и придумывает привязать к палке булыжник, мамотов гонять чутка получше, а вот кокосы с пальм сбивать уже не то.
Не всем же быть таким маргинальным быдлом как вы.
> Не всем же быть таким маргинальным быдлом как вы.ты прав. нам, быдлу, недоступна чарующая сила упарывающей химии.
p.s. а всё-таки интересно, что надо употреблять, чтобы рядом обитали мамонты, булыжники и кокосовые пальмы.
https://ru.wikipedia.org/wiki/АллегорияКнижки читать надо, логическое мышление развивать.
Хотя идиоту и книжки не помогут, а мудрец станет мудрее даже если будет пять лет сидеть и смотреть камень.
смотри в камень, пожалуйста. дОвление твоей мудрости почти невыносимо.
> В отличие от нечитаемого asm.js используется нормальный человеческий синтаксис.Нормально было бы закончить уже выделываться и если уж хочется нормальных приложений с нормальной скоростью - ну вон LLVM привинтить к браузеру и нефиг уже этим онaнизмом заниматься. А все эти попытки научить ежа летать, растягивая несчастного чтобы улучшить аэродинамику - жестокий глум без особого результата.
Нормальная реализация типов - это когда парсер может проверить типы и пнуть програмера если тот сравнивает бананы и гвозди, а кодогенератор может заранее сгенерить оптимальный код. А вот это - полумеры галимые.
> Угадай, какой в итоге взлетит.
См. комикс номер 927 на XKCD :)
> ну вон LLVM привинтить к браузеру и нефиг уже этим онaнизмом заниматься.+1 В chromium уже давно PNaCl встроен. Работает быстрее любого asm.js плюс поддерживает нормальную многопоточность и SIMD. Один недостаток -- первый запуск занимает больше времени чем на asm.js, поскольку программа компилируется целиком. Но результат компиляции кешируется, поэтому второй и последующие запуски мгновенные.
не понятно поведение Гугла:если они ведут развитие Яваскрипта, то их попытки продвинуть Дарт проваляться, т.к. уже люди спрашивают:
"...не оставит ли Гугл Дарт, если он не наберет критической массы пользователей и фреймворков на нем...??!"
я уже не вижу резона переходить на Дарт, когда слышно о таких проектах как этот, от Мозиллы асм, и т.п.
Невольно возникает вопрос - как же дарт. Поматросили и бросили?Нежели у гугла такие неограниченные ресурсы?
> Невольно возникает вопрос - как же дарт. Поматросили и бросили?
> Нежели у гугла такие неограниченные ресурсы?пока что тут есть человек, который занимается полулюбительским проектом. при этом человек работает у гугеле, что даёт повод одним идиотам писать «гугель делает новый язык», а другим идиотам некритично это проглатывать.
да неважно кто его делает, важно что вместо запилить пару этих фич в tsc, сырцы которого на гитхабе, вместе с сотней FR об этих фичах - мы не можем, зато изобрести еще одну полуненужность, наступив на все грабли ts по дороге - запросто.
тебе мсоподелие интересно? иди и запиливай.
> тебе мсоподелие интересно? иди и запиливай.типа мс большее зло чем гугл? компилер под APL - почему не контрибютить, учитывая что сообщество вокруг ts уже собралось и ждет этих фич? в итоге будет очередная поделка-дубликат.
> типа мс большее зло чем гугл?где тут гугл, а?
> компилер под APL - почему не
> контрибютить, учитывая что сообщество вокруг ts уже собралось и ждет этих
> фич?вот поэтому, навреное, и не хотят. потому что «сообщество собралось и ждёт.»
> в итоге будет очередная поделка-дубликат.
и что? человек забыл у тебя спросить, чем ему заниматься? это бывает.
>где тут гугл, а?а где тут ms?
>вот поэтому, навреное, и не хотят. потому что «сообщество собралось и ждёт.»
предлагаете всем заниматься написанием языков если что-то не устраивает?
>и что? человек забыл у тебя спросить, чем ему заниматься? это бывает.
интересна логика человека. вот сказал бы он (для примера) - "компилер tsc внутри страшное и унылое говно, поэтому я выкатываю свой" - вопросов бы не было. А просто сделать еще одну матрешку, которая отличается только цветом нижней половинки, при том, что предыдущие матрешки перекрасятся к следующей версии точно так же - это как-то странно. Хотя да, когда коту делать нечего... можно и славу пафосно пособирать по интернетам, попутно зарисовавшись модным местом работы.
Гугловый компилятор, traceur, был доступен на google code задолго до первого релиза typescript. Просто его не рекламировали.
traceur был раньше ts, туда недавно добавили типы - остальное уже было. просто дали имя atscript тому диалекту es6/7, который фактически уже реализован
Dart - аналогичная полулюбительская поделка, только развиваемая не одним, а несколькими гуглерами. Кстати, очевидными джавистами.
Это есть хорошо или плохо?
к чему клоним? что у Гугла нет стратегии в данном направлении?
Если оно реально будет компеляться через traceur, то может и выстрелит и angular 2.0 вы
.. выйдет в приемлимые сроки, не успев состариться еще до выхода.Однако, лучше бы они с Typescript скооперировались. У TS куча приятных плюшек и серьезый архитектор языков во главе. Всю функциональность TS ангуляровцам и за 2 года не запилить
>> У TS куча приятных плюшек и серьезый архитектор языков во главеЭто MS то? Такое и даром не надо.
у тебя есть альтернативы?
> у тебя есть альтернативы?Для начала MS в вебе никто и звать никак. Технология которая пропихивается только одним MS - не имеет никакого будущего. Особенно в вебе.
аннотации это конечно хорошо, не попахивает мегакостылями
Мегакостылями оно в принципе попахивает из-за наследственных болезней JS. Увы - Дарт, как выяснилось, не лучше.Но что до именно этих аннотаций - то от аннотаций там одно название. Вполне приличная типизация - нормальный синтаксис, заход на умение работать с ними в самом браузере, а трансляция - как переходной этап...
> Дарт, как выяснилось, не лучше.можно с этого места поподробней, с прувами
Тут же на опеннете в пределах месяца меня просветили насчет той же кривизны оператора "+", например, что и в JS. Для меня - этого достаточно, ибо дикость.
Вот: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?quote...
> Мегакостылями оно в принципе попахивает из-за наследственных болезней JS. Увы - Дарт,
> как выяснилось, не лучше.
> Но что до именно этих аннотаций - то от аннотаций там одно
> название. Вполне приличная типизация - нормальный синтаксис, заход на умение работать
> с ними в самом браузере, а трансляция - как переходной этап...js, не смотря на кучу недостатков прекрасен и оказался живуч. Направление развития языковых, инструментальных средств для окружения браузеров будет всегда перспективным и актуальным.
strict mode, jshint/jslint в общем решают проблему хрупкости и капризности языка, ну и ликбез по DOM-ready
js неимоверно уродлив. даже бидон лучше, чем это недоразумение. «живуч» он оказался только потому, что у него тупо не было альтернативы. и пока её не было, люди успели понаписать на js кучу говнокода, и теперь уже от js никуда не денешься.
Хм, ну, уже за меня ответили насчет "живуч".А язык, который не принуждает к модульности и четким интерфейсам, для продакшна малопригоден. Это вам не менюшку подсветить, это горы кода, которые должны писаться и поддерживаться командами, переживать смену разработчиков, активно модифицироваться и т.д. Тут нужны не джаваскриптовые извраты и ошибки, выстреливающие через пол-года, а предельная простота, читабельность и предсказуемость. Что, в общем, означает - "мейнстримное" ООП, явную строгую типизацию (возможно, с выводом типов - но определённо с возможностью определять структуры и номинальными типами) и принудительную изоляцию модулей и объектов.
но — справедливости ради — Брэндан тогда не предполагал, что на ЭТОМ станут писать полноценный софт нехилых размеров. и что баги и недочёты ЭТОГО превратятся в стандарт, которому все должны следовать, ёлы-палы.
Разумеется.
при всём этом на планете существуют идиоты, которые добровольно выбирают ту же ноду.жс для реализации немаленьких проектов. я положительно не в состоянии представить, что происходит внутри черепа у этих существ.зато я всегда был уверен, что нода.жс взлетит. потому что такой идиотизм просто не может не взлететь в «веб-разработке», в которой контингент — как на подбор…
Ну, тут палка о двух концах. Когда на обеих сторонах один язык - это таки удешевляет и упрощает разработку, и, учитывая, что альтернативы (что там реально распространено? PHP, Python, иногда Ruby) не так далеко ушли, то почему бы и нет? По крайней мере, тогда придётся бороться с одним набором заскоков, а не с двумя.
> (что там реально распространено? PHP, Python, иногда Ruby) не так далеко
> ушлину, похапэ да, а бидон и руби таки лучше. чёрт, там хотя бы модули есть, одно это уже epic win.
> тогда придётся бороться с одним набором заскоков, а не с двумя.
да ну, всё равно код сервера и код уеб-клиента обычно разные люди пишут. потому что если одни и те же, то всё ещё хуже, чем представлялось изначально: большинство ушибленых уебом вообще нельзя к программированию подпускать, а уж к программированию серверов и подавно.
нода.жс же, вдобавок, — на редкость стрёмная попытка реализации сопрограмм в языке, где их нет. причём на языке, где откровенные баги дизайна не просто не починены, а объявлены стандартом.
Да запарили вы уже своими "улучшенными" JS и Java.
> Да запарили вы уже своими "улучшенными" JS и Java.Эти "улучшенными" полезны хотя бы тем, что вызывают такой батхэрт у быдлокодеров.
Сначала придумываем себе проблем с динамически типизированными языками, а потом героически их решаем.
Каждые полгода Google придумывает новый язык, который заменит JavaScript. Каждые, мать его, полгода... Вы вдумайтесь, какие масштабы!
> Каждые полгода Google придумывает новый язык, который заменит JavaScript. Каждые, мать
> его, полгода... Вы вдумайтесь, какие масштабы!Департаменту инноваций как-то нужно оправдывать свое существование
Гугл так делает уже много лет - вываливает гору инноваций, потом смотрит - что выживет, откуда можно взять отдельные фрагменты, а что хоронить. Стратегия у них такая, пора бы привыкнуть уже.
внезапно, Dart-окапец
Uber FTS!
Смахивает на синдром отмены строгих типов, у тех кто недавно начал писать на JS.Советую посмотреть вот это http://youtu.be/_kXiH1Yiemw