LINUX.ORG.RU

Посмотрел я этот ваш Rust

 ,


6

8

Вобщем, дошли руки потыкать палочкой.

Я вот что не пойму - зачем и кому он нужен, ну правда?

Это же новый C++. То есть, чрезмерно переусложненный язык, в котором, как говорил Луговский, разобраться может разве что хорошая зубрилка, а не хороший программист, но при этом не дающий никаких бонусов к продуктивности, и никакими киллер-фичами не обладающий.

Close to metal? Нет, извините, мне когда надо будет close to metal - я пойду сишку возьму. Которая реально, и Close To Metal, и со стабильным ABI, так важным для низкоуровневого программирования, и так далее. А если просто производительности не будет хватать, в том числе там из-за GC, так ведь - что в Java, что в Common Lisp, есть огромное количество возможностей затюнить производительность до нужного уровня, при этом не стреляя себе в ногу.

Продуктивность разработчика? Я сильно в этом сомневаюсь. Потому что вот есть языки программирования, предлагающие наибольшую продуктивность, не ограничивающие пользователя практически никак, и, конечно, вместе с тем, довольно сильно нагружающие межушной нервный узел, довольно нетривиальные для изучения. Как пример, лиспы всевозможные. Но Rust в их число не входит. Там на каждом углу костыли, подпорки, железные двери с замками, и чуть что так обухом по голове можно получить.

Наконец, ну безопасность чтоли, хваленая? Ну, опять нет. Взять тот же unsafe. Если вам нужна прямо таки безопасность-безопасность - берите что-нибудь вроде хаскеля(или какого-нибудь Coq, или что-нибудь подобное, с зависимыми типами, если совсем упоролись), ну или на худой конец, что-нибудь вроде Java, где все безопасно прямо как в дурдоме с мягкими стенами.

Вобщем, не вижу зачем этот язык нужен, нам и C++ хватает, если надо не ехать, а шашечки(т.е. тупо позадротствовать, да).

★★
Ответ на: комментарий от RazrFalcon

Писать проще на том языке, который знаешь.

Знаю и Си и Java. На Java писать аналогичную функциональность - проще(если не касаться совсем низкоуровневых дебрей конечно).

По вашей логике на Питоне/JS проще писать, чем на C++.

Да, действительно проще.

А на деле, жизнь без типов - боль. И приходится пердолиться с анализаторами типа mypy.

Это не проблемы динамической типизации, а проблемы конкретно питона, как языка довольно непродуманного. В нормальных динамических языках (CL, Smalltalk, итд) таких проблем нет.

Ну и сравнивать с Си - это прошлый век, ибо хуже Си сейчас ничего нет.

Си это довольно неплохой язык для своих задач, в области системного и низкоуровневого программирования. То что он несколько устарел это так, но замена ему точно не раст и не плюсы, и не D никакое.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Твои слова:

других языках вообще нельзя расширять компилятор,

rustc позволяет подключать внешние плагины. Да эта фича всё ещё сидит в unstable, но тем не менее, наличие такой возможности опровергает твоё утверждение, что только в лишпе можно расширять компилятор.
Или дай определение, что лично ты понимаешь под расширением компилятора.

WatchCat ★★★★★
()
Последнее исправление: WatchCat (всего исправлений: 1)
Ответ на: комментарий от rumgot

Да будет холиар. Гонг…

Rust полная хрень, которая умрёт так и не родившись.

C/C++ при всех своих + и - так жил, так и будет жить.

Точка.

anonymous
()
Ответ на: комментарий от lovesan

но замена ему точно не раст и не плюсы, и не D никакое.

Замены Си и быть не может, ибо тонны легаси и прогеров с синдромом утёнка.

В нормальных динамических языках (CL, Smalltalk, итд) таких проблем нет.

Ох лол. Это в тех, которые никто не использует? Ну ок.

RazrFalcon ★★★★★
()
Ответ на: комментарий от WatchCat

Если бы компилятор Rust не поддерживал SSE/AVX - можно ли было бы их туда добавить? Ответ немного предсказуем.

lovesan ★★
() автор топика
Ответ на: комментарий от RazrFalcon

Ох лол. Это в тех, которые никто не использует? Ну ок.

Используют. Но мы об использовании, или о том, какие проблемы с типами в бидоне? Ты бы еще баш привел в пример, и потом экстраполировал это на всю динамическую типизацию.

Нормальный динамический язык должен поддерживать «работу в образе». Иначе начинается мрак. Вот даже у JS это отчасти есть(ну, в браузере соответственно, а не в образе, и да, криво и косо, до перезагрузки страницы, но хоть как-то), а у бидона нет. Бидон это скриптовая поделка. Отсюда и куча проблем с анализом кода, типами, и прочим.

lovesan ★★
() автор топика
Ответ на: комментарий от WatchCat

