LINUX.ORG.RU

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

 


0

5

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

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

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

Потому что без этого обезьяны наловчились изготавливать автомобили, которые могут ехать только внутри сборочного цеха

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

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

Ну-ну, слабо вот так «обезъянкой» назвать человека который тебе зарплату платит? Конечно слабо, ты же только на форуме такой смелый.

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

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

надо хорошо заплатить.

Кому, слушателю курсов «ынтерпрайная нода для дебилов за полгода»? Прошли те времена, стандартизованных обезьян выращивают стадами на говне, как пангасиуса.
И программисты не платят мне зарплату, ты что-то перепутал. Они вообще никому не платят зарплату, это наемный заменяемый персонал.

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

Когда у девопса зарплата в полтора раза выше мидлокодерской, ему глубоко плевать, кто там что считает.

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

И программисты не платят мне зарплату, ты что-то перепутал.

Скажите любезный, а вот если завтра вдруг исчезнут с лица Земли все программисты, как плохие так и хорошие - вы блин что админить-то собираетесь?

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

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

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

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

Во-вторых, с исчезновением программистов софт никуда не денется.

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

Какая интересная клиника.

В-третьих, пффф, надо будет - сам кодить пойду, и другие пойдут, вот делов-то.

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

Я все правильно понял?

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

Только в том, что девопсом быть ещё унизительнее. Даже название стрёмное — то ли пёс, то ли девка. Для студента ещё ниче так занятие, а для взрослого человека просто позор. Старорежимный одмин хоть живым людям помогает — нажимает Any key и всё такое. А это какой-то робот для деплоя.

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

Какая интересная клиника.

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

считает программирование унизительным занятием

Это слишком широкое обобщение. Я считаю преобладающее большинство программистов тупым быдлом с неадекватной самооценкой, выращенной на чужие деньги, в частности на дельту между локальными и аутсорсными зарплатами. То есть, обезьянка, которой от щедрот из-за бугра падало больше бананов просто потому, что там больше бананов, приписала себе какие-то особо выдающиеся качества, например УМ бггг, и начала себя нести. Сейчас, когда бледных обезьянок ЛЕГКО заменяют на смуглых, в их глазах помалу появляется некоторое понимание. Но пока не у всех, и поэтому иногда еще попадаются люди, всерьез пишущие, что программисты кому-то платят зарплату. Ага, а тягловый скот кормит крестьян, и поэтому каждый мерин должен всех поучать ггг.

Я все правильно понял?

Когда это такое было, чтобы программист с первой или второй попытки все правильно понял.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 3)
Ответ на: комментарий от bread

DevOps это как SpecOps, звучит как чоткий и резкий спецназ ойтишных операций.
А вот programmer это то ли человек, то ли кусочек текстолита с проводками с алишки за три бакса.

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

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

При этом что характерно сидишь в Development разделе.

Когда это такое было, чтобы программист с первой или второй попытки все правильно понял.

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

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

Ой, игнор со смайликом и обвинение в шизе. Как сказать «я порван в обугленные тряпки» минимумом иносказаний.
И это притом, прошу заметить, что я писал всё с уважением к оппоненту, который пытался меня уесть, без личных инвектив.
Программист.

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

Спасибо что заметил, я временами путаю термины:

This is called type inference. The typing is still static, but you leave the compiler figure out what the type of an expression is. Specifically auto x = 5;, at compiler time, is translated to int x = 5;. For this very reason you have always to provide an unambiguous expression at initialization. For example auto x; wouldn’t work.

Всего-то пять страниц срача прошло.

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

Аналогично с концепциями - очень сильно ощущение, что концепт владения брялася с правил формирования контекста JS. ООП? А вот то, что было изначально и что получилось в Rust - достаточно близко. Async/await? Ощущение, что калька. И так в очень многих вещах

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

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

продолжаю утверждать, что перл концептуально намного проще питона

Концептуально это когда число есть число, а строка есть строка. А не когда массив может стать хэшем внезапно. Что, вектор/скаляр, каво, блеать? Идите в жопу со своей концептуальностью. Зачем она нужна, если из Путона лезешь в Хаскель и не ощущаешь дискомфорта, что у тебя там были удобные трансформирующиеся скаляры с векторами, а тут тебе по лицу типами бьют? Используемые концепции должны усложняться, а не кардинально заменяться для простоты освоения более сложных технологий ☝️

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

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

