Cat
Cat
т.к. сама по себе компиляция в васм не будет влиять на порог входа, если у вас уже есть готовый пайплайн
Roman
это очень сложный вопрос, думаю утром профессионалы с++ и js проснутся и ответят более точно
но вообще, если вы не знаете ни с++, ни раста, то у с++ порог будет меньше, но раст будет выигрывать на дистанции
я имею опыт с C++, правда сейчас конкретно на нём не работаю.
с Rust'ом опыта нет ещё вообще, но, не смотря на убогость его синтаксиса, "compile-time гарантия отсутствия проблем с памятью, синхронизацией и т.д." звучит заманчиво учитывая сколько времени я убил на устранение багов связанных с неправильной работой с памятью
Cat
> убогость его синтаксиса
а вы точно имеете опыт с с++?
Cat
это больше риторический вопрос
Cat
Alexander
Alexander
Достаточно покопаться в нём неделю, чтобы понять, что оно да, решено, но не так, как создаётся впечатление, что решено и забыли, а немного другой ценой.
Roman
Alexander
ну в том, что это не C++, где просто всё проблемное магическим образом исчезло.
Roman
Cat
тем более кейс специфичный,
> учитывая сколько времени я убил на устранение багов связанных с неправильной работой с памятью
Alexander
Roman
ну я так понял мы говорим о compile-time guarantees
Cat
@Romshark, а вы в васме тоже хотите работать с памятью?
Roman
Alexander
ну сорян, может как-то криво выразился. я хотел сказать, что почему-то многие думают, что такие вещи как "безопасность" в расте берутся из ниоткуда и на нём можно писать как на плюсах, но нет, чтобы на расте писать, надо вкурить концепцию, благодаря которой это всё и соблюдается, а она очень мешает писать так, как привыкли многие в других языках. ещё раз сорян за корявое описание.
Roman
Cat
Roman
когда несколько потоков одновременно работают с shared state'ом и компилятор молча сиё дело пропускает то это дико опасно и дорого обойдётся
Cat
Roman
Cat
я думаю это вопрос бесконечного потенциала
Roman
Cat
всмсл?
а подскажите ещё (тоже не шарю), wasm исполняется отдельным рантаймом? или тем же JS-овским?
Roman
Cat
если второе, то это нужно идти к js-никам и спрашивать, когда им завезут многопоточность
Cat
(ставлю на то, что через несколько лет)
(моё авторитетное мнение никому не сдалось)
Alexander
Я что-то бенчил wasm от нечего делать, и что-то даже не близко к cpu было. Просто для коммента.
Cat
Cat
в общем, мне кажется вы решаете несуществующую проблему
Roman
Cat
но, если решите присоединиться к рустовому сообществу, будем рады помочь и разобравться в концепциях
Cat
я бы сказал "для систем и приложений не нужно использовать wasm/js", но сдержусь
Alexander
Alexander
Си со слабой типизацией не сильно лучше динамического языка, однако системный.
Roman
я бы сказал "для систем и приложений не нужно использовать wasm/js", но сдержусь
я изначально пришёл из мира C++ Qt, где есть просто великолепный фреймворк Qt Quick со своим языком написания UI - QML. Когда я перешёл на веб HTML/CSS/JS оказался катастрофой.
Веб сам по себе это более 50% рынка и за ним будущее, он убьёт app store'ы, в браузеры переместится весь софт, включая 3Д игры и подобное, с лишь небольшими исключениями, но вот HTML/CSS для написания современных динамичных приложений совершенно не годится, но это отдельная тема.
Поэтому я задался вопросом, лично для себя, попробовать написать небольшой SceneGraph на WASM и WebGL, простенький тупенький MVP. WASM по той причине что JS для этого абсолютно не годится, это не systems programming language и он слишком прожорлив чтоб писать на нём рендеринг движок. Просто составить граф мета объектов со свойствами и биндингами и вывести их на экран.
Roman
и тут буквально на днях я услышал, что мол одних из самых популярных языков для WASM'а сейчас это Rust, глянул несколько детальных презентаций и заинтересовался, хотя изначально хотел писать всё это на C++
Roman
Go, на котором я сейчас реализую GraphQL API'шки, т.е. бэкэнд приложений, для этого к сожалению тоже не подходит, даже не смотря на то что компилятор Go в скором сможет компилить WASM. Garbage collection и graphics engine просто не подружатся
Cat
Сложно сказать, у меня нет опыта на wasm, поэтому не могу сказать точнее
Если вы интересуетесь именно производительностью кода rust vs c++, то она сравнимая (читай: одинаковая)
нужно дождаться пока проснуться те, кто бенчмаркал wasm код, и скажут более подробно
Ну и насчет самой идеи, можете считать меня ретроградом, но по моему (никому не нужному) мнению игры не уйдут в веб, по крайней мере пока все js программисты не перейдут на что-то адаптированное для (хотя бы) многопоточных вычислений
Cat
Тем не менее, если очень хочется wasm, раст должен неплохо себя показать как замена c++
Кривая входа конечно будет покруче, но все изучаемо
Roman
Сложно сказать, у меня нет опыта на wasm, поэтому не могу сказать точнее
Если вы интересуетесь именно производительностью кода rust vs c++, то она сравнимая (читай: одинаковая)
нужно дождаться пока проснуться те, кто бенчмаркал wasm код, и скажут более подробно
Ну и насчет самой идеи, можете считать меня ретроградом, но по моему (никому не нужному) мнению игры не уйдут в веб, по крайней мере пока все js программисты не перейдут на что-то адаптированное для (хотя бы) многопоточных вычислений
никто не будет писать 3д игры на JS, это нонсенс, для этого и появился WASM, это среда напоминающая виртуальный процессор, без garbage collection, с (как обещают разработчики браузеров) 5% overhead'ом по сравнению с кодом, компилированным на x86
5% это вполне приемлимо, учитывая уровень безопасности который мы получаем от sandbox'а браузера.
В будущем приложения не будут устанавливаться из app store'ов, достаточно будет зайти на URL, подождать загрузки приложения в cache если загружаем первый раз и вуаля..
Roman
это впервые позволит писать абсолютно cross platform'енные приложения с идеалогией "write once - run everywhere", которые по производительности сопостовимы с нативными.
пишешь 1 приложения, пользуешься на абсолютно любом стационарном или мобильном девайсе
Roman
https://caniuse.com/#search=WASM уже поддерживается в основных браузерах таких как Edge, Chrome, Firefox, Safari
Alexander
та ну, какие 5%, wasm не везде даже js обгоняет
Alexander
+ GC не помеха UI. если электрон приехал на десктопы уже
Ivan
> В будущем приложения не будут устанавливаться из app store'ов, достаточно будет зайти на URL, подождать загрузки приложения в cache если загружаем первый раз и вуаля..
такое себе будущее, этакая смесь киберпанка с "навозными веками" =)
Ivan
write once - run everywhereгде-то мы это уже слышали... точно! в прошлый раз они назвали это "Java"
Cat
Cat
Roman
+ GC не помеха UI. если электрон приехал на десктопы уже
мы говорим не про логику UI, а про graphics & layout engine, а тут GC stop-the-world может отрицательно сказаться на UX. Даже малейшие паузы могут привести к микро-лагам и потерянным кадрам, а это некрасиво особенно в 2018 году.
Roman
Cat
Ivan
50% рынка - веб - очень смелое утверждение
Ivan
"веб" - это самая верхушечка айсберга
Ivan
под водой у неё тонны системного софта, тонны железа, очень сложная инфраструктура
Cat
Alexander
Ivan
Ivan
а ещё был, прости хоспаде, ActiveX
Ivan
ну и Silverlight
Ivan
а флеш даже ещё шевелится местами
Ivan
в общем не в первый раз у нас впереди светлое (нет) будущее с переносом всего в веб
Roman
На самом деле уже лет 5 обещают подобное будущее, электрон конеш пинает натив, но какими средствами
Пока мы не перейдём с HTML/CSS/JS на что-то более подходящее, для написания приложений - ситуация не изменится. HTML/CSS изначально создавался как язык описания статичных документов. То что его сейчас используют для динамики, просто извращение, я сам сейчас этим занимаюсь но никакого удовольствия это не приносит, одни боли.
Следственно, если веб как среда улучшится, а к этому всё и идёт - больше приложений будут переходить в браузер по причине меньшего порога доступа к клиенту.
Alexander
ну да, я согласен, что отличия апплетов от wasm что-то не сильно заметны. кстати апплетам тоже прочили именно игры в браузере.