Size: a a a

Rust — русскоговорящее сообществo

2020 November 18

AZ

Alexander Zaitsev in Rust — русскоговорящее сообществo
Ilya Lakhin
Я понимаю, но это спекулятивный аргумент по своей сути. Смотря кто будет писать, смотря что будет писать.

Штука ведь в том, что сама по себе исполняемая среда WASM тоже виртуализирована, и дает в совокупности такой же штраф производительности, как и среда JS. Ну собственно говоря, это по большому счету одна и та же среда. И вообще сравнивать JS и Rust/WASM в этом смысле некорректно. Нужно сранивать JS с Ruby, PHP, Java, C#. Эти языки JS и по семантике языка определенно лучше. Причины я уже изложил выше. А по производительности либо не уступает, либо превосходит. Что само по себе по-моему весьма примечательный результат.
А можно подробнее про то, что штраф перфа васма такой же, как у жс? Будет круто, если ссылок накидаете с пруфами
источник

f

faramo_zayw in Rust — русскоговорящее сообществo
Ilya Lakhin
Ну вот на самом деле я как раз с этим тезисом скорее не согласен. Ну вы посмотрите на тот же Rust. При всем моём уважении и любви к этому языку, он тоже не мало взял из современной экосистемы JS.
Я был очень рад такому сходству экосистем :D
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Alexander Zaitsev
А можно подробнее про то, что штраф перфа васма такой же, как у жс? Будет круто, если ссылок накидаете с пруфами
Ссылок боюсь, что не накидаю. На тривиальных бенчмарках, которые можно нагуглить, это и так видно. Но вообще это по-моему вполне очевидный аргумент, учитывая, что все чтения и записи в WASM контролируются виртуальной средой браузера так же, как в случае с JS. В любом случае WASM это не машинный код, это по сути просто еще одна виртуализация.
источник

AT

Alexander Tchitchigi... in Rust — русскоговорящее сообществo
Ilya Lakhin
Я понимаю, но это спекулятивный аргумент по своей сути. Смотря кто будет писать, смотря что будет писать.

Штука ведь в том, что сама по себе исполняемая среда WASM тоже виртуализирована, и дает в совокупности такой же штраф производительности, как и среда JS. Ну собственно говоря, это по большому счету одна и та же среда. И вообще сравнивать JS и Rust/WASM в этом смысле некорректно. Нужно сранивать JS с Ruby, PHP, Java, C#. Эти языки JS и по семантике языка определенно лучше. Причины я уже изложил выше. А по производительности либо не уступает, либо превосходит. Что само по себе по-моему весьма примечательный результат.
Тут несколько "интересных" моментов. Во-первых, этот мифический JS, который "не уступает либо превосходит" — это наверняка V8. Удивительно, но это не единственный интерпретатор JS, используемый на практике. 😉

Во-вторых, даже "старый добрый" Language Benchmarks Game не согласен, что V8 не уступает HotSpot JRE (OpenJDK).

В-третьих, на данный момент Wasm не предполагает GC, да и вообще особой рантайм-поддержки, исполнение примерно всех инструкций детерминировано по времени, так что я даже не знаю как это можно сравнивать с managed рантаймами. Некоторые, собственно, ничтоже сумняшеся тупо компилируют Wasm в натив ahead-of-time. 🤷‍♀️
источник

AT

Alexander Tchitchigi... in Rust — русскоговорящее сообществo
Ilya Lakhin
Ссылок боюсь, что не накидаю. На тривиальных бенчмарках, которые можно нагуглить, это и так видно. Но вообще это по-моему вполне очевидный аргумент, учитывая, что все чтения и записи в WASM контролируются виртуальной средой браузера так же, как в случае с JS. В любом случае WASM это не машинный код, это по сути просто еще одна виртуализация.
Я бы посоветовал всё-таки разобраться подробнее, что такое Wasm. Хотя бы на том уровне, что он используется и вне браузеров. Arguably, больше, чем внутри. 😉
источник

DO

