Разработчики проекта Mozilla приступили (http://www.infoq.com/news/2011/05/ionmonkey) к созданию нового JIT-компилятора для увеличения скорости выполнения JavaScript в движке SpiderMonkey. Новый JIT-копилятор получил название IonMonkey (https://wiki.mozilla.org/Platform/Features/IonMonkey) и пока находится на стадии проектирования (https://bugzilla.mozilla.org/show_bug.cgi?id=646923) архитектуры и формирования (https://bugzilla.mozilla.org/show_bug.cgi?id=650181) начального прототипа. IonMonkey является третьим JIT-компилятором, создаваемым в рамках проекта Mozilla, прошлые варианты были выпущены в 2010 (http://www.opennet.me/opennews/art.shtml?num=25608) и 2008 (http://www.opennet.me/opennews/art.shtml?num=17521) годах, каждый раз значительно поднимая производительность Firefox.
Новый JIT-компилятор не станет исключением, в нем ожидается реализация передовых техник оптимизиации JavaScript, некоторые из которых уже представлены (http://www.opennet.me/opennews/art.shtml?num=28947) ...URL: http://www.infoq.com/news/2011/05/ionmonkey
Новость: http://www.opennet.me/opennews/art.shtml?num=30442
Хорошее начинание. Посмотрим во что выльется
надеюсь когда-нибуть компиляторы javascript станут настолько продвинутыми, что по скорости работы код на javascript не будет уступать коду на С...
_Никогда_ такого не будет с динамическим языком.
Существуют сотни случаев когда динамика в среднем случае на равне или даже быстрее С. Например в случае распределенных приложений - там затыки в других местах, а разработка и багоотлов в десятки раз дешевле С. С быстр в случае только очень небольших или специализированных проектов.
А говорят что фантазеры все перевелись))
Надеюсь, что когда-нибудь Javascript из веба выкинут и заменят на какой-нибудь другой, нормальный язык. Lua, например.
> нормальный язык. Lua, например.Что в lua есть такого, чего нет в js? А если вспомнить про убогую стандартную библиотеку lua, то вообще смешно становится.
Хотя слабая типизация в js раздражает, это да.
>Что в lua есть такого, чего нет в js?1.Абсолютно логичный и красивый синтаксис.
2.Если представить себе Lua как поле, где можно идти в любую сторону, куда хочешь, то JS - это лес с потайными тропами, хитро замаскированными граблями, а иногда еще из кустов совершенно неожиданно выходят волки.>А если вспомнить про убогую стандартную библиотеку lua, то вообще смешно становится.
Это же встраиваемый язык, как, собственно, и Javascript. Если бы были стандартизированные расширения для браузеров, это было бы не важно.
Потом, если взять только то, что входит в стандарт ECMAScript, разве будет намного больше функций, чем в Lua?
Добавьте еще, что у Lua есть готовый рантайм с очень эффективным JIT-компилятором (на average code оно от плюсов почти не отстаёт, если мне память не изменяет).
А скажите мне как так получилось, что в языке, который полностью построен вокруг таблиц, так хреново с ними работать?1) Нельзя сравнить
2) Нельзя скопировать
3) Нельзя привести к строкеЭлементарные, базовые операции и нельзя сделать. Приходиться городить свои велосипеды.
P.S. Если что, я пользователь awesome и luakit с *очень* кастомизированными конфигами, поэтому об деревянность луа шишек понабивал.
P.P.S. Кстати у схемы синтаксис еще логичнее и красивее, почему js не заменить на неё?
Ну, стандартная библиотека - дело решаемое, но в JS и правда много стоило бы поправить - благо косяки уже, считай, все найдены и что и как надо менять, в общем, понятно. Впрочем, писать на ActionScript 3(который, если кто не знает - реализация ECMAScript 4, со строгой типизацией и с "классической" объектной моделью) приятнее гораздо - масса ошибок ловится компилятором. Плюшки классического JS, кстати, там тоже никуда не делись - но как-то не используются особо за ненадобностью.Да, кстати, стандартная библиотека в JS - тоже мерзость редкая. Там же ничего нет, по большому счёту. Оно было приемлемо, когда не было приложений в браузере, но сейчас нужны как минимум эффективно реализованные (т.е. - внутри движка) коллекции и структуры данных и какая-то шина для взоимодействия скриптов, не ограниченного по доменам происхождения (и желательно - с возможностью обеспечить взаимодействие разных табов/окон).
А вообще говоря - NaCL был бы много более перспективен.
JS — отличный язык.
> JS — отличный язык."От других".
Не спорю, он неплох - но:
1) он динамический
2) он страдает от тянущихся ошибок дизайна ("+" и точки с запятой - самые известные).Как результат - проблемы с отладкой.
http://julien.danjou.info/blog/index.html#Why_not_Lua
>http://julien.danjou.info/blog/index.html#Why_not_LuaЗдесь вообще все проблемы связаны с интеграцией существующей библиотеки Lua в свое приложение. И все они решаемы, все они намного более простые, чем другие проблемы, с которыми сталкиваются разработчики современных браузеров. Тем более, что если бы Lua встраивали в браузеры, наверняка появились бы отдельные реализации, специально для этого заточенные.
Единственная проблема, касающаяся, собственно, синтаксиса Lua - "No paradigm makes you lose time". Вот только в этом аспекте Javascript вообще ничем не отличается.
На самом деле мой первый пост приводил Lua исключительно как пример. Я просто хотел сказать, что Javascript на сегодняшний день слишком запутан, чтобы быть "языком всея сети".
На самом деле отсутсвие парадагмы (если только язык позволяет её реализовать без помощи компиялтора) - это очень круто. Можноиспользовать то, что подходит лично вам. И никто не требует,чтобы поддержку ООП и пользовательский код писали одни и те же люди - это могут быть независимые проекты, при этом возможность выбрать подходящий вариант остаётся.Но, кстати, других кандидатов особо и не видно. Разные питоны как "язык всея сети" не лучше JS - не менее запутанны и существенно более ограниченны в плане возможностей программиста.
Я бы, правда, смотрел в сторону другого выхода - выдать доступ к DOM плагинам и реализовывать рантаймов языка в их рамках, чтобы вообще не навязывать "язык всея веба". Но там на тему эффективного протокола взаимоедйствия браузера и плагина думать и думать. А интересно было бы - вплотьдо нескольких различных JS-движков на разные случаи жизни :-)
>выдать доступ к DOM плагинам и реализовывать рантаймов языка в их рамках, чтобы вообще не навязывать "язык всея веба"Тут только одна проблема: мы получим в результате второй Adobe Flash.
И что?
Проблема Adobe Flash исключительно в криворукости и неповоротливости адоба и при этом проприетарности плагина.
При этом В нём масса хороших идей, до которых в HTML5 кое-как сейчас доползают - и отнюдь не до всех. ECMAScript 4, P2P, LocalConnection - то, чего в вебе без флеша нет и, похоже, не будет ещё долго. Сокеты - ну... websockets как-то развиваются, хотя не особо и быстро. Поддержка камеры/микрофона - вроде что-то планируется. Подписанные стандартные библиотеки, общие для всех сайтов - тут сам адоб не доделал, но в обычном вебе и такого нет, каждый сайт всё заново таскает...
Что-то их лихорадит. Если за три года они уже третий раз собираются переписывать такую важную часть системы, значит что-то в Датском королевстве явно не так.И кто-нибудь знает, что у них за маньячество по поводу обезьян? :)
http://en.wikipedia.org/wiki/Code_monkey ?!
скорости много не бывает.> что-то в Датском королевстве явно не так.
конкуренция не дает расслабится
> значит что-то в Датском королевстве явно не так.Всё у них так. Они перекраивают "важную часть системы" без вреда для остальных кусков, а этим могут похвастаться очень мало проектов.
Хвастаться надо не тем, что мы раз в год осознаем, что шли в неверном направлении :)
шли в верном направлении, а сейчас можем зайти еще дальше по соседней тропинке
> Хвастаться надо не тем, что мы раз в год осознаем, что шли
> в неверном направлении :)а, видимо, тем, что раз выбрали — и идём. а верное оно, неверное — who cares?
> Что-то их лихорадит. Если за три года они уже третий раз собираются
> переписывать такую важную часть системы, значит что-то в Датском королевстве явно
> не так.
> И кто-нибудь знает, что у них за маньячество по поводу обезьян? :)Это не их лихорадит, это скорость развития такая. Появилось много новых идей у них и у конкурентов - надо сделать систему, в которой эти идеи можно реализовать. В общем, рефакторинг как рефакторинг - ставили бы версии вместо новых названий - никто бы и не дёрнулся.
А насчёт обезьян - да, интересно. Возможно, это намёк на JS-кодеров ;-)
(кто не понял - это ШУТКА).
> (кто не понял - это ШУТКА).а иногда нажмёшь {CTRL}+{U} .. и понимаешь .. что как раз не шутка :-)
Да вот бывает... Часто и жать ничего не надо - глянешь на скорость работы и корректность реакции, скажем, на отпавшую сеть - и грустно как-то становится.
Они её не переписывают, а дополняют. Вы бы для начала почитали про tracemonkey и jagermonkey и чем они отличаются.
Уже 3D игры делают в браузере ... пока очередной Crysis в фоксе не будет выдавать хотя бы 40 FPS не успокоятся.