Кстати плагины компилятора это уже ближе к лисповым макросам, чем обычные растовые «макросы», но учитывая специфику языка, отсутствие «работы в образе», а соответственно eval-when и иже с ним, они как бы малоюзабельны.

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

lovesan ★★
() автор топика
Последнее исправление: lovesan (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Замены Си и быть не может, ибо тонны легаси и прогеров с синдромом утёнка.

Не только это, а во-первых, и в главных, отсутствие у всех этих «убийц сишечки» ABI. А во-вторых, невозможность запуска без соответствующего рантайма.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Можете привести хоть одну причину наличия стабильного ABI? И я не про воображаемый мир, а про реальность, где все языки будут общаться через убогий C ABI ещё лет 50.

Какой ещё рантайм? У C++, Rust, D (который betterC) такой же рантайм как и у сишки.

RazrFalcon ★★★★★
()
Ответ на: комментарий от lovesan

Но мы об использовании, или о том, какие проблемы с типами в бидоне?

У питона те же проблемы, что и у всех остальных популярных динамических ЯП.

RazrFalcon ★★★★★
()
Ответ на: комментарий от Hertz

Хотя я не лиспер, у меня ракетка, кложурка…

Они уже перестали быть лиспом?

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Можете привести хоть одну причину наличия стабильного ABI? И я не про воображаемый мир, а про реальность, где все языки будут общаться через убогий C ABI ещё лет 50.

Я чуть чаем не подавился щас. Вот мы пишем ядро ОС, допустим. Там туда-сюда структурки гоняем между ассемблером и неким языком Blub. Так это что, надо постоянно маршалить эти структурки в Си-совместимое представление чтоли? Если для юзерспейса это еще ладно, и то, не всегда красиво и производительно выходит, то в ядре или на железе то как?

Какой ещё рантайм? У C++, Rust, D (который betterC) такой же рантайм как и у сишки.

Ничего подобного. C++ тому же, чтобы работать с исключениями, например, надо свой специальный рантайм.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Ответ немного предсказуем.

Нет. Это ты предсказуем своим незнанием темы в которой пытаешься выглядеть специалистом.

WatchCat ★★★★★
()
Ответ на: комментарий от WatchCat

Ну я вот вопрос задал, пусть риторический.

Если бы компилятор раста не умел скажем сложение float преобразовывать в SSE инструкции, можно ли было бы это добавить как-либо, не модифицируя код самого компилятора и соотвественно не пересобирая его? Ответ - нет.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Макросы это макросы, а модификация компилятора это несколько другое.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Ну я вот вопрос задал, пусть риторический.
Если бы компилятор раста не умел скажем сложение float преобразовывать в SSE инструкции, можно ли было бы это добавить как-либо, не модифицируя код самого компилятора и соотвественно не пересобирая его? Ответ - нет.

Лисперы они все такие тупые, но с апломбом?
Ты даже погуглить нормально не удосужился, а уже спецом себя объявил.
Даю наводку.
Хинт 1 - rustc позволяет подключать внешние плагины.
Хинт 2 - rust позволяет инлайнить ассемблерный код.

Сложить 1+2 сможешь?

WatchCat ★★★★★
()

нам и C++ хватает

Это да, но блин как задрала скорость компиляции! Не знаю как там Раст, но представился мне случай поколымить с разработкой одной опердени на C# - о боже мой, как оно быстро компиляется, я от такого прямо за пару ночей налабал, потом еще пару недель втыкал и мариновал заказчика, что бы не вышло слишком быстро, а то не солидно. С++ проект подобного размера у меня есть, компилируется час, а тесты к нему еще 2.

zendrz ★★
()

Ответ прост: для прикладных задач нужны не мега фичи по отдельности, а фичи, работающие вместе.

чрезмерно переусложненный язык

Для лисперов всё, что имеет типы — черезмерно переусложнено.

Потому что вот есть языки программирования, ограничивающие пользователя практически никак

...и не позволяющие статически задавать ограничения, чтобы большая кодовая база не превращалась в тыкву.
Ну да, в этом же весь лисп.

quantum-troll ★★★★★
()
Ответ на: комментарий от WatchCat

Я посмотрел про плагины специально, но нигде не нашел ответ на следующий вопрос, еще раз:

Как мне сделать чтобы выражение

x+y

генерировало те инструкции которые я хочу, а не те которые зашиты в код компилятора rustc?

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

генерировало те инструкции которые я хочу, а не те которые зашиты в код компилятора rustc?

так надо llvm-backend смотреть для этого, не?

zendrz ★★
()
Ответ на: комментарий от quantum-troll

Для лисперов всё, что имеет типы — черезмерно переусложнено.

Ортогонально типизации вообще. Кстати, в CL вобщем-то типы тоже существуют, куча их.

Если брать статику, то Haskell вон довольно простой язык, несмотря на статическую типизацию. А раст переусложнен.

…и не позволяющие статически задавать ограничения, чтобы большая кодовая база не превращалась в тыкву.

Вообще говоря, в лиспе как раз можно какие угодно статические ограничения наворотить, макросами. Можно даже упороться и написать синтаксис «как в хаскеле» ридер-макросами(так кстати первая реализация хаскеля и была сделана).

lovesan ★★
() автор топика
Ответ на: комментарий от zendrz

То есть мне даже не код rustc надо менять, а код llvm? И потом переконпиливать эту здоровую дуру? И ломать все другие llvm языки ради одного раста? Нет, спасибо.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

И потом переконпиливать эту здоровую дуру?

зато она на C++ :) А если серьезно хоть и немного оффтопично, то потроха llvm просто скааааазка по сравнению с GCC. Можно приписать это достоинство языку, кстати :) (но скорее, профдеформации плюсовиков его писавших, зад8роченных на нормальной архитектуре и опыту прожитых лет с GCC-only)

