LINUX.ORG.RU

Компилируемый язык вместо javascript

 , ,


0

2

Помнится несколько раз читал о прожектах использования какого-нибудь компилируемого языка в качестве основы web приложений. Т.е. вырисовывается такая цепочка:

  • Пользователь зашел на какой-нить gmail;
  • Браузер качает код написаный на быстром в компиляции языке (например что-нибудь паскалеподобное).
  • Код компилируется и запускается в песочнице и собственно делает все тоже самое, что js, но быстрее и без жора памяти на каждый чих.

Подводных камней тут конечно не мало, но профиты очевидны. Существует ли в природе работоспособная модель? Я бы помацал для одной задачки.

★★★★

Последнее исправление: zloelamo (всего исправлений: 1)

Javascript тоже JIT-компилируется, только с учетом его синтаксиса, делается это трудно и хреново.

Насчет моделей: посмотри на Google Dart, Google Native Client. Да, собственно, Java или Flash.

proud_anon ★★★★★
()

И тырнеты станут не кроссплатформерны...

mopsene ★★★
()
Ответ на: комментарий от proud_anon

Ну с Java сервлетами то все понятно, но разве можно обратится к DOM дереву из сервлета? Я всегда думал, что с Java браузер работает на уровне: «вот тебе фрейм, там и играйся».

zloelamo ★★★★
() автор топика

NaCl есть, работает, развивается. Но только под хром.

А js сейчас очень быстрый.

note173 ★★★★★
()
Ответ на: комментарий от proud_anon

Google Native Client

Во! А то я забыл как это называлось.

zloelamo ★★★★
() автор топика
Ответ на: комментарий от debianist

Компилируется на клиенте.

Наконец-то найдется применение для четырех ядер в смартфонах!

JS _уже_ компилируется на клиенте.

tailgunner ★★★★★
()
Ответ на: комментарий от mopsene

Лолшто? Ты с джава-апплетами не путаешь?

Очень может быть.

zloelamo ★★★★
() автор топика
Ответ на: комментарий от resurtm

А хотя нет, ТС-то указал, что он JS-фобией страдает.

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

zloelamo ★★★★
() автор топика
Ответ на: комментарий от zloelamo

результат работы js виден невооруженным глазом: все возрастающий расход памяти и тормоза

Где? Пруфы в студию.

mopsene ★★★
()

Да, такое уже было, Active X называется.

PolarFox ★★★★★
()

А, не, Active X уже откомпилированный код давал.

JS уже удовлетворяет написанным тобой требованиям. JIT сейчас есть в хроме и скоро будет в файрфоксе.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Active X уже откомпилированный код давал

Да и именно поэтому ни у кого не работал.

mopsene ★★★
()
Ответ на: комментарий от tailgunner

что-нибудь паскалеподобное

Нет пути.

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

zloelamo ★★★★
() автор топика
Ответ на: комментарий от zloelamo

Я его привел потому, что он быстро компилируется

тогда уж лучше Go

wota ★★
()
Ответ на: комментарий от zloelamo

Я что-то не заметил, что js стал жрать больше, в процентном соотношении, разумеется. А вообще js есть за что ругать, но тут ты не прав.

mopsene ★★★
()

делает все тоже самое, что js, но быстрее

Java, Flash

без жора памяти на каждый чих

не сработало

vertexua ★★★★★
()
Ответ на: комментарий от PolarFox

Можно подумать, что гмыло на си будет жрать меньше памяти.

Почем дожно быть по другому? Си или тотже паскаль ближе к железу, меньше абстрагированы, соответсвенно на одну и туже операцию будут тратить меньше.

zloelamo ★★★★
() автор топика
Ответ на: комментарий от mopsene

Я что-то не заметил, что js стал жрать больше, в процентном соотношении, разумеется. А вообще js есть за что ругать, но тут ты не прав.

Хорошо, допустим. Но где здесь беда технологии html+JS? Почему браузеры жрут как не в себя ресурсы. Дело в DOM дереве и его обработке или в самой природе JS?

Предположим я зашел на gmail. Вся страничка (в смысле контент) там весит дай бог 2M. Да что там, вся моя почта, с g+ и документами весит 10M. Но как только я начинаю что-то там делать расход памяти неуклонно растет.

zloelamo ★★★★
() автор топика
Ответ на: комментарий от zloelamo

на одну и туже операцию будут тратить меньше

Каким образом одна и та же операция будет быстрее в си или паскале, чем в js?

PolarFox ★★★★★
()
Ответ на: комментарий от zloelamo

Вся страничка (в смысле контент) там весит дай бог 2M.

143 кб.

Но как только я начинаю что-то там делать расход памяти неуклонно растет.

Пардон, а каким отладчиком js ты узнал, что это выжирает именно он, а не браузер?

mopsene ★★★
()

два флэша этому господину.(если я правильно понял суть вопроса)

blan4
()
Ответ на: комментарий от mopsene

Пардон, а каким отладчиком js ты узнал, что это выжирает именно он, а не браузер?

Хе-хе. Ню-ню, это как говорить о новом плеере на питоне: «кто тебе сказал, что жрет мой плеер, это интерпретатор жрет».

Как достоверно отделишь ресурсы выполняющегося когда от ресурсов с которыми он взаимодействует внутри браузера?

zloelamo ★★★★
() автор топика
Ответ на: комментарий от mopsene

143 кб.

