.
Вид для печати
.
Крутой язык программирования Java Script! Имея многоядерный 64-битный процессор частотой 3 ГГц, гигабайты ОЗУ, а еще видеоплату, которая может быть мощнее всего компьютера. :) Мы кое как смогли эмулировать ZX Spectrum.
Браво разработчикам JS ! Гениальное творение :)
Печально, когда Oracle купила Java и наехала на пользователей, то все разработчики решили забить на интеграцию. А так все хорошо начиналось.
Есть еще Flash. Он то же побыстрее будет. Но он так же не всеми поддерживается.
Пусть у JS нет сейчас альтернативы, но это не прощает его производительности. Пора бы уже Гуглу прикрутить какую нибудь производительную виртуальную машину к своему браузеру, а остальные подтянутся. Гуглу это было бы выгодно, он смог бы реализовать полноценный Веб Офис...
Не выйдет, это скриптовый язык со всеми плюшками вроде динамической типизации, да еще и с совершенно безумной моделью наследования.
Если на джаве писать в том же стиле, как пишут на JS - а это возможно (где вообще возможно) только с постоянным использованием рефлексии - то скорость будет ничуть не выше, чем у JS.
Но разработчики браузеров и так стараются, как могут. Практически каждый релиз хрома/файрфокса декларирует увеличение скорости интерпретации JS на несколько процентов.
PS а, виртуальную машину не для JS, а как отдельную новую фичу? Ну, flash и silverlight - это вполне оно. Правда, HTML5 и CSS3 именно для их убийства и созданы :)
В фаерфоксе слышу звук, других браузеров не держим. Правда, если бипать в бейсике, то тормозит.
breeze, Win7, FF 12.0
Дык в хроме давно уже JIT (см. http://code.google.com/p/v8/ ) и в файрфоксе тоже. (https://wiki.mozilla.org/JavaScript:TraceMonkey )
---------- Post added at 00:32 ---------- Previous post was at 00:29 ----------
Ну по крайней мере типизированные массивы сделали уже довольно давно http://hacks.mozilla.org/2011/12/fas...-typed-arrays/
Есть даже C/C++ компилятор в JS: https://github.com/kripken/emscripten/wiki
В современных браузерах (и на современном железе) код получаемый в результате работает довольно шустро. (см. демки по ссылке выше + вот еще Doom: http://www.youtube.com/watch?v=WDUPZRQf7oc )
Вот тут есть кое какие тесты: http://blog.j15r.com/2011/12/for-tho...-box2d-is.html
Судя по первой картинке код скомпиленный emscripten работает в chrome всего раз в 20 медленнее нативного (C).
Недавно народ пытался переписать Doom на Java Script. Что бы игра не сильно тормозила в 320x200, они урезали движок так, что перс временами проваливался и стрелял сквозь стены, а картинка глючила.
Через пару недель они убрали игруху из интернета.
На хабре новость про Doom была.
---------- Post added at 01:00 ---------- Previous post was at 00:57 ----------
Doom - это 1993 год. На 20 лет отстают от прогресса.
Ну не то чтобы портировали особо, скомпилировали как раз упомянутым enscripten (где на хабре про тормоза, обрезание фич и т.п.-то? http://habrahabr.ru/links/120356/ ), ссылку на youtube я выше давал.
Убрали потому что правообладатели наехали.
Портированный в JS есть Quake 2, кстати: http://code.google.com/p/quake2-gwt-port/, видео: http://www.youtube.com/watch?v=fyfu4OwjUEI
---------- Post added at 01:09 ---------- Previous post was at 01:04 ----------
20 лет назад тоже можно было скомпилировать сишный код Дума в JS и запустить в браузере? (в виртуальной машине JS)
Дак я Doom у упомянул, как пример работы enscripten.
А это то что я видел и мои друзья, которым я ссылку разослал. Я же первый побежал играть в свою любимую игруху.
Ну да, наивно так думать. Если они запретили WAD, то в сети лежит куча бесплатных WAD-ов. Этот DOOM это демонстрация возможностей enscripten, а не возможность поиграть в оригинальный DOOM.
И вообще, правообладатели даже исходники опубликовали и не трогают десятки современных клонов.
---------- Post added at 01:20 ---------- Previous post was at 01:13 ----------
Сейчас сишный код транслируют в JS, а JS компилируется в нативный код. А 20 лет назад люди компилировали сишный код прямо в нативный. И программа получалась в >1000 раз производительнее.
Грубо, максимум:
4 ядра по 2 команды за такт по 3 ГГц = 4*2*3000 = 24000 миллиона операций. Может обработать 128 бит за такт.
1 ядро 4 такта на команду 33 Мгц = 33/4 = 8 миллионов операций. Может обработать 32 бита за 4 такта.
Угу, и письмо от юристов id software мозиловцы никак сами сочинили: https://wiki.mozilla.org/Legal/Infri...es/3_June_2011
х.з. Почему же ZDoom, GZDoom, jDoom, WinDoom.. не закрыли?
Да и сейчас никто не запрещает компилировать прямо в нативный. Но и компиляция в JS имеет свое применение. 20 лет назат такого выбора не было.
Результаты тестов что я приводил выше говорят что эта цифра мягко говоря завышена (реально порядка 20 раз разница), да и если б действительно в 1000 раз была разница, ни о каких Думах и т.п. не могло бы быть и речи совсем.Цитата:
И программа получалась в >1000 раз производительнее.
---------- Post added at 01:29 ---------- Previous post was at 01:28 ----------
Х.з., правообладатель вправе решать что запрещать что разрешать делать со своей собственностью.
Дак дум работает с теми же FPS на 386DX 40 Мгц. Этот процессор явно не в 20 раз медленнее современного. А значительно медленнее.
P.S. Это я еще не вспоминаю о современных видеоплатах, в которых 3000 ядерные процессоры. 3072 ядра * 917000000 Гц = 2 817 024 000 000 операций в секунду.
Какая фиг разница. Нативный код в браузере, тоже тормоз ещё какой. Ради прикола, поставте игрушку мини ниндзи в версии репак-торрент едишон, а потом запустите в хроме её нативный порт. Почувствуй , как говорится разницу. Я не понимаю, зачем всё это сделано. Кому то ресурсов современного компа слишком много, или предполагалось кухарок основам программирования обучать?
А есть разница? Есть много процов. Более того, открою тебе страшнейшую тайну: Есть процы с разным порядком следования байт в памяти и разными принципами построения слов инструкций ЦП. А самое прикольное в том, что большинство горе-прогламеров понятия об этом не имеет и пишет то, что якобы кросс-платформенно, а в результате работает только на очень определенном наборе цп. В таких случаях интерпретаторы таки спасают. Ну или ллвм.