LINUX.ORG.RU

Сложности сопровождения rust

 


0

5

Есть такой феномен, где системные кодеры с большим опытом (это важно) отвергают раст, например автор зига, еще до зига написал, что надо быть безумцем чтобы на этом писать, ну и некоторые другие люди с большим багажом знаний в солидных компаниях хейтили раст, вероятно за какую-то сложность. Понятно что тут речь не про очередных «не осилили» и кривую обучения, а реально опытные люди видят в расте некую системную сложность.

У меня возник вопрос к опытным кодерам - о какой «сложности» они говорят? Может быть код становится сложнее поддерживать или просто у них синдром утёнка, или какие еще проблемы есть в сопровождение раста при длительной разработке?

системные кодеры с большим опытом

Сиситемные кодеры с большим опытом – это люди, которых надо игнорировать в первую очередь, потому что как правило они кроме C ничего не умеют, а сам C они тоже не умеют хоть и считают наоборот.

У меня возник вопрос к опытным кодерам - о какой «сложности» они говорят? Может быть код становится сложнее поддерживать или просто у них синдром утёнка, или какие еще проблемы есть в сопровождение раста при длительной разработке?

Самая большая проблема не в самом Rust, а в экосистеме состоящей из тонн мелких библиотек, которые устаревают быстрее чем ты успеешь пёрнуть. Каким-то неведомым мне образом, на Rust набежало куча фанатов JS (примерно как на Golang набежали пхпшники) и, соответственно, вся экосистема полетела в тартарары.

Но если фильтровать используемые библиотеки и не делать говна, то проблем с поддержкой нет.

P.S. Годный вброс. Надеюсь, хотя бы три-четыре страницы срача выйдет.

hateyoufeel ★★★★★
()

Тут всё зависит от личных пристрастий. Можно не написать ни единой строчки на Раст и не видеть в нем ничего сложного. А можно иметь «большой багаж знаний в солидных компаниях», не написать ни единой строчки на Раст и хэйтить его 😁

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

Сиситемные кодеры с большим опытом – это люди, которых надо игнорировать в первую очередь

Но если фильтровать используемые библиотеки и не делать говна, то проблем с поддержкой нет.

Люди с опытом старпёры необучаемые они уже ничего не понимают, новички тупые ещё они ещё ничего не понимают! И кого тогда слушать? Тех кому раст зашёл и УМВР, не делай плохо и всё будет хорошо, главное библиотеки фильтровать! :D

Серьёзно?

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Понятно что тут речь не про очередных «не осилили»

Именно что не осилили. Мозг закостенел на сишке и любые нововведения воспринимаются в штыки.

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

P.S. Годный вброс. Надеюсь, хотя бы три-четыре страницы срача выйдет.

Забавно, но я серьезно.

Я тоже серьёзно вбрасываю всегда. Если несерьёзно к этому подходить, результат удручает – максимум пара страниц срача. А вот если серьёзно осилить матчасть и вбросить как надо, можно получить аж 20-30 страниц!

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

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

с периодичностью раз в неделю,две слышны эмоции счастливцев: Йоптвмть, чем в rust заменить 3 строчки C++ чтобы менее 5-ти страниц текста..вот примерно поэтому :-)

MKuznetsov ★★★★★
()

Именно синдром утёнка, ручки то тянутся к привычным и порочным сишным идиомам, а раст за такое больно бъёт по рукам, сложность в том что раст заставляет заранее правильно продумывать архитектуру(как вообще то и полагается для системного проганья), не получиться сразу сесть и говнякать (без ансейфа по крайней мере), зато потом легко рефакторить.

zurg
()
Ответ на: комментарий от hateyoufeel

Хороший срач зависит от оппонентов срача, когда горячие головы встречаются вместе, не думаю, что пост объединит «лучших», так как это даже не новость.

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

byte1823
() автор топика

Ознакомься:

https://hackernoon.com/programming-in-rust-the-good-the-bad-the-ugly-d06f8d8b7738

https://www.reddit.com/r/ProgrammingLanguages/comments/h8e5t7/my_thoughts_on_why_rust_isnt_well_designed_or/?rdt=48973

https://hirrolot.github.io/posts/rust-is-hard-or-the-misery-of-mainstream-programming.html

https://pvs-studio.com/en/blog/posts/0324/

Из последней статьи по ссылке:

So, to sum it up, personally I will be investing my time into studying C/C++ rather than Rust in the next 5 or so years. C++ is an industrial standard. Programmers have been using it to solve a huge variety of tasks for over 30 years now. As for Rust and stuff like that - they are just odd toys with vague future.

Я сам лучше не скажу.

alex0x08 ★★★
()

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

mydibyje ★★★★
()

Ну, очевидно, у большинства опытных кодеров будет иметь место синдром утёнка. Так как если у тебя большой опыт, тебе легко делать всякое разное, а тут новый язык программирования с сильно другой парадигмой. И твои года опыта идут нафиг (на самом деле не совсем, но первое время твоя продуктивность будет на уровне джуна/мидла). Психика защищается и обесценивает новую технологию. Так что, я думаю, надо смотреть на отзывы «людей с опытом», которые хотя бы годик потыкали Rust, а не тех, кто сдался спустя неделю (и тем более кто даже не пытался). Ибо слишком большой шум от защитных психологических реакций.

А так, я вижу три возможных причины:

1) Так как язык моложе, меньше качественных либ. Человек привык, что для задачи X есть хорошо известная либа Y. Он приходит в Раст, а там этой либы нет, а есть на выбор кривые биндинги к ней и какая-то ноунейм либа на расте (в которую ещё не успели впилить все фичи).

2) Нужно сильно доверять оптимизатору, так как ручные оптимизации в 90% случаев unsafe портянки. Кстати, тут большой опыт на C/C++ может играть боком, так как, условно, лет 20 назад компиляторы оптимизировали совсем не так как сейчас. И если человек начал свою карьеру в то время, то он теперь на автомате делает всякие микрооптимизации, которые сегодня в половине случаев ни на что не влияют, но компилятор не запрещает их делать. А Rust сразу бьёт по рукам: «если ты уверен, что это узкое место, пиши unsafe, если не уверен, то не возникай и пиши как все».

3) Нету нормального ООП (из-за отсутствия наследования). Актуально для переходящих на Rust плюсовиков, ибо в C с ООП всё гораздо хуже.

А Zig я принципиально даже не пробовал из-за запрета табов на уровне компилятора.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от zurg

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

А ты не путаешь подгонку реализации задачи под синтаксис и особенности работы языка с архитектурой? Архитектуру ПО можно и на листе бумаги спроектировать.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от KivApple

да, только предлагаю правильным и нормальным называть то ООП в котором как раз нет наследования реализации )