Ну это я на всякий случай приплюсовал мою неархивированную почту. Черт его знает чего он там кеширует.

zloelamo ★★★★
() автор топика
Ответ на: комментарий от PolarFox

Каким образом одна и та же операция будет быстрее в си или паскале, чем в js?

Речь не идет о 2+2 - думаю будет одинаково. А вот в случае более тяжелых опрации накладные расходы например на преобразование строк и других безразмерных (в JS) перемменных будут больше.

zloelamo ★★★★
() автор топика

Я вот тут недавно заметил, что код на процессинге, собранный под JS работает немного быстрее, чем он же, собранный под Java. Нужно ли оно тебе? Современные интерпретаторы JS уже давно не интерпретаторы и работают шустро

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от zloelamo

Вот чем у нас в основном занимаются скрипты гмыла? Модифицируют DOM-дерево и общаются с серверами гугла. Если это кушает много ресурсов, то вряд ли виноват js, поскольку всё это сводится к вызову конкретных функций, которые написаны уже на языке, на котором написан браузер.

А вот в случае более тяжелых опрации накладные расходы например на преобразование строк и других безразмерных (в JS) перемменных будут больше.

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

PolarFox ★★★★★
()

запускается в песочнице
и без жора памяти на

Не вижу связи

Tark ★★
()
Ответ на: комментарий от derlafff

Современные интерпретаторы JS уже давно не интерпретаторы и работают шустро

Где на них посмотреть. Единственные интерпретаторы с которыми я сталкиваюсь в реальной жизни это браузеры и там чем дальше тем хуже. Расход в 1G уже всем видится нормальной ситуацией.

zloelamo ★★★★
() автор топика
Ответ на: комментарий от derlafff

Я вот тут недавно заметил, что код на процессинге, собранный под JS работает немного быстрее, чем он же, собранный под Java. Нужно ли оно тебе?

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

PolarFox ★★★★★
()
Ответ на: комментарий от zloelamo

Предположим я зашел на gmail. Вся страничка (в смысле контент) там весит дай бог 2M.

Есть программа на С++, например для просмотра картинок. Я ей открываю jpeg в 100 килобайт. А теперь, уважаемые знатоки, вопрос: Почему картинка в памяти занимает мегабайт?

Tark ★★
()
Ответ на: комментарий от PolarFox

В си подобные вещи приходится делать явно, поэтому программист естественно будет избегать алгоритмов.

Вот и я об этом. Неявный расход в JS выше чем в Си, а у того, естественно выше чем у ассемблера (привет, кэп).

Если это кушает много ресурсов, то вряд ли виноват js, поскольку всё это сводится к вызову конкретных функций, которые написаны уже на языке, на котором написан браузер.

Ну не баше же там функции работы с DOM написаны (хотя firefox с тем же XUL'ом...)? Скорее всего на том же C. Во всяком случае это глупо неоптимизировать эти функции.

zloelamo ★★★★
() автор топика
Ответ на: комментарий от PolarFox

У меня разница не настолько разительна, всего на 5-6fps. Причем и рисования, и математики было совсем ничего.

А за статью спасибо, да

derlafff ★★★★★
()
Ответ на: комментарий от zloelamo

Как достоверно отделишь ресурсы выполняющегося когда от ресурсов с которыми он взаимодействует внутри браузера?

Есть у меня файл размером 3 кб, текстовый редактор, написанный на С++ занимает в памяти 200 метров. С++ тормознутый язык, давайте его заменим на js.

mopsene ★★★
()
Ответ на: комментарий от zloelamo

И не только к этому. Еще к тому как представлен в памяти DOM после парсинга html + css, не будет же оно при каждом движении скролла парсить его заново, и это не говоря о всяких фичах типа предзагрузки картинок и страниц по ссылкам.

Tark ★★
()
Ответ на: комментарий от zloelamo

Вот и я об этом. Неявный расход в JS выше чем в Си, а у того, естественно выше чем у ассемблера (привет, кэп).

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

Tark ★★
()
Ответ на: комментарий от PolarFox

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

Там математика. Я думаю, что математика везде близка, т.к. легко и непренужденно переводится в маш. код. Зло начинается вокруг больших строк, структур, сильновложенных вызовах функции и подобной возни, где высокоуровневая система начинает сливать.

Согласен, что теоретически, должна сливать в разумных приделах. Но где на практике браузеры жрущие меньше 100М?

zloelamo ★★★★
() автор топика
Ответ на: комментарий от zloelamo

Но где на практике браузеры жрущие меньше 100М?

Такие браузеры уже были, лет 10 назад. Но и интернет тоже изменился.

PolarFox ★★★★★
()
Ответ на: комментарий от zloelamo

Но где на практике браузеры жрущие меньше 100М?

Судя по статистике, обычно такие браузеры находятся в сегфолте.

Tark ★★
()
Ответ на: комментарий от mopsene

Есть у меня файл размером 3 кб, текстовый редактор, написанный на С++ занимает в памяти 200 метров. С++ тормознутый язык, давайте его заменим на js.

Некорректное сравнение, поскольку вы всегда можете открыть фалик размером 1К и убедится, что дело не в редакторе. В случае JS + браузер или плеер + python отделить одно от другого невозможно. Какой-нить профайлер запущеный в firefox покажет погоду на марсе.

Но я понял твою мысль: дело не в JS, а в браузере.

zloelamo ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.