Do c Tor O r` Ry in Rust — русскоговорящее сообществo
Ilya Lakhin
Я понимаю, но это спекулятивный аргумент по своей сути. Смотря кто будет писать, смотря что будет писать.

Штука ведь в том, что сама по себе исполняемая среда WASM тоже виртуализирована, и дает в совокупности такой же штраф производительности, как и среда JS. Ну собственно говоря, это по большому счету одна и та же среда. И вообще сравнивать JS и Rust/WASM в этом смысле некорректно. Нужно сранивать JS с Ruby, PHP, Java, C#. Эти языки JS и по семантике языка определенно лучше. Причины я уже изложил выше. А по производительности либо не уступает, либо превосходит. Что само по себе по-моему весьма примечательный результат.
Как можно в один ряд ставить js, php и c#?
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Ilya Lakhin
Я понимаю, но это спекулятивный аргумент по своей сути. Смотря кто будет писать, смотря что будет писать.

Штука ведь в том, что сама по себе исполняемая среда WASM тоже виртуализирована, и дает в совокупности такой же штраф производительности, как и среда JS. Ну собственно говоря, это по большому счету одна и та же среда. И вообще сравнивать JS и Rust/WASM в этом смысле некорректно. Нужно сранивать JS с Ruby, PHP, Java, C#. Эти языки JS и по семантике языка определенно лучше. Причины я уже изложил выше. А по производительности либо не уступает, либо превосходит. Что само по себе по-моему весьма примечательный результат.
Штука ведь в том, что сама по себе исполняемая среда WASM тоже виртуализирована, и дает в совокупности такой же штраф производительности, как и среда JS.

Да
откуда ты берешь это? Из того что васм это тоже байткод виртуальной машины *совершенно не следует* что он по перфомансу как любой другой байткод
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Ilya Lakhin
Ссылок боюсь, что не накидаю. На тривиальных бенчмарках, которые можно нагуглить, это и так видно. Но вообще это по-моему вполне очевидный аргумент, учитывая, что все чтения и записи в WASM контролируются виртуальной средой браузера так же, как в случае с JS. В любом случае WASM это не машинный код, это по сути просто еще одна виртуализация.
тривиальные бенчмарки это мусор. зато тривиальное "мы переписали и вот эффект" результат виден - х3-х4 перфоманс получается легко. Тяжело назвать это "тем же самым перфомансом"
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Alexander Tchitchigin
Я бы посоветовал всё-таки разобраться подробнее, что такое Wasm. Хотя бы на том уровне, что он используется и вне браузеров. Arguably, больше, чем внутри. 😉
this
источник

f

faramo_zayw in Rust — русскоговорящее сообществo
Ilya Lakhin
Я понимаю, но это спекулятивный аргумент по своей сути. Смотря кто будет писать, смотря что будет писать.

Штука ведь в том, что сама по себе исполняемая среда WASM тоже виртуализирована, и дает в совокупности такой же штраф производительности, как и среда JS. Ну собственно говоря, это по большому счету одна и та же среда. И вообще сравнивать JS и Rust/WASM в этом смысле некорректно. Нужно сранивать JS с Ruby, PHP, Java, C#. Эти языки JS и по семантике языка определенно лучше. Причины я уже изложил выше. А по производительности либо не уступает, либо превосходит. Что само по себе по-моему весьма примечательный результат.
Насколько я помню, 4mb js vs 4mb wasm победит второй, поскольку его после загрузки можно сразу же запустить, а не ждать пока браузер его(js) обработает в нужный ему вид
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
faramo_zayw
Насколько я помню, 4mb js vs 4mb wasm победит второй, поскольку его после загрузки можно сразу же запустить, а не ждать пока браузер его(js) обработает в нужный ему вид
Это без учета того, что на компиляцию в сам WASM вы предварительно потратили определенное время. WASM же не из воздуха взялся.
источник

f

faramo_zayw in Rust — русскоговорящее сообществo
Ну так и итоговый JS нынче тоже собирается
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
все ещё ускользает от меня как время сборки перфоманс виляет на выбо рпервого языка. Предлагаю двойной слепой тест провести, чтобы человек сказал на какой технологии хелловорлд написан
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
faramo_zayw
Ну так и итоговый JS нынче тоже собирается
Да, но чтобы что-то пописать на JS в браузере мне достаточно открыть консоль самого браузера и начать в ней писать. Организовать аналогичный REPL для Rust->WASM будет сложнее.
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
Alexander Tchitchigin
Тут несколько "интересных" моментов. Во-первых, этот мифический JS, который "не уступает либо превосходит" — это наверняка V8. Удивительно, но это не единственный интерпретатор JS, используемый на практике. 😉

Во-вторых, даже "старый добрый" Language Benchmarks Game не согласен, что V8 не уступает HotSpot JRE (OpenJDK).

В-третьих, на данный момент Wasm не предполагает GC, да и вообще особой рантайм-поддержки, исполнение примерно всех инструкций детерминировано по времени, так что я даже не знаю как это можно сравнивать с managed рантаймами. Некоторые, собственно, ничтоже сумняшеся тупо компилируют Wasm в натив ahead-of-time. 🤷‍♀️
Тут ещё хитрая деталь, что v8 показывает отличные результаты на достаточно консервативных бенчмарках, где джит может корректно вывести типы и т.п.

Как только в дело вступает реальный, используемый на практике JS код, то даже v8 будет очень сложно его хорошо оптимизировать из-за гигантского количество настоящих динамических вызовов.
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Ilya Lakhin
Да, но чтобы что-то пописать на JS в браузере мне достаточно открыть консоль самого браузера и начать в ней писать. Организовать аналогичный REPL для Rust->WASM будет сложнее.
раст как первый язык стоит брать если хочется привить дисциплину и понимание, что 1 + "1" - '1' писать плохо

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

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
я надеюсь предложение изучать жс в F12 вкладке это скорее шутка чем реальное предложение
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Вообще, когда возникает разговор на тему динамического программирования с людьми из static-typing среды чаще всего приводится именно этот аргумент на тему того, что программист на динамическом языке будет неаккуратно использовать динамическое приведение типов. Сам по себе этот аргумент апеллирует к тому, что программист обладает низкой квалификацией, либо низкой самодисциплиной. Либо же неспособен держать карту типов в голове, и непременно нуждается в помощи компилятора, который будет бить его по рукам.

Господа, программист он не обязательно всегда такой глупый. :)
источник

AZ

Alexander Zaitsev in Rust — русскоговорящее сообществo
Ilya Lakhin
Вообще, когда возникает разговор на тему динамического программирования с людьми из static-typing среды чаще всего приводится именно этот аргумент на тему того, что программист на динамическом языке будет неаккуратно использовать динамическое приведение типов. Сам по себе этот аргумент апеллирует к тому, что программист обладает низкой квалификацией, либо низкой самодисциплиной. Либо же неспособен держать карту типов в голове, и непременно нуждается в помощи компилятора, который будет бить его по рукам.

Господа, программист он не обязательно всегда такой глупый. :)
Ну если ему от рождения дано быть программистом, конечно
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Alexander Zaitsev
Ну если ему от рождения дано быть программистом, конечно
Ну а если не дано, то получается конечно, что лучше ему тогда на static-typing, тут я с вами соглашусь :)
источник