LINUX.ORG.RU

javascript захватит мир

 , , ,


0

1

https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript

Ъ: если перевести ядро и весь софт на js, то помимо очевидных преимуществ (таких как апсолютная портабельность) будет получен итоговый прирост в производительности 4% за счет отказа от аппаратного контроля на уровне CPU

WTF?

★★★★★

Ответ на: комментарий от qulinxao

Ты слишком узко понимаешь перформанс.

Во-первых, динамический язык может в рантайме оптимизировать сам свой код.

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

В третьих, если язык медленный в целом, это не значит, что все его конструкции медленны. Например, один из самых медленных ЯП - Io

http://iolanguage.org/scm/io/docs/IoGuide.html#Primitives-Vector

for this example, Io is about three times faster than plain C.

Это при том, что он сам написан на си.

newjsser
()

А для перевода ядра на жс тоже надо будет тянуть рантайм хрома?

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

Во-первых, динамический язык может в рантайме оптимизировать сам свой код.

Зачем его оптимизировать в рантайме, если это можно сделать в компилтайме?

Что мне мешает в рантайме заюзать gcc-jit? Либо просто руками написать код и джампнуть?

Ни одного документального свидетельства такой «оптимизации» в природе пока что не зафиксировано, но да - по словам балабола с лора - так оно и есть.

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

Именно по это причине наверное на жабаскрипте нет ни одной сложной архитектуры, собственно как и на иных недоязычках.

Сишка-кресты во все поля.

В третьих, если язык медленный в целом, это не значит, что все его конструкции медленны.

Правильно - ведь эти конструкции написаны на сишке, и связаны с недоязычком биндингом.

И то они медленнее сишных, ибо адские оверхеды на касты. Ведь 99% бенчмарков недоязычков - это хитро подобранная синтика от людей понимающих, либо чистая профанация от таких балаболов как ты, которая именно что и бенчит - эти самый конструкции, всячески обходя работу с памятью и сам код и не юзая ни динамичности, либо специально подбирая примитивные юзкейсы, в которые может в8, либо иное двигло.

Это старо как мир.

Только вот на реальном коде производительность просядает ещё в большее говно, с говна до говна говна.

for this example, Io is about three times faster than plain C.

И конечно же, как всегда, в подобных заявлениях - кода на си нет.

Это при том, что он сам написан на си.

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

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

если это можно сделать в компилтайме?

в компилтайме возможности ограничены, так как нет входных данных. Если нужна оптимизация с их учетом, компилтайм тут бессилен. Да и вообще, роптимизация в компилтайме — это гадание на кофейной гуще. Невозможно знать особенности реализации всех компиляторов. Это просто зубрежка идиом. А если в ЯП есть рефлексия, ты можешь сразу в начале рантайма перезаписать весь код, а уже затем его выполнить. Это будет эквивалентно оптимизации в компилтайме. Но тебе это говорить бесполезно, один х ничо не поймешь, у тебя представления об этом смутные. У тебя asm.js транслируется из сишки, вонана как.

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

Меня не интересует сравнения из мира говн, где один кастыль уберает оверхед с другого кастыля.

Ты мне реальное свидетельство покажи, с имплементацией для нормального языка, с повторяемыми и проверяемыми результатами.

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

это очевидно, особенно на фоне соседних видео

но я не могу понять, в какой конкретно момент происходит найоп

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

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

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

Судя по тому, что ты мне отвечаешь - на все предыдущие темы ты обосрался? Хорошо.

в компилтайме возможности ограничены

Пример юзкейсов, в которых возможности ограничены.

Если нужна оптимизация с их учетом, компилтайм тут бессилен.

Учётом чего?

Невозможно знать особенности реализации всех компиляторов.

Зачем мне знать всех, если в мире один конпелятор и ещё один вроде как есть, который полностью мимикрирует под первый.

то просто зубрежка идиом.

Ты мне кокнретные примеры приводи, а не повторяй мантры.

А если в ЯП есть рефлексия, ты можешь сразу в начале рантайма перезаписать весь код, а уже затем его выполнить.

Я могу руками перезаписать весь код, оляуш. На чем реализована твоя рефлексия?

