Comments 83
Костыли конечно знатные.
+90
Позиционируется:
«как писать на js чтобы было быстро и язык не менялся»
Является:
«как писать на очередном диалекте js, который мы теперь тоже поддерживаем»
«как писать на js чтобы было быстро и язык не менялся»
Является:
«как писать на очередном диалекте js, который мы теперь тоже поддерживаем»
-3
UFO just landed and posted this here
Я всегда полагал, что диалект это и есть подмножество/ответвление языка.
Предлагаю задуматься над тем, зачем вообще нужен asm.js. На мой взгляд чтобы javascript в браузере быстро работал. И именно javascript, так как у нас есть уже огромное количество кода на нем и нам нужно его оптимизировать. То есть что бы не думали авторы о предназначении asm.js, использоваться он будет именно теми, кто пишет на js, а не теми кому в шутку хочется что-то портировать на js.
Это нисколько не умаляет достоинств asm.js, равно как и не делает написание кода на C/C++ полезным, с учетом того что он будет портирован в js.
Предлагаю задуматься над тем, зачем вообще нужен asm.js. На мой взгляд чтобы javascript в браузере быстро работал. И именно javascript, так как у нас есть уже огромное количество кода на нем и нам нужно его оптимизировать. То есть что бы не думали авторы о предназначении asm.js, использоваться он будет именно теми, кто пишет на js, а не теми кому в шутку хочется что-то портировать на js.
Это нисколько не умаляет достоинств asm.js, равно как и не делает написание кода на C/C++ полезным, с учетом того что он будет портирован в js.
-5
Позиционирование более похоже на «как скомпилировать программу в JavaScript для достижения кросс-платформенного выполнения во браузере со скоростью не более чем в два раза меньшей по сравнению с родным кодом». Что по сути позволяет программисту гораздо меньше трахаться со сборкою (потому что достаточно собрать один раз), а также это открывает новую светлую страницу в книжке о кросс-компилировании в целом. (В настоящее-то время легко ли, сидя на Linux, собирать модули под Windows? А наоборот?)
Но это только первая ласточка.
По-настоящему шарахнет, когда движок V8 (известный в качестве довольно шустрого) применит аналогичную оптимизацию, то есть начнёт исполнять asm.js (или иной близко аналогичный диалект джаваскрипта) со страшной, непреоборимой скоростью. Потому что на V8 основандвижок Node.js — и тогда пред очами изумлённого мира ярко вспыхнет светоч очередного WORA-движка (от слов «Write once, run anywhere», изначально это был лозунг Sun про Java), но движок этот станет разительно отличаться от всех предыдущих, во-первых, по скорости (потому что V8 и asm.js), а во-вторых, по гибкости: не будет ни малейшей необходимости сочинять только на одном специальном языке — ни на Java (как это было в случае с Sun), ни на asm.js, ни даже только на JavaScript, потому что число языков, в JavaScript компилируемых, весьма значительно, и даже один только Emscripten (автор которого породил asm.js) позволил скомпилировать движки Python, Ruby, Lua, не говоря уж о том, что сам Emscripten является средством для преобразования в JavaScript итогов работы LLVM, а LLVM, в свою очередь, воспринимает ActionScript, Ada, D, Fortran, GLSL, Haskell, байткод Java, Objective-C, Python, Ruby, Rust, Scala и C#.
Будущее будет лучезарным.
Но это только первая ласточка.
По-настоящему шарахнет, когда движок V8 (известный в качестве довольно шустрого) применит аналогичную оптимизацию, то есть начнёт исполнять asm.js (или иной близко аналогичный диалект джаваскрипта) со страшной, непреоборимой скоростью. Потому что на V8 основан
Будущее будет лучезарным.
+27
Хех, будущее наступит скорее, если поставщики браузеров договорятся и предоставят единую виртуальную машину языка низкого уровня. И вот тогда да — пиши однажны, используй везде. А до этого момента пиши однажды, портируй всегда =)
+1
А зачем единая машина? Например, есть Node.js — и что же, разве там исполняется какой-то другой JavaScript, не такой, как во браузерах? Меж тем виртуальные машины в общем случае различны. (Например, в Файерфоксе — IonMonkey, а во Хроме и в Node.js — V8.)
У меня даже есть наглядный пример, близкий событиям вокруг Emscripten и поэтому asm.js. Как известно, одним из наиболее зрелищных примеров работы Emscripten является сборка SQLite. И что же? Во браузере она работает (в каждом из современных браузеров, хотя виртуальная машина в них далеко не единая). Но и в Node.js также работает! (Есть даже проект, основанный на этом модуле.) Работает, однако же, не без проблем, но это проблемы не SQLite, а атомарного доступа к файловой системе изнутри Node.
У меня даже есть наглядный пример, близкий событиям вокруг Emscripten и поэтому asm.js. Как известно, одним из наиболее зрелищных примеров работы Emscripten является сборка SQLite. И что же? Во браузере она работает (в каждом из современных браузеров, хотя виртуальная машина в них далеко не единая). Но и в Node.js также работает! (Есть даже проект, основанный на этом модуле.) Работает, однако же, не без проблем, но это проблемы не SQLite, а атомарного доступа к файловой системе изнутри Node.
+2
Ну как зачем? Чем ниже уровень инструкций, тем ближе результат к желаемому, независимо от языка.
Что же до «равного» исполнения js — во Файерфоксе, например, нет концепции скрытых классов, которая есть в V8. То есть язык один, код один, а исполняется по-разному (имеется ввиду скорость, не результат выполнения). И для оптимальной работы писать нужно тоже по-разному.
В то же время, если бы у нас была одна VM с одним набором инструкций — то автоматически важным становится только транслятор (с любого исходного языка на общепринятый конечный байт-код), а не браузер, исполняющий код.
Что же до «равного» исполнения js — во Файерфоксе, например, нет концепции скрытых классов, которая есть в V8. То есть язык один, код один, а исполняется по-разному (имеется ввиду скорость, не результат выполнения). И для оптимальной работы писать нужно тоже по-разному.
В то же время, если бы у нас была одна VM с одним набором инструкций — то автоматически важным становится только транслятор (с любого исходного языка на общепринятый конечный байт-код), а не браузер, исполняющий код.
+3
Согласен в целом. Но это уже слишком лучезарно, чтобы сбыться. А так если задуматься, то абсолютно логично писать клиентскую часть на том языке, каком ты считаешь нужным, стыковать клиентскую и серверную часть без лишних костылей, не ждать когда поставщики браузеров запилят более современный диалект javascript, а просто скачать свеженькую версию компилятора своего любимого языка в «межбраузерный байт-код» и наслаждаться жизнью.
+1
UFO just landed and posted this here
Вообще-то в вéбниках, но об этом — отдельная блогозапись.
0
Русский термин такой русский.
+1
Русскость повысилась за счёт перехода на русский способ словообразования («-ник» вместо «-er»), удобство употребления возросло за счёт краткости (всего два слога, тогда как в слове «браузер» их три, а в слове «обозреватель» — пять).
Не идеал ли достигнут? Можно ли улучшить этот результат?
Можно было бы дополнительно улучшить одно из этих двух качеств, но только за счёт ухудшения другого (и наоборот), а зачем это.
Не идеал ли достигнут? Можно ли улучшить этот результат?
Можно было бы дополнительно улучшить одно из этих двух качеств, но только за счёт ухудшения другого (и наоборот), а зачем это.
0
UFO just landed and posted this here
Когда я дал гиперссылку на ту блогозапись, в которой рассматривалось то моё предложение, то имел в виду и возможность нынешним читателям ознакомиться с тогдашними высказанными там комментариями. Вариант «сетевик» был рассмотрен вон в том комментарии 11 апреля 2012 года и аргументированно отвергнут мною.
-3
UFO just landed and posted this here
ПСДИ для русского уха несколько неблагозвучно.
Есть в этой аббревиатуре что-то от Патрульного Инспектора Дорожного Регулирования.
Есть в этой аббревиатуре что-то от Патрульного Инспектора Дорожного Регулирования.
+2
Вы нарочно доводите до абсурда, я за Вами это ещё в мае прошлого года заметил.
Пожалуйста, ПСДИте в другом месте.
Пожалуйста, ПСДИте в другом месте.
0
неее, сетевик — это нетник. Вебник — это паутинник.
+2
Кому удобство? Трафик экономить?
Слово — это не просто набор букв. Слово «браузер» имеет четкую семантику, от слова 'browse' — просматривать. Что означает «вебник»? Нечто, связанное с вебом? Это слово может означать что угодно, начиная от сетевой карты, кончая человеком, зависимым от интернета.
Может не надо устраивать фарс и предлагать какой-то суржик вместо устоявшегося термина?
Слово — это не просто набор букв. Слово «браузер» имеет четкую семантику, от слова 'browse' — просматривать. Что означает «вебник»? Нечто, связанное с вебом? Это слово может означать что угодно, начиная от сетевой карты, кончая человеком, зависимым от интернета.
Может не надо устраивать фарс и предлагать какой-то суржик вместо устоявшегося термина?
+7
Слово «рефрижератор» имеет чёткую семантику, от слова «refrigerate» — охлаждать, замораживать. Что означает «холодильник»? Нечто, связанное с холодом? Это слово может означать что угодно, начиная от змеевика с фреоном и кончая человеком, лопатою подкидывающим лёд. Может, не надо устраивать фарс?
+3
UFO just landed and posted this here
Слово «холодильник» в русском языке — сокращение от «холодильный шкаф».
0
Слово «будильник» в русском языке — сокращение от «будильный аппарат». (А слово «приёмник» — сокращение от «приёмный аппарат».)
Слово «паяльник» в русском языке — сокращение от «паяльный инструмент». (А слово«напильник» — сокращение от «напильный инструмент». А слово «пробойник» — сокращение от «пробойный инструмент».)
Слово «матюгальник» в русском языке — сокращение от «матюгальный мегафон».
Слово «светильник» в русском языке — сокращение от «осветительный прибор».
Слово «учебник» в русском языке — сокращение от «учебный материал». (А слово «задачник» — сокращение от «задачный материал».)
Слово «треугольник» в русском языке — сокращение от «треугольная фигура».
Слово «курятник» в русском языке — сокращение от «курятный сарай».
Слово «внедорожник» в русском языке — сокращение от «внедорожный автомобиль».
Слово «запальник» в русском языке — сокращение от «запальный механизм».
Слово «подрамник» в русском языке — сокращение от «подрамный держатель».
Слово «обменник» в русском языке — сокращение от «обменный пункт». (А слово «файлообменник» — сокращение от «файлообменный сайт».)
Слово «чайник» в русском языке — сокращение от «чайная утварь».
Слово «пододеяльник» в русском языке — сокращение от «пододеяльный утеплитель».
Если нравится Вам эта стройная теория о том, что все слова,суффиксом «-ник» образуемые, являются на самом деле сокращениями — ради Бога; но тогда думайте, что слово «вебник» является сокращением от «вебный облазыватель», и тем невозбранно уложите его в ту же теорию.
Слово «паяльник» в русском языке — сокращение от «паяльный инструмент». (А слово
Слово «матюгальник» в русском языке — сокращение от «матюгальный мегафон».
Слово «светильник» в русском языке — сокращение от «осветительный прибор».
Слово «учебник» в русском языке — сокращение от «учебный материал». (А слово «задачник» — сокращение от «задачный материал».)
Слово «треугольник» в русском языке — сокращение от «треугольная фигура».
Слово «курятник» в русском языке — сокращение от «курятный сарай».
Слово «внедорожник» в русском языке — сокращение от «внедорожный автомобиль».
Слово «запальник» в русском языке — сокращение от «запальный механизм».
Слово «подрамник» в русском языке — сокращение от «подрамный держатель».
Слово «обменник» в русском языке — сокращение от «обменный пункт». (А слово «файлообменник» — сокращение от «файлообменный сайт».)
Слово «чайник» в русском языке — сокращение от «чайная утварь».
Слово «пододеяльник» в русском языке — сокращение от «пододеяльный утеплитель».
Если нравится Вам эта стройная теория о том, что все слова,
+1
В ответ уместно процитировать ваш-же коммент чуть выше:
>Вы нарочно доводите до абсурда, я за Вами это ещё в мае прошлого года заметил.
>
>Пожалуйста, ПСДИте в другом месте.
Как можно заметить, сами вы доводить до абсурда не гнушаетесь.
Как бы вам ни хотелось, новые слова так не вводятся. Не нужно никому такое слово. А тем более, если это замена текущего технического термина. Технические термины должны быть понятны *всем*, чтобы более эффективно обмениваться знаниями. Хотите развивать язык — пишите художественные книги, а не повышайте «русскость» в комментах.
>Вы нарочно доводите до абсурда, я за Вами это ещё в мае прошлого года заметил.
>
>Пожалуйста, ПСДИте в другом месте.
Как можно заметить, сами вы доводить до абсурда не гнушаетесь.
Как бы вам ни хотелось, новые слова так не вводятся. Не нужно никому такое слово. А тем более, если это замена текущего технического термина. Технические термины должны быть понятны *всем*, чтобы более эффективно обмениваться знаниями. Хотите развивать язык — пишите художественные книги, а не повышайте «русскость» в комментах.
0
Большая часть слов из вашего списка никогда не употреблялась в разговорной речи в полном варианте.
А «холодильный шкаф» — употреблялся.
А «холодильный шкаф» — употреблялся.
Примеры
Книг там было много, но зато стоял и
большой холодильный шкаф. Из этого шкафа издатель вытаскивал различные
бутылки и кубики льда, потом спрашивал, какой коктейль мы предпочитаем — «Манхэттен», «Баккарди», «Мартини»? — и сейчас же принимался его сбивать с
такой сноровкой, словно никогда в жизни не издавал книг, не писал стихов, а
всегда работал барменом. Американцы любят сбивать коктейли.
***
Зато во всех этих городах можно купить автомобиль последней модели,
электрический холодильный шкаф (мечта молодоженов), в домах течет из кранов
холодная и горячая вода, а если городок получше и в нем есть приличный
отель, то в номере у вас будут три воды — горячая, холодная и ледяная.
***
Большинство таких девушек живет у родителей, заработок их идет на то,
чтобы помочь родителям уплатить за домик, купленный в рассрочку, или за
холодильный шкаф, тоже купленный в рассрочку.
Илья Ильф, Евгений Петров. Одноэтажная Америка
большой холодильный шкаф. Из этого шкафа издатель вытаскивал различные
бутылки и кубики льда, потом спрашивал, какой коктейль мы предпочитаем — «Манхэттен», «Баккарди», «Мартини»? — и сейчас же принимался его сбивать с
такой сноровкой, словно никогда в жизни не издавал книг, не писал стихов, а
всегда работал барменом. Американцы любят сбивать коктейли.
***
Зато во всех этих городах можно купить автомобиль последней модели,
электрический холодильный шкаф (мечта молодоженов), в домах течет из кранов
холодная и горячая вода, а если городок получше и в нем есть приличный
отель, то в номере у вас будут три воды — горячая, холодная и ледяная.
***
Большинство таких девушек живет у родителей, заработок их идет на то,
чтобы помочь родителям уплатить за домик, купленный в рассрочку, или за
холодильный шкаф, тоже купленный в рассрочку.
Илья Ильф, Евгений Петров. Одноэтажная Америка
0
Холодильник холодит, охлаждает (продукты). А вебник вебает?
0
Моя незабвенная преподавательница по ОССО однажды сказала:
— «Фаерволл»? Зачем использовать англицизмы? Есть же прекрасное русское слово: «брандмауэр».
— «Фаерволл»? Зачем использовать англицизмы? Есть же прекрасное русское слово: «брандмауэр».
+8
Оно, конечно, тоже заимствованное, но всё-таки ещё с XIX века, и уже успело прижиться.
+2
С одной стороны, успело.
С другой стороны, оно создает разночтения в русской и английской терминологии, все еще являясь иностранным заимствованием, и к тому же менее благозвучным, чем «фаерволл».
Вдобавок, спросите любого человека с улицы: что такое брандмауэр (пожарный) и для чего он нужен?
Далеко не факт, что большая часть ответит правильно.
С другой стороны, оно создает разночтения в русской и английской терминологии, все еще являясь иностранным заимствованием, и к тому же менее благозвучным, чем «фаерволл».
Вдобавок, спросите любого человека с улицы: что такое брандмауэр (пожарный) и для чего он нужен?
Далеко не факт, что большая часть ответит правильно.
0
Хочу убежать подальше из этого лучезарного будущего. Почему не сделать нормальную виртуальную машину, а не эти костыли?
+3
1. Обратная совместимость со старыми браузерами.
2. Очевидно, что производители браузеров не смогут договориться о единой виртуальной машине. Посмотрите на ситуацию с поддержкой аудио-видео кодеков в браузерах.
3. Google делает Native Client, но кроме Google Chrome его никто не поддерживает — он не используется повсеместно, поэтому производители других браузеров просто игнорируют его существование. asm.js можно будет использовать уже сегодня, и это будет работать во всех браузерах. Разница будет только в производительности. Если использование asm.js станет популярным, производители браузеров будут вынуждены добавить его поддержку для повышения производительности такого кода.
2. Очевидно, что производители браузеров не смогут договориться о единой виртуальной машине. Посмотрите на ситуацию с поддержкой аудио-видео кодеков в браузерах.
3. Google делает Native Client, но кроме Google Chrome его никто не поддерживает — он не используется повсеместно, поэтому производители других браузеров просто игнорируют его существование. asm.js можно будет использовать уже сегодня, и это будет работать во всех браузерах. Разница будет только в производительности. Если использование asm.js станет популярным, производители браузеров будут вынуждены добавить его поддержку для повышения производительности такого кода.
+4
Рассказываю: если сделать нормальную виртуальную машину, то всё работать будет только в альтернативном лучезарном будущем и только у тех, у кого эта машина установлена.
А так будет работать у всех и будет работать прямо сейчас. Только медленнее. (Причём на уровне «немножко медленнее», а не на уровне «убейте меня, зачем мучаете?». Разница менее чем на порядок.)
И так как состояние «виртуальная машина работает» куда привлекательнее состояния «виртуальная машина нормальная, но заработает только через несколько лет», то имеем то, что имеем.
А так будет работать у всех и будет работать прямо сейчас. Только медленнее. (Причём на уровне «немножко медленнее», а не на уровне «убейте меня, зачем мучаете?». Разница менее чем на порядок.)
И так как состояние «виртуальная машина работает» куда привлекательнее состояния «виртуальная машина нормальная, но заработает только через несколько лет», то имеем то, что имеем.
+7
Можно подумать, поддержка asm.js ускорит V8 в той же мере, что и *Monkey. Эдак мы и обычный ASM (который без js) перегоним? А количество языков… Как ни крути, но скорость порта Java -> LLVM -> asm.js будет куда ниже, чем просто Java. С другими языками аналогично.
-1
не будет ни малейшей необходимости сочинять только на одном специальном языке — ни на Java (как это было в случае с Sun)А кто вам сказал, что виртуальные машины Java исполняют только код, написаный на Java?
+2
Я правильно понимаю, что для подобного ускорения нужно будет все свои скрипты переписывать вручную под asm.js?
0
UFO just landed and posted this here
Как я понял из презентации, суть скорее не в том, чтобы писать прямо на asm.js, а писать на статитически типизированных языках и транслировать на него, сейчас основные успехи с С/C++.
Statically-typed languages and especially C/C++ can be compiled effectively to JavaScript
+2
Хм. То бишь взять тот же zlib и легко и просто его перенести на яваскрипт?
0
Отлично, значит с C# тоже можно будет.
0
наверное TypedScript можно будет скрестить с asm.js
+2
Эмс, это что предлагаю писать js на С, компилить через asm.js что бы код быстрее работал аж в Firefox Nightly и то, если отдельно включить там OdinMonkey?
Просветите в чем смылс?
Для избранных которые будут ставить Firefox Nightly+OdinMonkey можно на С прогу написать, а все остальные разницы не заметят.
Да и код такой поддерживать и дебажить явно сложнее обычно JS.
Или я что-то не так понял?
Просветите в чем смылс?
Для избранных которые будут ставить Firefox Nightly+OdinMonkey можно на С прогу написать, а все остальные разницы не заметят.
Да и код такой поддерживать и дебажить явно сложнее обычно JS.
Или я что-то не так понял?
+1
Как я только что (одновременно с Вами) огласил чуть выше, перед нами первая ласточка.
Во-первых, Firefox Nightly является отправною точкою шестинедельного цикла разработки: через шесть недель он превратится в Firefox Aurora, ещё через шесть — в Firefox Beta, а ещё через шесть — в реальный Mozilla Firefox, один из наиболее популярных браузеров Интернета.Поддержка asm.js будет доставлена многим миллионам реальных людей по всему миру, а не только горстке энтузиастов, употребляющих еженощные сборки.
Во-вторых, есть надежда на то, что остальные браузеропроизводители подхватят эту движуху, и тогда величина аудитории asm.js превзойдёт всякое воображение.
Во-первых, Firefox Nightly является отправною точкою шестинедельного цикла разработки: через шесть недель он превратится в Firefox Aurora, ещё через шесть — в Firefox Beta, а ещё через шесть — в реальный Mozilla Firefox, один из наиболее популярных браузеров Интернета.
Во-вторых, есть надежда на то, что остальные браузеропроизводители подхватят эту движуху, и тогда величина аудитории asm.js превзойдёт всякое воображение.
+6
Ну вот захотите вы написать онлайн-оптимизатор изображений. Но при этом вы хотите делать все вычисления на клиенте, чтобы не загружать сервер. Берём исходники pngquant, компилируем в js — и все дела. Со временем asm.js будет поддерживаться в Firefox по умолчанию. А если фишкой будут пользоваться, и Firefox будет уделывать в таких скриптах другие браузера, думаю и остальные начнут поддерживать asm.js со временем. В результате — у пользователей изображения на вашей страничке будут оптимизироваться достаточно быстро, при этом сервер не будет нагружен этими вычислениями.
+3
UFO just landed and posted this here
Так это и сейчас можно, только медленно :)
+2
UFO just landed and posted this here
UFO just landed and posted this here
Да уже года 2 как сделали. Реализации на java есть, и даже где то я сайт видел подобный.
Были попытки на javascript написанные, и они некоторое время работали.
В принципе ничего сложного там нет, исходники биткоин клиента доступны — портировать не проблема.
Мозги разминал, писал, знаю :)
Были попытки на javascript написанные, и они некоторое время работали.
В принципе ничего сложного там нет, исходники биткоин клиента доступны — портировать не проблема.
Мозги разминал, писал, знаю :)
0
Эффективнее это будет сделать на RiverTrail aka Parallel.js (вычисления на GPU) который, кстати, уже включен в FF Nighty. И, как ни странно, имеет обратную совместимость c однопоточным и процессорным JavaScript.
+1
Ого, и это всего Один Манки! А если два?
+5
редко используемые конструкции языка, наподобие "|0"
Используется как integer cast в каждом втором скрипте, чего она редкая-то.
+1
На позапрошлой неделе рассказ о ней получил трёхзначный рейтинг на Хабрахабре — так что, наверное, всё же не общеизвестною была конструкция эта.
0
OdinMonkey в поле воин
+2
Даешь программирование в машинных кодах для браузера! Это же сколько возможностей откроется.
+2
Софтварный рендеринг в «2d» контексте будет гораздо быстрее :)
0
asm.js имеет очень ограниченный user-case и хорош только для написания молотилок цифр. Для многих их нас от него не будет ни горячо ни холодно. Однако же используя AOT компиляцию это даст существенный прирост в скорости рассчета физики в играх, адовы алгоритмы вроде Дугласа-Пекера и вычисление любого хэша. Притом, что функция, написанная, с asm.js будет работать быстрее из-за строгой типизации на бинарном уровне в любом браузере. В итоге выигрывают все!
+12
А я всегда так кодил на javascript — как на ассемблере!
0
Интересно быол бы посмотреть на онлайн-стрелялку на asm.js
0
Sign up to leave a comment.
Новый этап в гонке скоростей JavaScript. Модуль OdinMonkey ускоряет низкоуровневый код в 10 раз