ломать все другие llvm языки ради одного раста?

сомневаюсь что оно не стендэлон

zendrz ★★
()
Последнее исправление: zendrz (всего исправлений: 1)

Нет, извините, мне когда надо будет close to metal - я пойду сишку возьму. Которая реально, и Close To Metal, и со стабильным ABI, так важным для низкоуровневого программирования, и так далее.

Когда форумные горлопаны, вроде вас, которые не могут писать нормальный код, начинают говорить «я лучше сишку возьму», то мне становится страшно.

Нет уж, лучше вам в руки дать Rust вместо чистого Си. И, уж тем более, вместо C++.

eao197 ★★★★★
()
Ответ на: комментарий от maloi

джава даже близко не дает тех гарантий что дает safe-код в rust

Но ведь safe-код в rust не даёт никаких гарантий

fsb4000 ★★★★★
()
Ответ на: комментарий от eao197

Нет уж, лучше вам в руки дать Rust вместо чистого Си. И, уж тем более, вместо C++.

На Си как раз гораздо проще и приятнее писать, чем на этих уродствах. Да еще и кода меньше получается.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Простота хаскеля обратна пропорциональна количеству включённых расширений.

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

В С++, говорят, тоже всё можно сделать шаблонами. А в итоге всё как обычно.

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

А в итоге всё как обычно.

Да читал я этот бред. Нет никакого Lisp Curse, просто была AI Winter, а потом все ударились кто в жабу кто в бидон.

Если бы какой-нибудь Google взял и завтра начал топить за CL, количество лисперов и библиотек на лиспе возросло раз эдак в тыщу. К сожалению гуглы щас ударились в изобретение языков для дебилов.

lovesan ★★
() автор топика
Ответ на: комментарий от WatchCat

Всмысле?

Я не макрос хочу написать, я хочу модифицировать то как компилятор обрабатывает существующие оператор в случае с float, без всяких макросов.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

facepalm.jpg
А ты ещё говорил что читал про плагины.

Плагин в rustc возвращает AST, в AST есть InlineAsm.
Так лишперам понятно?

WatchCat ★★★★★
()
Ответ на: комментарий от lovesan

Ничего подобного

Жду пруфца.

C++ тому же, чтобы работать с исключениями, например, надо свой специальный рантайм.

Такими темпами и longjmp в Си - исключение.

RazrFalcon ★★★★★
()

Посмотрел я этот ваш Rust

Может ты другой язык смотрел? В тексте упоминаний особенностей Rust ровно ноль штук (да, есть одно ключевое слово unsafe, но его тема абсолютно не раскрыта — что это такое и почему это плохо(хорошо,ужасно,великолепно, нужное подчеркнуть)). Обзорщик 80го левела. Или ты так скор решил понабивать, можно ведь каждый день по теме создавать, просто меняя Rust на любой другой язык (ведь смысл текста не поменяется от слова совсем)?

gremlin_the_red ★★★★★
()
Ответ на: комментарий от lovesan

Сейчас бы доверять рейтингу, в котором JS не на первом месте.

Лиспы довольно популярны

Даже раст в десятки раз популярнее.

RazrFalcon ★★★★★
()
Ответ на: комментарий от gremlin_the_red

можно ведь каждый день по теме создавать, просто меняя Rust на любой другой язык

Не палите контору!

RazrFalcon ★★★★★
()
Ответ на: комментарий от lovesan

На Си как раз гораздо проще и приятнее писать, чем на этих уродствах.

Только вот мало у кого получается сделать при этом не падающий и не текущий код.

Да еще и кода меньше получается.

Вам ведь не составит труда показать пример: мол, вот на чистой сишечке две строки кода, а на богомерзком Rust-е – 100500?

eao197 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Даже раст в десятки раз популярнее.

В воображаемом мире, наверное.

Сейчас бы доверять рейтингу, в котором JS не на первом месте.

А с чего он должен быть на первом месте?

lovesan ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.