Эти нули такие смешные.

Это будет эквивалентно оптимизации в компилтайме.

Оптимизации, куллстори. Пример осилишь?

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

Только обосрался почему-то ты, и пруфцов нет у тебя. А так да, кукарекать ты можешь сколько угодно.

У тебя asm.js транслируется из сишки, вонана как.

Щито? Ты уже серанул и пытаешься тут как-то извернуться, сделав вид, что я где-то не прав. Ну давай, удиви, асмжс не транслируется из сишки?

TrueTsar1C
()
Ответ на: комментарий от newjsser

Т.е. примеров нет, пруфцов нет, а кукареку есть? Хорошо, очередной балабол детектед.

TrueTsar1C
()
Ответ на: комментарий от newjsser

Какой же ты упоротый все-таки. Попробуй уже хоть что-то написать больше 200 строчек, сразу истины откроются.

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

Пример юзкейсов, в которых возможности ограничены.

Читай сообщения на которые отвечаешь, там четко написано, любые зависимые от рантайм-данных. Дальше не читал. Ушел

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

Там, кстати, в статье дается ссылка на реальные оптимизации с данным подходом

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

реализованные и работающие в реальных проектах.

И код ты мне конечно же не покажешь? Кукарекаешь ты, а искать должен я? Такие куллстори.

TrueTsar1C
()
Ответ на: комментарий от Kuzy

Что тебя не устроило? Автокаст числа в строку или то, что console.log ничего не возвращает? Оба явления вполне нормальны для скриптодерьма, не придирайся.

In [5]: a = map(lambda x: print(x), xrange(10))
0
1
2
3
4
5
6
7
8
9

In [6]: a
Out[6]: [None, None, None, None, None, None, None, None, None, None]

Deleted
()
Ответ на: комментарий от newjsser

Ну дак если любые - приведи хоть один пример - это же так просто, если их мильён на каждом шагу.

Почему вы умеете только кукарекать? Почему как дело доходит до пруфцов, до реальных примеров, до кода - вы обсираетесь и убегаете? Вам самим не смешно?

TrueTsar1C
()
Ответ на: комментарий от Deleted

У меня батхерт от существования скриптодерьма.

Это ОПТИМИЗАЦИИ xrange, да?

Ну ruby и lua еще норм, а вот всякие пхп, питоны, жс - это ад похлеще крестов.

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

a = map(lambda x: print(x), xrange(10))

Вроде, пистон позиционируер себя как ООП. Че же в нем ткой говенный синтаксис? Где посылка сообщений? В Ъ должно быть наоборот

xrange(10).map(lambda...)

newjsser
()
Ответ на: комментарий от Kuzy

Какие оптимизации xrange, что ты несешь, я понять не могу.

Чем раби и луа лучше пистона, похапе и жс?

Deleted
()
Ответ на: комментарий от Kuzy

ты гонишь. классификация такая:(ruby lua js) vs (похапе пистоны жабы etc) Ты не шаришь в ООП, если такую ахинею несешь. Луа — это самый близкий к JS из перечисленных.

newjsser
()
Ответ на: комментарий от Deleted

Сорян, не умею в питон.

Тем, что они ортогональны - количество граблей минимально. В питонах жс пхп с++ можно от каждой строчки всего ожидать. Конечно, можно придрочиться и все грабли станут как родные.

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

Я не про ООП сейчас, а про общую кривость языка. JS кривой, Lua - нет.

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

Сорян, не умею в питон.

Так что ты имел в виду-то?

В питонах жс пхп с++ можно от каждой строчки всего ожидать.

В любом императивном нечистом языке.

Deleted
()
Ответ на: комментарий от mix_mix

Ну я ни разу не говорил, что js быстрее си. Ты на какой версии ноды пускал?

Забей на дедулю. Он в яваскрипте как анонимус, только тот блаженный, а этот старпёр с претензиями. Даже версии ноды посмотреть ниасилил.

В 0.12 и iojs есть регрессии, причем разные. Пако в 0.12 с инфлейтом заметно просел. Маркдаун в обоих - в 0.12 процентов на 20, в iojs на 40.

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

Так что ты имел в виду-то?

Расскажи, почему значение a ето [None, ...].