zurg
()
Последнее исправление: zurg (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Люди с опытом старпёры необучаемые они уже ничего не понимают

Хоть обучаемые, хоть необучаемые, никто не понимает зачем им эта дрисня. В первую очередь потому, что люди работают в основном с давно написанным кодом. И вот куда и зачем там приткнуть раст, это сложно рационально обосновать.

bread
()
Ответ на: комментарий от hateyoufeel

Каким-то неведомым мне образом

Чего же тут неведомого? Любая глобальная язычковая пакетная система автоматически превращается в объективную помойку.

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

В первую очередь потому, что люди работают в основном с давно написанным кодом.

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

iron ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Какая подгонка? причём тут синтаксис? Мы же хотим более правильную архитектуру. В этом отношении у растовской системы типов есть положительный побочный эффект - на нём крайне неудобно писать сильносвязанный систайл лапшекод(или когда, например, пытаются в лоб переписать сишный код), ты просто вынужден будешь нагородить и запутаться в конструкциях типа Rc< refCell > или обмазаться ансейфом, сделав из раста сишечку с синтаксисом раста, и это основная причина почему в программе на расте может быть много необъективного ансейфа - «ниасилившие» сишники ( да мы тоже так можем обзываться )

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

Потому что на расте не пишут системный код. На нем практически невозможно писать системный код. Все системное, что «переписывают» на расте, раздувается в разы, если не десятки раз.

После С++ раст чрезвычайно куц и невыразителен, после Go – многословен, переусложнен и слишком низкоуровневый, после С – многословен, переусложнен ислишком высокоуровневый.

Раст это не язык, это набор костылей и подпорок. Все, что у него есть – это набор правильно выбранных дефолтов, которые он может себе позволить, так как не беспокоится об обратной совместимости.

Коммьюнити раста это оголтелые неосиляторы с синдромом Даннинга-Крюгера и махровые пропагандисты.

Siborgium ★★★★★
()

Ладно, раз уж пошла такая пьянка - добавлю от себя.

Что такое вообще код?

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

Что может этому помешать? Изменение среды выполнения: ОС, железо, библиотеки.

Как снизить влияние среды?

Варианта всего два: либо свой рантайм либо абстрагирование на уровне кода - чтобы везде и всегда собиралось.

Первый вариант это то что реализуют Java и .NET, второй это Си.

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

Где теперь этот Ruby? В земле. По крайней мере новых проектов на нем я не видел уже лет так 5.

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

Нет, это не антипаттерн. В джава или С-с-классами мирке – возможно. Для метапрограммирования же оно необходимо. И даже для обычного, вполне утилитарного программирования – CRTP например.

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

Каким-то неведомым мне образом, на Rust набежало куча фанатов JS

может быть, это не случайно, и как раз говорит многое о Расте? Есть рекламная витрина: безопасный ЯП, не будет багов при работе с памятью! А реальная ценность в том, что это решает в основном проблемы яваскриптеров.

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

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

он заставляет кодировать в определённом ключе. Архитектура языку ортогональна.

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

а тут новый язык программирования с сильно другой парадигмой

какая, блин, «сильно другая парадигма»?!

Paradigms	

    Concurrent, functional, generic, imperative, structured

а теперь открываем про C++:

procedural, imperative, functional, object-oriented, generic, modular

да одна и та же парадигма, плюс/минус.

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

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

Кстати, на расте как и на руби любят писать веб фреймвоки. Совпадение? Не думаю.

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

То что есть понятие владения на уровне языка. И надо писать с учётом этого и подсказывая компилятору. На C/C++ кто кого имеет существует только в голове программиста.

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

предлагаю правильным и нормальным называть то ООП в котором как раз нет наследования реализации

В этом что-то есть. Объектное проектирование в большей степени про инварианты, но по началу большинство лепит наследование где не попадя. А потом на собеседованиях спрашивают мутную дичь в духе:

в виртуальном деструкторе вызывается виртуальный метод и может тут что-нибудь сломаться?

Может, не может, на за попытку такое написать надо сразу по рукам бить) В 9 из 10 случаях композиция предпочтительней наследования. В композиции время жизни объектов легко прослеживается и нет необходимости городить сложную очистку.

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

Есть такой замечательный термин «batteries included» , пришедший как раз из Ruby и описываемый подход противоположный проектированию языка и всего окружения (прежде всего в Java).

Суть в том что в язык и его «stdlib» просто накидывают фичи по мере интереса пользователей. Потом этот же подход взяли на вооружение Microsoft и точно также начали пихать всевозможную дичь в свой .NET и C#, чей синтаксис по навороченности стал приближаться если не к Хаскеллу то хотя-бы к Скале.

alex0x08 ★★★
()

У меня возник вопрос к опытным кодерам - о какой «сложности» они говорят? Может быть код становится сложнее поддерживать или просто у них синдром утёнка, или какие еще проблемы есть в сопровождение раста при длительной разработке?

Проблема выдуманная, если не раздувать дерево зависимостей до невероятных размеров.

cumvillain
()
Ответ на: комментарий от ac130kz

люди с 5 летним опытом C++

Исходя из того что я узнал за свою карьеру, реальный опыт в С++ с 10 лет только начинается. А истинное мастерство и дзен приходят после 20-25 лет практики.

Java/C#/Node.js - тут да, три года и ты уже король мира и сеньор архитект, но плюсы это про другое.

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

Есть такой замечательный термин «batteries included» , пришедший как раз из Ruby и описываемый подход противоположный проектированию языка и всего окружения (прежде всего в Java).

Забавно, я первый раз этот термин услышал применительно к Python. При том не к языку, а к его библиотеке.

Так что, боюсь, свой тезис вы не раскрыли.

В Ruby было жуткое наследие Perl-а перемешанное с удачными заимствованиями из Smalltalk. Но это, как по мне, не тянуло на попытку удовлетворить всех.

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

Ну я даже не знаю, вот что нашлось за 5 минут по фразе «ruby batteries included»:

https://www.endpointdev.com/blog/2013/04/batteries-included/

https://www.softdevtube.com/2014/03/28/ruby-batteries-included/

https://speakerdeck.com/darkhelmetlive/ruby-batteries-included

https://verboselogging.com/2013/05/01/ruby-batteries-included

https://rubygems.org/gems/rails_event_store/versions/2.9.1

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

с удачными заимствованиями из Smalltalk

