Comments 13
Каждым релизом тайпскрипт делает какие-то невероятные штуки, но для новичка становится всё сложнее въехать в это. Я проработал плотно с тайпскриптом 4 года, и имхо всего два языка сегодня находятся на передовой реально применяемых языков, это TS и Rust.
Соглашусь.
Единственное — в TS не хватает встроенных Option / Result. И все же иногда система типовы недостаточно строгая или гибкая, но это возникает очень редко, да и грех жаловаться, потому что в других языках этого вообще нет. Разве что восьмой ПХП вроде норм, но я на нем сто лет не писал, нет времени посмотреть.
Асинхронщина в TS вообще хороша и проще, чем в расте.
Хаха, опять гоисты используют манипуляции, это у вас такая традиция?
Не вижу в своем сообщении пойнта про map-reduce.
Да и без Option / Result в TS можно жить, используя встроенные средства языка, потому что с типами легче работать.
TS имеет недостатки, но пользоваться им приятно. С растом то же самое.
Го — ужасен.
Вы как то не сформулировало что значит - реально применяемых, я так понимаю это у которых значительная аудитория по численности. Касаемо передовых, тут тоже вопрос, для меня Clojure более передовой с точки зрения синтаксиса и семантики, после него смотрю с улыбкой на все эти новые фичи, спор о смысле которых видится приблизитено такой же как как между православием и католичеством у кого правильные догматы.
Если смотреть с вашей позиции, то Go на мой взгляд это самый лучший язык - он не перегружен синтаксисом, очень быстро компилируется, потребляет мало ресурсов. Что и есть шаг вперед. Хотя он не без недостатков в виде перегруженности if err != nil { ... }.
Подытоживая, мое мнение TS и Rust идут по пути С++, в виде неуемного добавления в язык всех возможных фич на все возможные случаи. Вот только нужно ли это. В отношении С++ там грань разумного перешагнута давно, опять же на мой взгляд, синтаксис стал настолько сложным что трудозатраты на написание и поддержку ПО которое всем этим пользуется превышае выгоды от скорости работы и потребления памяти - как вывод 99% ПО сейчас пишут не на С++ и он полностью маргинализиировался.
Какие фичи TS и Раста вы считаете лишними?
Во первых, фич в C++ гораздо меньше чем, например, в Scala. Это по поводу неуемного добавления фич.
Во вторых, синтаксис C++ проще вырвиглазного синтаксиса Rust, и становиться только проще со временем начиная с 11 стандарта (всякие auto, новый for, ламбды и.т.д.). Вы просто путаете синтаксис и возможность выстрелить себе в ногу. Да, в Rust гораздо сложнее это сделать, но он и менее гибок.
В третьих вы пишете ерунду по поводу 99% ПО, ибо все мало мальски серьезные десктопные приложения пишутся на C++. Тулзы, браузеры, 3д софт, графические редакторы, видеоредакторы, музыкальные студии, игры и.т.д. Даже тот же Firefox состоит лишь на 9% из Rust, по моему это фиаско для языка, стабильная версия которого вышла в 2015 году.
И на мобилках все серьезные игрушки понятное дело, кроссплатформенные и во многих случаях написаны на C++. Так что язык не маргинализировался, он остается на своем месте, и будет всегда там оставаться. Просто разрослись веб и мобильные сегменты, до невероятных размеров, а C++ прекрасно чувствует себя в своей нише.
"[...]Firefox состоит лишь на 9% из Rust[...]"
Можете дать ссылку (ведь я отслеживал по одной, а данные в ней с июля не обновляются)?
P.S. нашел это https://www.openhub.net/p/firefox/analyses/latest/languages_summary (спасибо комменту https://habr.com/ru/post/467901/comments/#comment_20641833 )
Сравнивать Rust и С++ по количеству строк кода, это как ассемблер и питон сравнивать по строкам кода.
Простой аналог
enum Json {
Null,
Boolean(bool),
Number(f64),
String(String)
...
}
на С++ уже займет под 500 строк кода.
Там где в расте можно написать характеристику и навесить ее ограничения на типы, на С++ придется городить иерархию классов-интерфейсов, которые все равно не будут такими же гибкими.
это как ассемблер и питон сравнивать по строкам кода.
Вот по количествам строк кода Rust и С++ как раз не сильно отличаются, я смотрел исходники различных растовых библиотек, о краткости и лаконичности там и говорить не приходится.
Им обоим до Kotlin, например, далеко.
Простой аналог
без паттерн матчинга это бессмысленно, и не так уж он нужен, множество мейнстримовых языков без него обходятся.
А в Rust зато ООП нет.
на С++ уже займет под 500 строк кода.
да вы если поднатужитесь, то и на 5000 напишете, я уверен )
на С++ придется городить иерархию классов-интерфейсов
На шаблонах и union можно сделать, и вообще много вариантов.
Им обоим до Kotlin, например, далеко.
Но Kotlin далеко до Rust по системе типов.
без паттерн матчинга это бессмысленно, и не так уж он нужен, множество мейнстримовых языков без него обходятся.
Настолько не нужен, что в C++ его давно хотят добавить как минимум с 2016 года, если не раньше (и ещё есть 1 2 3), и до этого добавили в кастрированном виде как structured bindings.
А в Rust зато ООП нет.
Скажите, а что вы называете ООП?
да вы если поднатужитесь, то и на 5000 напишете, я уверен
В стандартной библиотеке GCC порядка полутора тысяч строк, и это не считая кода в подключённых заголовочниках.
На шаблонах и union можно сделать, и вообще много вариантов.
И прощай типобезопасность, ага.
Пересказ нормального анонса... Лучше бы честный перевод сделали, а то без заголовков и с перепутанными примерами кода читать невозможно.
С++ ржет в сторонке.
TypeScript 4.5: что нового