В любом императивном нечистом языке.

Покажи мне, где крестотемлейты не чистый декларативный язык. Они подходят под кривость и беzумие.

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

тот блаженный, а этот старпёр с претензиями

ага, а ты нулевой. норм эксперты собрались. Ба, и царя внесли!

anonymous
()
Ответ на: комментарий от Kuzy

Расскажи, почему значение a ето [None, ...].

map возвращает массив результатов функции, примененной к исходному массиву поэлементно. print не возвращает никаких результатов. В пистоне функция, не возратившая результат, «возвращает» None, в жс - undefined.

In [1]: def x():
   ...:     a = 3 + 3
   ...: 

In [2]: r = x()

In [3]: r

In [4]: r is None
Out[4]: True

Покажи мне, где крестотемлейты не чистый декларативный язык. Они подходят под кривость и беzумие.

Не знаю про крестотемплейты, но догадываюсь, что «от каждой строчки всего ожидать» там не проблема, раз это чистый декларативный язык.

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

Покажи мне, где крестотемлейты не чистый декларативный язык

Шаблоны Си++ Тьюринг-полны. Если это декларативный язык, даже и не знаю...

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

А, я тупой не обратил внимания, что лямбда ничего не возвращает (не приучен к динамопараше).

Не знаю про крестотемплейты, но догадываюсь, что «от каждой строчки всего ожидать» там не проблема, раз это чистый декларативный язык.

Не проблема, если понимать/помнить все эти костылики.

Лан, я, наверное, неправильно сформулировал. Я о неортогональности (да, субъективная херня).

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

Практично, это

(mapcar #'+ '(1 4 5) '(4 5 67))

или лучше

43 45 6 + 32 54 6

anonymous
()
Ответ на: комментарий от Kuzy

Вот это удобно:

   a =: (,.~i.@:#) 34 3 21 1
   a

0 34
1  3
2 21
3  1

А потом хоть складывай, хоть вычитай:

   (+/"1) a
34 4 23 4

Ничего лишнего!

x11hater
()
Ответ на: комментарий от newjsser

for this example, Io is about three times faster than plain C.

Это при том, что он сам написан на си.

Лол. Помню, как ты ещё про пиколисп что-то такое доказывал. Опять же со ссылками на каких-то имбецилов

x11hater
()
Ответ на: комментарий от TrueTsar1C

Ведь 99% бенчмарков недоязычков - это хитро подобранная синтика от людей понимающих, либо чистая профанация от таких балаболов как ты, которая именно что и бенчит - эти самый конструкции, всячески обходя работу с памятью и сам код и не юзая ни динамичности, либо специально подбирая примитивные юзкейсы, в которые может в8, либо иное двигло.

Знаете, коллега, это первый раз, когда я с вами полностью согласен

x11hater
()

Ты действительно считаешь, что аппаратная реализация защиты тормознее программной? А может и видеокарты не нужны, ведь быстрее всё на процессоре посчитать программно? И USB с UART лучше bitbang'ом делать, зачем это в микроконтроллеры пихают аппаратные модули?

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

Ты слишком узко понимаешь перформанс

не могу не процитировать self:

«у них были средневиковые(в их смысле- мракобесные о мракобесном периоде) представления о средневековье(переод между ансиент и новым временем)»

твоё во первых было мной упомянуто.

твоё второе автоматическое следствие сложности из атомов сделать каменый топор ибо интегрально проще из атомов сразу космический корабль - ибо и в первом и во втором число ошибок как функция числа атомов.

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

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

Для любителей лиспа тоже подходит, семантика схемы в языке реализована почти полностью. Кстати, для быдла сейчас в ES6/7 много плюшек, в том числе и классы, так что все в итоге будут довольны. Очень демократичный язык.

Зачем оно нужно, если есть Clojure/Scala? Сейчас JS повторяет историю с PHP, где решили, что пора бы им и ООП прикрутить, но не взлетело.

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

Однако тьюринг-полнота декларативность не перечёркивает.

Где-то был кусок кода, демонстрирующий то, как значения различных переменных зависят от порядка инстанцирования шаблонов — вот это куда более сильный аргумент против декларативности.

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