Есть вещи, которые нужны всем от джавоскрипта, но их не добавляют в новые стандарты? Что-то уровня модулей в плюсах.

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

Меня с самого начала предостерегло то, что хеллоуворд сделан из макроса.

Ну ты же разобрался, почему в данном случае Расту нужен макрос, и это корректная и не высосанная из пальца необходимость, ведь правда?

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

ну ты ж наверное в курсе, что разработка по сути ушла с js на typescript? Почему, как думаешь?

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

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

растоман, обвиняющий кого-то в тупизне - это что, такая шутка?))

И что вообще в принципе есть такого, что нужно понимать в этом обмазанном внешней кодогенерацией, компилирующем хелловорлды по полчаса говнище?))

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

Я не обвиняю, я констатирую медицинский факт твоей тупости. Тебе пытаться что-то объяснять, хуже чем бисер перед свиньями метать, ты ж только кукарекать и можешь.

Прежде чем с тобой, имбецилом, можно будет хоть о чём-то разговаривать, ты прочитай растбук хотя бы, я даже не заикаюсь про что-то более академичное, типа ML семейства, откуда раст и растёт, потому что ты своим межушным ганглием даже не поймёшь слов которыми написано.

А уже после растбука можешь пытаться осилить Прата, Саттера и может быть Страуструпа. Про Александреску даже не заикаюсь, его книги на твоём уровне развития только навредят.

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

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

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

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

Насчёт typescript, недавно выяснил что можно так:

  1. Пишешь функцию, которая принимает boolean
  2. Берёшь внешнюю фукнцию, которая возвращает string и используешь для вызова первой.
  3. typescript ничтоже сумняшеся переводит это в js, которого, в свою очередь разница между false и «false» ничуть не тревожит.

Вывод: не расслабляйся!

Что до вашего вопроса, то подозреваю, что на typescript подсказки/автодополнения лучше работают, вот на них кодеры и покупаются.

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

однако факт: раст в ядре(и не только в линуксовом) официально, а плюсы нет, хотя да решение больше политическое

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

я про си говорил, плюсы да системны, у них есть продвинутая типизация,

Боже, что я вообще читаю. Какая «продвинутая типизация», что к чему.

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

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

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

людей которые способны писать на плюсах корректно работающий код - исчезающе мало(не говоря уж про безопасно работающий код)

Да?

Особенно, если из-за особенностей процесса требуется писать на 98 стандарте

На дворе 2023 год. Если кому-то нравится колупать заскорузлые и невменяемые С с классами – пусть колупает. При чем тут С++ – непонятно.

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

потому что весь зоопарк генераторов задолбал, так что статическое метапрограммирование это правильно

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

ЗЫ ну и с макросами в Rust проще, чем в C++, где это тупо чёрная коробка.

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

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

Я могу на Rust написать что-нибудь, но сопровождать это потом после меня будет проблемно.

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

В соседнем топике мыши грызут кактус: как так сделать, чтобы ошибки обрабатывать. Никак: единственный скейлящийся способ это обертка в dyn Error. Все остальные варианты приводят к комбинаторному взрыву и жирным Result, возврат которых Rust кстати не умеет оптимизировать.

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

Если денег куры не клюют, то в целом эту проблему можно даже в достоинство вывернуть - кто смог освоить Rust - тех сразу можно записывать в элиту программистов

Rust это тривиальный язык, в нем нет ничего сложного. Лайфтаймы, сводящиеся к 'a дольше 'b, значит объект с 'a можно использовать на протяжении лайфтайма 'b? Мутабельность, сводящаяся к «один писатель или много читателей»?

Или сложны поломанные концептуально Pin, unsafe, async? Да, может быть есть какая-то сложность, вносимая за счет того, что они сломаны – стоматологу тоже тяжело лечить зубы через задний проход.

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

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

Ты совсем зеленый, либо фанатик. Время компиляции serde это плата за макросы. Никакого отношения к «надежности и производительности» это не имеет.

