Как стать автором
Обновить

Комментарии 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.

Где там написано про «какое-то рандомное значение»? Значение вполне определенное и зависит от типа переменной — ноль, false, пустая строка, nil.

ноль, false, пустая строка, nil.

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

Очевидно, они ошиблись.

То, что вы считаете их неудачными - это одно.

Но они не рандомные - они весьма конкретные и каждый раз одинаковые.

Он про такой кейс. ИМХО есть и есть, язык простой, пару особенностей запомнить не так сложно, но на любителя да.

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% больше на рынке США.

Но какое это имеет отношение к обсуждаемой теме?

Я к тому что нужно смотреть не только на количество, но и на "качество" вакансий.

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

Когда наступит будущее и все изменится уже поздно будет пить боржоми

Из всего пестрого многообразия "стильных-модных-молодежных" язычков в мейнстрим пробиваются единицы. Вот выше вспомнили про Scala и Kotlin (которым в общем-то тоже ещё далеко до мейнстрима, это нишевые языки), а про тот же Groovy не упомянули - забыли наверное, да? :) (неудивительно). Просто не всем нравится тратить свое время на переписывание coreutils и прочих велосипедов на очередном маргинальном языке из списка "other programming languages" у TIOBE, а выучить "очередной язык с си-подобным синтаксисом" в случае необходимости проблемой не является. А вот возникнет ли эта необходимость - это отдельный вопрос.

Вот выше вспомнили про Scala и Kotlin (которым в общем-то тоже ещё далеко до мейнстрима, это нишевые языки)
Kotlin же аж основной рекомендованный Гуглом язык для разработки под Андроид. Или мейнстрим — это когда он популярнее Джавы будет во всех сферах, включая легаси?

Подобное уже случалось во фронтенде. Была библиотека libsass, написанная на C++. Однако из-за неудобного стека, новые фичи добавлялись катастрофически медленно. В результате, libsass всё, закрылся.

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

бред какойто TS будет в вебасамбли , зачем еще одна прослойка , явно автор курил чтото или сам запутался ....

быстрее, чем JS, но не совсем по скорости
Быстрее, но не по скорости? Это как, вообще? В оригинале
WASM is definitely a lot faster than JS, but not quite native speed.
Т.е., быстрее JS, но не на уровне нативного кода.

Спасибо, поправлю

В оригинале тоже очевидно враньё - некоторые тесты показывают единицы процентов на одинаковых алгоритмах, отдельные - деградацию wasm относительно JS. Да, счётные задачки типа расчёта фракталов - хорошо дробятся в wasm. Ну, может SIMD теперь еще ощутимо подпихнёт в некоторых кейсах. Но вот прям заявлять "a lot faster" - кмк перебор.

Основная причина, почему 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.

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