array = [1, 2, 3, 4, 5, 6]
array.each { |x| puts x }

Это по-твоему нормально или удачно?

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

какая, блин, «сильно другая парадигма»?!

Все эти «парадигмы» надо выкинуть нахрен из википедии, потому что там херота написана. Т.е. да, на C++ можно писать в функциональном стиле, только:

  1. Так никто не делает
  2. Ты не найдёшь библиотек
  3. Тебя проклянут коллеги за уродливый код
  4. Ты будешь страдать
hateyoufeel ★★★★★
()
Ответ на: комментарий от alex0x08

чей синтаксис по навороченности стал приближаться если не к Хаскеллу то хотя-бы к Скале.

Но у хаскелла очень простой синтаксис…

Впрочем, ты меня всё равно забанил тут и не прочитаешь.

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

Ну я даже не знаю, вот что нашлось за 5 минут по фразе «ruby batteries included»:

А по «python batteries included» поискать не судьба?

https://peps.python.org/pep-0206/ – 2000-й год:

Batteries Included Philosophy

The Python source distribution has long maintained the philosophy of “batteries included” – having a rich and versatile standard library which is immediately available, without making the user download separate packages. This gives the Python language a head start in many projects.

И да, тут даже и 5 минут не нужно, буквально 5 сек.

Это по-твоему нормально или удачно?

И нормально, и удачно. По крайней мере можно многострочные лямбды делать, в отличии от Python.

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

А по «python batteries included» поискать не судьба?

Петон смог пережить эту стадию в развитии и не скатиться. Петон ныне популярен и переживает второе рождение благодаря Data Science, AI и нейросетям.

Руби фактически умер, проекты на руби давно и массово переводят на ту же Java (в том числе моими руками)

Суть подхода «batteries included» - ошибочна, так делать нельзя. Это плохо.

И нормально, и удачно. По крайней мере можно многострочные лямбды делать, в отличии от Python.

Стесняюсь тогда даже спросить: что же по-твоему мнению тогда хорошо?

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

Петон смог пережить эту стадию в развитии и не скатиться.

Давайте будем последовательны:

  1. Термин «batteries included» появился не для Ruby. Здесь вы, мягко говоря, ошиблись.

  2. Поскольку Python продолжает здравствовать, то это означает, что «Суть подхода «batteries included» - ошибочна» – это еще один момент в котором вы, мягко говоря, ошиблись еще раз.

Стесняюсь тогда даже спросить: что же по-твоему мнению тогда хорошо?

Как в Ruby хорошо.

Но я так и не понял, в чем Ruby пытался угодить всем.

Однако, не трудитесь, поскольку у вас каша в голове (см. выше), то ответ уже не интересен.

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

Думал не выскажусь в топике. Но, люто вас плюсую. Сам был нодером лет пять. И… Rust имеет в себе больше общего с JavaScript, чем с любым другим языком. JS программисты на него легко пересаживаются, так как все основные концепты у языков одинаковые. По-сути нодеры просто получили возможность писать на уровень ниже не вникая в С++, при этом достаточно безопасно - компилятор бьет по рукам за дичь. После года написания на Rust мелких утилит для себя и пет проектов - осталось ощущение жесткое, что это JS здорового человека и с типизацией. Rust не системный язык, он не про написание ядер или драйверов ИМХО. Даже, кстати, cargo очень напоминает npm. Rust это про переписать nodejs приложение для прироста производительности в однопоточных сценариях и с возможностью отрефакторить заодно

small-entropy
()
Ответ на: комментарий от eao197

Термин «batteries included» появился не для Ruby. Здесь вы, мягко говоря, ошиблись.

А я настаиваю что для Ruby и в Ruby, для чего и привел примеры со ссылками.

Поскольку Python продолжает здравствовать,

Он эту стадию просто перерос и стабилизировался. Давно уже не добавления «ломающих» фич в язык, не считая перехода 2.х -> 3.x.

в котором вы, мягко говоря, ошиблись еще раз.

Вам важен факт что я в чем-то ошибся, правильно понимаю? В этом суть? Тогда сообщаю что мне вообщем-то глубоко похеру, поскольку давно уже вырос и чье-либо мнение в принципе не волнует, ни по каким вопросам.

Еще я уже был женат, поэтому все плохое обо мне - мне уже сообщили (женщины), ничего нового вы не добавите. При всем желании.

alex0x08 ★★★
()