Потому что каждый макрос нужно скомпилировать и запустить. И запуск макроса это очень недешево, в особенности для serde, которая строит дерево того кода, к которому применяется (см. syn). И это не параллелизуется по определению, так как код, выплевываемый макросом, необходим для дальнейшего анализа.

Про исполнение любого кода я уже написал - это не проблема языка.

Нет, это проблема языка. У нормальных языков компилятор не исполняет загруженные из интернета блобы. Даже если зависимость скомпрометирована, это затронет рантайм, но никак не сборку – но Rust это не нормальный язык.

Быстрее станет, значит макросы/статическое метапрограммирование быстрее обрабатывать будет.

Слишком жирно.

За кодогенерацию в rustc отвечает именно LLVM.

За питание в хвосте отвечает именно собака.

Но даже безотносительно отношений между фронтендом rustc и LLVM, это типичный бред из методички. Потому что де-факто кодогенерация в понимании rustc это высер гигабайтов (не фигура речи) неоптимизированного кода в LLVM. Ни к какой другой кодогенерации rustc отношения не имеет. То, что далее делает LLVM, полностью вне досягаемости rustc.

Кстати, объем генерируемого rustc кода, и, как следствие, долгое время компиляции – это все результат того, что rustc это никудышный фронт. Попробуй на досуге посмотреть, что генерирует clang, и что генерирует rustc для примерно одинакового кода.

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

Так какое отношение «система типов» имеет к компиляторному "if type does not implement Send { /* высрать портянку, что нужен Send */ } "?

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

в котором статического метапрограммирования не существует как такового

Я знаю, что нет: макросы, const и шаблоны всё равно в любом случае лучше, чем внешние генераторы. C++ конечно король шаблонов.

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

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

Время компиляции serde это плата за макросы

И отсутствие внешних генераторов, я же писал два раза.

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

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

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

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

Никто не мешает сделать constexpr запускатор блобов из интернета на C++ на патченных стандартных библиотеках (добавить constexpr контекст где нужно)

Если бы у бабушки был «constexpr запускатор блобов из интернета на С++», она была бы дедушкой.

Даже предполагая, что такой запускатор кто-то сделал, это будет не С++. И изменений потребуется значительно больше, чем подпатчить STL.

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

Время компиляции serde это плата за макросы

И отсутствие внешних генераторов, я же писал два раза.

Это даже забавно.

serde это и есть внешний генератор. То, что вместо стороннего DSL он использует Rust, не делает его сколь-нибудь «встроенным». И медленный такой он в том числе потому, что он внешний.

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

А ты готов показать, что количество CVE зависит исключительно от количества «хороших» программистов (и никак не от количества «плохих», сложности проекта и предметной области, условий разработки и т.д.)?

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

Хотя бы на количество CVE в крупных проектах посмотри. Где все вот эти хорошие программисты?

Справедливости ради, большинство CVE откровенно «ни о чем», их описывают и выкладывают только из-за того что «security research» стало профессией, появились люди которые сидят на зарплате в крупной корпорации и занимаются поиском уязвимостей.

Блишайшая аналогия - британские ученые из анекдотов.

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

Третья сторона, что из-за кучи слоев абстракций от железа до софта могут происходить вещи вроде недавнего Spectre, когда сама уязвимость на уровне железа (причем концептуальная) а нашли и эксплуатировали ее из Javascript.

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

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

Ну тут таки нюанс - CVE хоть и могут быть в массе хрен пойми чем, те баги, что привели к уязвимостям эксплуатируемым локально или удалённо не отменяют. А причина в большинстве случаев это либо buffer overrun, либо use-after-free. Благо начиная с 11 стандарта в std занесли smartpointers и они даже стали более-менее регулярно применяться. Другое дело, что за их неиспользование никто по рукам, кроме старшего товарища не даст.

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

Если каждый buffer overrun считать закладкой, то лучше сбежать в тундру пасти оленей. Кукуха здоровее будет.

Третья сторона, что из-за кучи слоев абстракций от железа до софта могут происходить вещи вроде недавнего Spectre, когда сама уязвимость на уровне железа (причем концептуальная) а нашли и эксплуатировали ее из Javascript.

Это уже третий вопрос. Баги в железе вываливаются за пределы разговора о языках программирования.

Dark_SavanT ★★★★★
()