Комментарии 29
Экосистема js такая развитая, потому что в ней все знают js и пишут на нем. Любой может написать плагин к популярному инструменту типа вебпака или Бабеля. А на расте плагины смогут писать единицы
Например, сейчас next 12 перешёл на swc, но мы не можем обновиться потому что у нас подключены плагины которые не реализованы для swc. И поделать с этим ничего нельзя - Раст в команде никто не знает
Так что мейнстримом такой подход точно не будет
Ну и ещё не только на расте пишут но и на го. Го не сильно медленнее, но в разы проще. Если уж и писать тулинг на чем-то нативном, то на нем
Компиляция в wa даёт всего-то 20% плюс к производительности, игра не стоит свеч. Это имеет смысл когда нужно переиспользовать нативную библиотеку, или скрыть сорцы от посторонних глаз. Но тоже не мейнстрим
Раст — это просто очередной язык, в котором некоторые вещи сделаны не так, потому что в остальных языках очень долгое время абсолютной нормой считалось компилировать и запускать (падая в рантайме) очевидно ошибочный код. В остальном — это просто еще один язык с си-подобным синтаксисом. За месяц литкода любой разраб будет на нем писать.
В го можно читать из переменных, которые не были инициализированны. Длинна неинициализированного массива — 0. Даже в TS такой дичи нет.
Го не сильно медленнее, но в разы проще.
До тех пор, пока в коде не появились неявные ошибки.
В го можно читать из переменных, которые не были инициализированны.
А вы хотя бы букварь читали? https://go.dev/tour/basics/12
Длинна неинициализированного массива — 0.
Это как? >An array's length is part of its type
Длинна неинициализированного массива — 0.
Под массивом наверно имеется в виду
slice
.Из того же букваря go.dev/tour/moretypes/12:
The zero value of a slice is nil.
A nil slice has a length and capacity of 0 and has no underlying array.
А вы хотя бы букварь читали? https://go.dev/tour/basics/12
А вы? Там написано что неинициализированные переменные неявно "инициализируются" каким-то рандомным значением, которое разработчики почему-то посчитали подходящим.
Это не инициализация, это присваивание переменным рандомного значения, которое ничем не лучше мусора, который си читает из неинициализированной памяти.
Это как? >An array's length is part of its type
Ниже вам уже написали, но если хотите, можете продолжать блистать знаниями терминологии.
A nil slice has a length and capacity of 0 and has no underlying array.
Он про такой кейс. ИМХО есть и есть, язык простой, пару особенностей запомнить не так сложно, но на любителя да.
var data []int; fmt.Println(len(data)) // -> 0
Массив может быть nil (выше ситуация), а может быть нулевой длины. Особой разницы нет в повседневной работе, кроме случаев JSON серелизации, тк nil будет null, а не []
Я наблюдал подобную ситуацию при появлении Scala и Kotlin. Матёрые Java программисты с опытом 10+ лет посмеивались над новыми языками, ведь всё тоже самое можно сделать на Java. Но вот уже вышла Scala 3 и нашла своё приминение в Kafka, Spark, BigData, а Kotlin постепенно захватывает Android разработку.
В современно ИТ нет одного языка, который объединит все остальные. Наоборот каждый пишет на том, что удобнее. Я думаю найдутся любители Rust во фронтэнде, и от этого никому не будет хуже.
Во фронтенде было несколько таких попыток: CoffeScript, Dart, теперь вот TypeScript. Кроме TypeScript-а никто не прижился, но даже с учетом всей его популярности, он все равно не лидер пока.
Вот, приложил сравнение количества PR-ов на GH по котлину vs джаве, джава vs скала и TS vs JS.
Всегда меня так веселят оголотелые староверы любители того-самого правильно.
Но потом, через 5-10 лет почему-то пишут "ой, что-то на Делфи и Паскале вакансий не найти", "ой, что-то ПХПшникам платят меньше чем доставщикам пиццы"
Может, в будущем что-то и изменится но пока что JS помирать не собирается
А медианная зарплата в этих вакансиях одинаковая?
За год тайпскриптеры получают на 10% больше на рынке США.
Но какое это имеет отношение к обсуждаемой теме?
Когда наступит будущее и все изменится уже поздно будет пить боржоми
Из всего пестрого многообразия "стильных-модных-молодежных" язычков в мейнстрим пробиваются единицы. Вот выше вспомнили про Scala и Kotlin (которым в общем-то тоже ещё далеко до мейнстрима, это нишевые языки), а про тот же Groovy не упомянули - забыли наверное, да? :) (неудивительно). Просто не всем нравится тратить свое время на переписывание coreutils и прочих велосипедов на очередном маргинальном языке из списка "other programming languages" у TIOBE, а выучить "очередной язык с си-подобным синтаксисом" в случае необходимости проблемой не является. А вот возникнет ли эта необходимость - это отдельный вопрос.
Подобное уже случалось во фронтенде. Была библиотека libsass, написанная на C++. Однако из-за неудобного стека, новые фичи добавлялись катастрофически медленно. В результате, libsass всё, закрылся.
Возможно библиотекам на Rust повезет больше, потому что язык более дружелюбный, но время покажет
бред какойто TS будет в вебасамбли , зачем еще одна прослойка , явно автор курил чтото или сам запутался ....
быстрее, чем JS, но не совсем по скоростиБыстрее, но не по скорости? Это как, вообще? В оригинале
WASM is definitely a lot faster than JS, but not quite native speed.Т.е., быстрее JS, но не на уровне нативного кода.
Основная причина, почему Vercel выбрала Rust, а не Go (и написала эту статью) — им удалось купить мейнтейнеров SWC и получить полный контроль над проектом.
Аналог на Go (esbuild) не уступает по скорости и функциональности, а где-то даже превосходит решение на Rust. Единственная проблема — его пишет технический директор Figma, поэтому купить его затруднительно, а это противоречит бизнес-модели Vercel.
esbuild и swc - это не аналоги, один инструмент другой не заменяет. esbuild – это бандлер (вроде webpack), а swc – транспайлер (вроде babel)
Ну да, esbuild не только транспайлер, но и бандлер. Поэтому я и написал, что "где-то даже превосходит".
Возможности транспайлера в esbuild настолько ограниченные, что я бы их всерьез рассматривать бы и не стал.
Более того, сам Эван так и говорит – хотите нормальный транспайлер, берите swc
Rust вряд ли сменит JS, мне он видится больше языком для wasm, написания утилит для сборки, оптимизации и прочих прикладных задач для node.js/deno. За пару лет собрал несколько интересных проектов. "Убийца" Electron - Tauri и вот буквально вчера попал на проект PostCSS-RS.
Rust — будущее инфраструктуры JavaScript