Добро пожаловать в тред, посвященный гарантиям, обещаниям, владению, заимствованию и другим концепциям языка Rust! Предыдущий тред : >>3407697 (OP)
Rust — blazing fast язык для системного программирования без segfault'ов и с гарантиями потокобезопасности. Он позволяет писать безопасный и эффективный код, который легко поддерживать и масштабировать.
В этом треде мы объясняем базовые и продвинутые концепции языка, а также программирования в целом. Поможем новичкам, подскажем, что выбрать для веба, игр или, прости господи, блокчейна.
Растишки. Хочу вкатиться к бэкенд. Нужно для себя, а не для работы по найму (я так понимаю, что в этом смысле в РФ не разгуляешься). Рассматривал разные варианты: PHP, Node.js, Go, Rust (Java и Kotlin не рассматриваю, очень не зашли).
У раста выявил только два минуса для себя: - кривая обучения очень уж крутая (чтобы что-то начать делать в бэке нормально нужно месяцев 12) - долгая разработка в сравнении в другими языками (то, что я сделаю на других языках за 1-2 дня, на расте буду делать неделю или две)
В других языках нашел минусов намного больше. Меньше всего в Go, но он не заточен на сложную бизнес-логику, сделать-то можно конечно, но на костылях и с тяжелой поддержкой в дальнейшем. А мой проект содержит сложную бизнес-логику: бухучет, оперативный учет и т.п. (я сам бухгалтер), которую я планирую годами расширять и совершенствовать. И это будет именно веб-проект со всеми вытекающими (будет даже telegram mini app).
Но экспертных материалов по практическому применению Rust в бэкенде я не смог найти. Как-то все в общих чертах, обзорно, толком полную картину не составишь. Это как в статьях про Python - да он может всё, очень гибкий, можно и в бэк и в ml и в гуй тоже может. А на деле - очень медлительный и очень прикладной, но хорошо для DS и ML (клей для Си в основном).
В концепциях программирования я не профессионал, но умею в VBA, Python и 1С в рамках своих компетенций по профессии). А также немного в CSS, HTML и JS.
Дайте пожалуйста вашу экспертную оценку. Если будет время, напишите пожалуйста развернутый ответ.
>>3453403 От нейродебилов не получилось взять релевантную информацию. Они и про Пиструн мне говорят: О да, это отличный вопрос. Python может решить все ваши проблемы. Огромное сообщество, дохулирд фреймворков...
>>3453411 Так ты знаешь питон, начинай писать на питоне. А не спрашивай дикпики о выборе языка. И еще думай как сделать так чтобы можно было как можно больше делигировать в будущем, наемным макакам, а не самому писать все.
>>3453423 Извини, бро, но неужели ты думаешь, что я не рассматривал этот вариант? Питон не отвечает моим требованиям по производительности. Нужно что-то пошустрее. Хотя бы уровня Node. Но это опять компромиссы. Уже 2 недели в ступоре хожу, читаю, смотрю, слушаю, но так не могу найти консенсус.
>>3453447 Чел. Ты хотя бы мвп запили для начала. А уж потом думай о производительности для своего круда. 100% ты не сможешь одновременно учить все и пилить что-то рабочее. Ты в расте только начнешь изучать лайвтаймы с боровчекером и уже забудешь о своей главной цели из-за когнитивного перегруза.
>>3453388 >У раста выявил только два минуса для себя: Я тебе добавлю третий минус от себя - время компиляции. Попробуй хоть раз скомпилировать ну какой-нибудь скажем форум целиком сделанный на расте и ты охуеешь. А то что ты сказал... Нуууу для меня это не является минусами - 1) "кривая обучения очень уж крутая" - хорошо, меньше всяких тупых детей, рукожопов и случайных людей будет. 2) "долгая разработка в сравнении в другими языками" - мне лично похуй, за меня 70% кода нейронка пишет.
>экспертных материалов по практическому применению Rust в бэкенде я не смог найти Хуёво искал. Заходишь на amazon.com, в поиск вбиваешь слово "rust", категория "books" и там будет писят тыщь этих книг.
>Меньше всего в Go, но он не заточен на сложную бизнес-логику Скорее проблема в тебе, а не в go. Это ты не заточен на сложную бизнес-логику.
>>3453388 Никто не пишет на срасте бек для веба потому что слишком много времени занимает, ты вместо алгоритмов пишешь бойлерпринт и сражаешься с языком. Сервер игры - частично, может быть, чаты - неплохо, почему бы и нет, трансляции поедания кала - вполне рабочая тема.
Бек для веба пишут на ноде, либо жаба если это тырпрайз, всё потому что эти языки позволяют хуякс-хуякс и в продакшн, есть куча встроенных в языки плюшек. А нода/бан/deno ещё и производительные дохуя.
Если хочешь писать бек на компилируемом языке, то во-первых используй zig (этот тред реклама zig на самом деле) потому что бойлерпринта меньше, во-вторых тебе придётся писать ебейшую кучу собственных велосипедов, и я что-то нихуя не уверен что это имеет смысл. Для твоей бизнес-логики придётся самому писать конечные автоматы, сигналы и эвенты, и всё это с аллокацией и структурами данных на массивах. Будешь не только бухгалтером, но и системным архитектором, лолд, готов?
>>3453616 >Никто не пишет на срасте бек ВНИМАНИЕ, ВСЕМ СРОЧНО ПЕРЕСТАТЬ ПИСАТЬ БЭК, АНОН НА ДВАЧЕ СКАЗАЛ ЧТО НА НЕМ НИКТО НЕ ПИШЕТ ВСМЫСЛЕ УЖЕ НАПИСАЛИ ВСЁ!?!?! УДАЛЯЙТЕ!
>>3453644 Блядь, да что угодно https://github.com/jennypeng/ImageBoard Первое что попалось. Тут строчек 300, наверное, основная часть это счётчики, лол, которые можно написать не так уебищно. Думая основная работа с БД, роутами и АПИ для борды занимает строчек 100, не больше.
В пидорасте бойлерпринта просто дохуя. Слишком дохуя для адекватного написания бека.
> Первое что попалось тебе реально при поиске движков борды всё что выдало древнее говно уровня лабы 12 летней давности? попробуй получше поискать, что то реально похожее на борду
> Думая основная работа с БД, роутами и АПИ для борды занимает строчек 100, не больше. ну если дальше уровня лабы не уходить то да
>>3453661 > ахахахаа там буквально 1 форма + просмотр Погоди, что не так? В борде только это и есть. Треды и доски реализуются ещё двумя функциями. > тебе реально при поиске движков борды всё что выдало древнее говно уровня лабы 12 летней давности? Да, гугл в наши дни нихуя не ищет. > ну если дальше уровня лабы не уходить то да Чел, это борда. Тут нет ничего сложного. Прямо совсем ничего. На расте это сложно только из-за того что язык говно.
>>3453686 >Погоди, что не так? В борде только это и есть. блять чел, ну ты глянь хотя бы как борда на которой ты сейчас находишься выглядит и что делает кроме того что просто тебе показывает треды
>Да, гугл в наши дни нихуя не ищет. предлагаешь мне вместо тебя гуглить? точно сам не справишься?
>Тут нет ничего сложного кто тут про сложность говорит? легко != 10 строчек кода, тут есть еще функционал кроме того чтобы тебе хтмл показать + формочку сделать
>>3453693 > блять чел, ну ты глянь хотя бы как борда на которой ты сейчас находишься выглядит и что делает кроме того что просто тебе показывает треды Так расскажи мне что она такого делает, кроме подсчёта статистики и полутра вызовов апи. Ты точно писал борду? Сколько запросов апи у тебя было? > предлагаешь мне вместо тебя гуглить? точно сам не справишься? Да, мне поебать на это дерьмо. > кто тут про сложность говорит? > легко != 10 строчек кода, Если ты пишешь на нормальном языке для бекенда - сложность прямо пропорциональна количеству строк кода. В случае сраста это конечно не так, но это проблема языка. > тут есть еще функционал кроме того чтобы тебе хтмл показать + формочку сделать Это борда. Всё что борда делает - сохраняет и отправляет стринги. Доски, топ тредов и прочая хуйня решаются ещё одной строчкой которая добавляет посты в кэш/бд. Самая сложная часть харчка - это капча.
>>3453719 >Так расскажи мне что она такого делает, кроме подсчёта статистики и полутра вызовов апи. модерация + админка медия (в моем случае) реал тайм постинг базовая безопасность (чтобы не завайпали гомонеграми) настройка борды избранное \ скрытие
>сложность прямо пропорциональна количеству строк кода во дибил
>Да, мне поебать на это дерьмо. ну так а о чем с тобой говорить?
> борда это супер просто 20 строчек кода > хоть один движок видел\писал? > пук среньк, всё просто строчка бд апи формочка > ты хоть понимаешь функционал борды > пук среньк, строчка капча
>>3453750 > модерация + админка Ого, много. Поздравляю, твой апи расширился на один запрос. Вместо пяти стало шесть. Если ты создаёшь команду чмодератеров, то будет семь. Семь апи точек, бля, много... > медия Что медия? Стрим файла это функция на 20 строчек. С буферами работает. Конечно, в пидорасте это будет минимум 1к строк отборного говнокода, но что поделать... > в моем случае) реал тайм постинг Постинг и так всегда реалтайм. Тут всё наоборот, чтобы делать постинг батчами нужно больше кода, да и нахуй это не нужно особо. > базовая безопасность (чтобы не завайпали гомонеграми) Две строчки кода при использовании кук, четыре строчки кода при использовании токена. Много.... > во дибил Речь идёт про нормальный язык бекенда, а не про раст. > ну так а о чем с тобой говорить? Можешь ещё повизжать о том как сложно тебе было писать борду на срасте. > > пук среньк, Сколько вызовов апи было на твоей борде? Напиши мне это, не стесняйся.
>>3453642 >Это хуйня которая занимает 200 строчек в JS для всего сервера и 200 строчек для клиента? Пиздец мощно. Что-то ещё будет? У меня есть проекты на расте. Я пишу бекенд. Что ты хотел-то? Вот описание проекта ---> https://pastebin.com/raw/RxjYq1iW Вот пример кода ---> https://pastebin.com/raw/JBerjWZj Там около ~130 тысяч строк лютого пиздеца на расте, не считая typescript и фронта.
>>3453388 >кривая обучения очень уж крутая (чтобы что-то начать делать в бэке нормально нужно месяцев 12) С растом ты будешь каждый день своей жизни учиться, потому что две трети любого кода на расте — это объявления новых вспомогательных типов для ублажения компилятора, и соответственно, работающие с тобой люди будут непрерывно писать новые и новые вспомогательные конструкции под свою логику. Помню, я охуел, когда увидел, насколько сложно. Safe реализация двусвязанного списка на Rust настолько нереальна, что они по итогу сплошной unsafe ебанули в std.
>Меньше всего в Go, но он не заточен на сложную бизнес-логику, сделать-то можно конечно, но на костылях и с тяжелой поддержкой в дальнейшем В чом тяжесть поддержки? Пиши на Elixir, лол.
>Это как в статьях про Python - да он может всё, очень гибкий, можно и в бэк и в ml и в гуй тоже может. А на деле - очень медлительный и очень прикладной, но хорошо для DS и ML (клей для Си в основном). По-моему никто не скрывает, что питон еле ползает. Можешь попытаться у нейросетки поспрашивать вопросы, и подчёркивать ей, типа "я хочу не мейнстрим", "какие альтернативные взгляды на этот вопрос бывают?". Гуй, кстати, очень грустный в питоне. Я не в последнюю очередь думал свою либу многозадачности под нужды гуя адаптировать, но там настолько всё плохо в питоне, что ну его нахуй. Питон — это реально bash, со всеми вытекающими и втекающими.
>>3453411 >От нейродебилов не получилось взять релевантную информацию. Они и про Пиструн мне говорят: О да, это отличный вопрос. Python может решить все ваши проблемы. Огромное сообщество, дохулирд фреймворков... Странно. Можешь показать пример промта, по которому нейросетка выдала тебе хуйню?
>>3454544 >>3454549 Нейровысеры не интересуют. Следующий раз приноси свой код, посмотрю что там у тебя.
>>3454649 >две трети любого кода на расте — это объявления новых вспомогательных типов для ублажения компилятора >Помню, я охуел, когда увидел, насколько сложно. Safe реализация двусвязанного списка на Rust настолько нереальна, что они по итогу сплошной unsafe ебанули в std. База. А если это мультипоток будет? На этом пидорастёнок зависнет, потому что токены в GPT исчерпались.
Почему у зига такой ублюдский тулинг спустя 5 лет? Литералли хуже крестов. Вот я создал проект через zig init, он собирается, но при сборке мне пишет: > error: invalid option: -Dcpu > error: invalid option: -Dtarget > error: invalid option: -Doptimize Что это блять, в build.zig нет никаких аргументов и я не передаю ему? А дальше под этим стектрейс build.zig, без ошибки. Что ты хочешь, сука? Есть менеджер пакетов, но название пакета и название модуля разное, я должен идти в репу и смотреть в zig.mod как они назвали модуль. Потом ещё прописывать в build.zig сборку и импорт каждой зависимости. При этом мне пришлось смотреть видос на ютубе как правильно добавить её в build.zig, ведь документация к zon не гуглится. Ебануться. И эти мудаки зачем-то переписывают LLVM на зиге, не осилив даже сделать нормальную сборку и документацию. Воистину красноглазые пердоли не умеют в юзерфрендли софт, только в пердольное говно. А потом они ещё рассказывают как у них встроен clang в компилятор и его можно использовать как более удобную замену крестового компилятора. Более удобную чем что? Чем makefile как из нулевых? При этом они рассказывают про нативную поддержку сишки без ffi в зиге, но как мне например заинклюдить Windows.h под виндой? Я должен сам окружение настраивать руками? Виндобляди даже в нулевые про такую дикость не слышали.
>>3455279 Умом Ржавый не понять, И кол-вом строчек не измерить: У него особенная стать — В Раст можно только верить. (Ф. Тютчев)
ПОЗДРАВЛЯЮ ВАС, РАСТОВЧАНЕ, С ДЕСЯТИЛЕТИЕМ ПОТРЯСАЮЩЕЙ РАСТ ПОБЕДЫ! ПУСТЬ ВАШ КОД БУДЕТ БЕЗОПАСНЫМ КАК НЕПРИСТУПНАЯ КРЕПОСТЬ, БЫСТРЫМ КАК ГОНОЧНЫЙ БАЛИД! ПУСТЬ ЗАВИСТНИКИ КРИЧАТ ПРО СВОЮ СЛАБОСТЬ И НИАСИЛ СИНТАКСИСА! СЛАВА РАСТУ! ПОБЕДЕ СЛАВА!
>>3456720 Потому что раст сделали наглухо пизданутые чулочники. Функция get возвращает указатель на элемент массива. Просто получить элемент по индексу будет v[] Вот так работает: fn main() { let mut v = vec![1,2,3,4,5]; let first = v[0]; v[0] = 42; v.push(6); println!("{first}"); println!("{v:#?}"); }
>>3456731 Лучше бы показали кто это говно спонсирует. А то такие довольные, явно баблищем их заваливают, и неспроста, явно не от полезности и прибыльности этого высера.
>>3457083 Я знаю что растанам больно от реальности, но ЯП с безопасной памятью - это в первую очередь джава и шарп. Про раст никогда речи даже и не шло.
>>3457877 Ну крч ты начал фантазировать про пидорастные команды которых нет. Уверен они там пишут полтора микросервиса, связанные с либой на расте. А в бизнес-логику и БД их даже близко не пускают, даже на полшишечки.
>>3455279 Языку всего десять лет, а его уже интегрируют в линукс и постепенно вытесняют плюсоговно (в предметной области максимально ригидной к изменениям). Для сравнения какому-нибудь пистону уже больше 30 лет, а выстрелил он только когда нейросетки начали разрабатывать.
>>3458483 >Линусу это пропихнули после курса таблеток и прочих нападок со стороны небазового сообщества. Линус уже давно выполняет роль наёмного сотрудника, который будет делать то, что ему скажут, "love it or leave it". Ему просто напомнили об этом, когда он однажды выебнулся. Всем мейнтейнерам об этом аналогично напоминают. Никакой свободы в ядре линя уже давно нет, вся разработка лежит под корпорациями — свобода заключается в том, как эти хотелки корпораций ты будешь выполнять.
Есть объективные проблемы со включением Rust в ядре, например, тот факт, что изначально это был специализированный инструмент для написания браузера — взять те же Sync/Send, которые приколочены гвоздями к компилятору и очевидно являются узкоспециализированным инструментом, бесполезным в ядре, в котором не просто потоки и lock-free код, а есть прерывания, у которых особая культура кодинга. Пришлось вычищать стандартную библиотеку от браузерного говна, и только после этого Rust подпустили к написанию драйверов. Я не верю, что раст когда-то пустят дальше, потому что дальше там просто сплошняком unsafe код, который лишает применение Rust смысла — всё ядро нужно будет переписывать под прихоти раста, как и вообще любая строчка кода требует усилий для ублажения компилятора, иначе компилятор её не примет.
>>3458551 >плюсы за столько лет к линуксу даже не подпустили Если от плюсов брать безопасное подмножество, то от них почти ничего не остаётся по итогу — в помойку отправляется 80% std и две трети спецификации C++. И даже после этого компиляторы C++ настолько ебливые, что их очень тяжело сделать совместимыми и безопасными, слишком уж это беспорядочное нагромождение фич и слоёв совместимости. Сука, C++ только несколько лет назад научилось линковать static поля в объявлении класса — это пиздец товарищи, как с яхзыком без поддержки интерфейсов типов работать? В языке есть hpp-реализация и cpp-реализация, но интерфейсов в C++ не существует, помимо сишных. А если ты всё равно пользуешься только сишными фичами, то зачем тебе C++?
>>3459234 > интерфейсов типов > hpp-реализация и cpp-реализация Шиз, зачем ты пишешь на си с классами и жалуешься на кресты? Это как писать на расте и жаловаться что ГОвно плохое. Модули уже давно в крестах работают стабильно, сишные хедеры больше не нужны. Что ты там про линковку выдумываешь вообще не понятно, экспорты работают как и должны.
>>3459244 > Модули уже давно в крестах работают стабильно, сишные хедеры больше не нужны. Давно? С 2024 стабильная поддержка в основным компиляторах — это "давно"? Ты какого года рождения? Для меня "давно" модулей C++ вообще не существовало даже в прототипах. Так-то мне самому модули C++ тоже нравятся — за 35 лет пора бы уже.
Тем не менее, одних модулей недостаточно для решения проблема. Например, проблему непрозрачных и private объявлений типов модули не решают — это по прежнему можно описать только сишными типами. Исключения для ядерной разработки нужно вырезать из яызка — а хули в C++ остаётся без исключений и опирающегося на них RAII? Как я и писал — мало что остаётся.
>>3459234 >сплошняком unsafe код, который лишает применение Rust Я уже выше вам дэбилам говорил, что раст это не про безопастность, а про нескучный синтаксис, раст никакой безопасности не гарантирует, безопастность может гарантировать только человек, который пишет на язык_нейм и доказательства.
>>3459244 >на си с классами и жалуешься на кресты >си с классами А если он не использует ооп-дерьмо, а пользуется тем, что в плюсах nullptr - это ключевое слово, а булы - это отдельные типы, это кресты или "си с классами"?
>>3459281 >крестовый std Нахуя его использовать? Алсо, тех же рефов нет в си, а это пиздатая фича, использовать супер ограниченное подмножество плюсов вообще говоря годная идея. Так ты не ответил, что такое си с классами?