В этом ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
>>3637404 (OP) Сейчас нет, но скоро будет. Знакомые гошники уже жалуются что компании медленно отказываются от го в пользу раста. Плюс раст это вообще идеальный язык для вайбкодинга, нейронки решают все трудности написания на нем. Короче это язык ближайшего будущего, ставлю еще 1-2 года на раскачку и он станет языком для (почти) всего.
>>3645926 > Знакомые гошники уже жалуются что компании медленно отказываются от го в пользу раста А смысл? Это же шило на мыло. Тем более гошка более удобна для бизнес-логики, тот же бекенд проще на гошке пилить, а результат практически тот же самый. Другое дело если там надо стримить видео, пилить прокси серверы и прочие такие штуки, тут раст выигрывает, но это не массовое явление
>>3646146 >>3646150 Как раз таки жабу и меняют на го из-за обилия AbstractSingletonProxyFactoryBean Я не шучу реально в спринге такое и паттернов ради паттернов, плюс попутно оаспиливая монолиты на микросервисы
>>3646210 В большинстве случаев замена жабы на го это чисто решение какого-нибудь техлида, чтобы просто выбить бюджеты на следующий год и занять работой своих людей и себя. Иначе оно просто не нужно, кроме быстрого старта у го особых преимуществ нет.
Из-за паттернов и прокси-фабрик никто на го переползать не будет. Тем более что любой более-менее крупный проект на Го будет выглядеть как проект на жабе, разве что с самописным спрингом. Я как раз сейчас на Го проекте работаю, где пишут со слоями и паттернами как в жабе, потому что так техлид приказал. До того пытались в go-way без паттернов и с минимальным количеством слоев, но обосрались и высрали неподдерживаемый кал.
>>3646210 >Я не шучу реально в спринге такое за 10+ лет в жабе мне примерно никогда не приходилось копаться в кишочках спринга и AbstractSingletonProxyFactoryBean в частности. Судя по названию - это сердце спринга, делающее всю магию на прокси синглтонах
>>3646357 А как тут выражается разница в синтаксисе? Те же дженерики в угловых скобках, та же работа с иерархией через ::. Ну стрелочку в крестах написали, чтобы пройти по указателю, окей, так сильно она нужна?
P.S. Про то, что в примерах утечка из-за циклических рефкаунт указателей я даже не говорю, это ж надо было так обосраться в 5 строчках кода, а потом ещё и на раст эту утечку портировать с добавлением рантайм оверхеда, поздравляю. P.P.S. Если это была претензия к отсутствию shared_ptr в расте, то можно реализовать его в несколько строчек и там, будет счастье с автодерефами и прочими прелестями, отстреливающими ноги, любые говноабстракции сделать можно, если так хочется усложнять себе жизнь.
>>3646387 Это какая-то олимпиада по написанию oneliner'ов? Стиль и правда напоминает работу хаскелиста, который последние годы пишет на брейнфаке, я признаю это, лучше бы это было написано на хаскеле. Но если честно, я вот пытаюсь представить себе код из первого примера на крестах и вижу там что-то ещё более страшное, если продолжать в русле сравнения синтаксиса раста и плюсов.
>>3646415 Ну вот тебе еще примерчик из яндекс олимпиады
ввод и вывод у раста я не менял, а просто взял дефолтный шаблон, который уже был заполнен яндексом. добавил только чтение численных данных из io и базовый метод вектора sort
>>3646432 Ну вот наглядный пример почему плюсы всратые, какие-то шифт операции, код чуть более чем полностью состоит из математических символов. Даже сортировка с ебанцой вместо обычного sort(a). Надо быть аутистом чтобы постоянно ковыряться в этом. Берем раст с первой строчки понятно что лочит стандартный ввод, записывает линию в строку, делит на пробелы, итерируется парсит из строки число и собирается в массив, сортируется. Все по полочкам разложено. Человек даже не знакомый с синтаксисом сходу поймет. Одного взгляда хватает чтобы за секунду понять что делает код. Возьми любой другой язык, например упомянутые выше жабу и гошку, там будет примерно как в расте - четкие и понятные шаги написанные для людей не страдающих аутизмом.
>>3637410 мои субьективные наблюдения и опыт собеседований у Rust соотношение к С++ где-то 1:20. на одну вакансию по расту будет висеть 20 штук на плюсы.
Rust уничтожил мою "карьеру" программиста C/C++. та как переходить на плюсы после раста это очень больно.
Rust забустил меня и мои проекты в полтора раза, по ощущениям. Если раньше я вообще мог похвастаться что довел до конца 2 проекта на С++. то сейчас их штук 10. тулзы, скрипты, GUI программы и т.п.
>>3645926 > раст это вообще идеальный язык для вайбкодинга, нейронки решают все трудности написания на нем я уверен что ты ни разу не использовал LLM для Rust. иначе ты б эту фигню не писал бы!
Ученик старшей школы написал на Расте движок для моделирования макромолекул и фронт на HTML/JS. Ядро моделирует 3млн молекул за 600мс. Почему вы так не можете?
ИИ был использован только для помощи в разработке фронта, ядро было написано вручную.
А потом неосиляторы ИТТ визжат что с местным дипломом ПТУ не могут найти работу. А вы сначала добейтесь чего-то подобного, чтобы ещё до вката в вуз, ещё за пару лет до стажерства и даже за пару лет до вката в джуны написать подобный инженерный софт, а не очередной CRUD сайтик с заметками на NodeJS.
Вот оригинальный пост школьника:
"Привет, ребята, я ученик старшей школы. Меня ужасно бесили стандартные инструменты (в основном это просто Python-обёртки вокруг старого C++ кода). Они очень медленные, жрут слишком много RAM, а иногда вообще случайно падают с segfault, если скормить им кривой PDB-файл.
Поэтому, очевидно, я решил переписать это на Rust, лол.
Называется BioForge. Насколько я знаю, это первый полностью написанный на Rust open-source crate и CLI для подготовки белков и ДНК/РНК. По сути, он берёт сырые экспериментальные структуры, очищает их, восстанавливает недостающие тяжёлые атомы, добавляет водороды в зависимости от pH и строит водные боксы вокруг них.
Поскольку это Rust, производительность, если честно, просто безумная по сравнению с тем, чем обычно пользуются биологи. Для многопоточности я использовал rayon, а для математики — nalgebra. Утечек памяти нет вообще, и он буквально никогда не ловит OOM, даже на огромных системах. Если посмотреть на бенчмарк на второй картинке, масштабирование строго O(n). Он прогрызает вирусный капсид на 3 миллиона атомов примерно за 600 миллисекунд.
И ещё, самое крутое в отсутствии странных C-bindings — это WASM. Я скомпилировал весь пайплайн обработки в WebAssembly и сделал для него фронтенд на Web-GLU. Этот движок можно прямо в браузере запустить здесь: bio-forge.app.
Crate уже есть на crates.io (cargo add bio-forge), а репозиторий тут: github.com/TKanX/bio-forge.
Я всё ещё учусь, так что если кто-то из опытных Rust-разработчиков захочет посмотреть репозиторий, разнести мою структуру кода в пух и прах или подсказать, как ещё лучше оптимизировать — буду очень благодарен!
EDIT: Огромный респект мейнтейнерам rayon и nalgebra.
Особенно rayon — модель владения в Rust это просто чит-код для конкурентности. Масштабирование O(n) в BioForge завязано на том, что огромные белки можно распараллеливать по потокам без каких-либо глобальных блокировок."
>>3651296 >Меня ужасно бесили стандартные инструменты Пикрил буквально. >>3651600 > Как на расте написать классический двусвязный список на нодах? Используя очевидный ансейф.
>>3651296 At first I was like >я решил переписать это на Rust but then... >Я скомпилировал весь пайплайн обработки в WebAssembly мог бы просто на яве написать и не выёбываться зачем упарываться с лоулевельным языком, чтобы в конце запускать его на виртуальной машине?
>>3651279 >Rust уничтожил мою "карьеру" программиста C/C++. та как переходить на плюсы после раста это очень больно. Есть такое, на бекенде из-за неосиляторов история еще веселее, кроме блохчейна нет нихуя, но брать в руки go или python не просто больно, а пиздец как больно. Хотя нишу гошки вполне мог бы занять
>>3651765 Я вот начал разбираться с растом и долго заседал на реддите и хакер ньюсе, пытался узнать используют ли раст на бэкенде, так как у меня под веб много задач. Вообще хочется иметь универсальный язык для всего, чтобы и веб можно было пилить, и чтобы для мк что-то ковырять, чтобы риалтаймовый код можно было писать. Потому что если использовать под каждую область свой язык (прямо как дсл на лиспах что ли), то во-первых надо учить все эти языки, а у каждого свои подводные камни, экосистемы и особенности. И во-вторых, когда одна область налезает на другую, то происходит переключение контекста в голове, когда с одного языка ты переходишь на другой. Это отвлекает и раздражает. Хочется универсальности и при этом хочется иметь эффективность работы программ. Постоянно говорят, что время программиста дороже, что лучше использовать "медленный" в исполнении язык, но который позволяет быстро писать. Чушь. Из-за вот этой мысли и из-за неправильно понятых идей Дийкстры о преждевременных оптимизациях софт сейчас и находится в жопе. Уже и закон Мура не работает, а все равно лепят по-старому, железо все схавает. Нужно стремиться к простоте архитектуры программ, простоте исходного кода, но при этом к производительности, к скорости работы и низкому потреблению памяти машины. За все хорошее, против всего плохого, да. Многое зависит от выбора технологии на которой разрабатывается что-то. И на 2026й год раст как универсальный язык выглядит довольно неплохо. Он быстрый, с памятью работает эффективно, эргономика языка позволяет реализовывать абстракции на "высоком" уровне. При этом можно спускаться в кишки, когда нужно. Хочу эргономичные и безопасные кресты, которые можно использовать для всего. Раст ли это?
Если вернуться к изначальной теме, про использование раста на бэкенде, то я вижу, что его используют. Но насколько активно? В чем подводные камни? Вот это все хочу узнать. То есть в отличие от крестов на расте хоть как-то пишут на бэке, есть поддерживаемые фреймворки, проекты пилятся.
Очень много мнений, что никакая производительность в вебе не нужна, все упираются в IO, то есть ждут базу, ждут респонсов. И якобы остальное можно даже не оптимизировать. Про расход памяти тоже не усираются даже. И в целом про IO верно, но все-таки раст ведь дает и быструю скорость работы, и эффективную работу с памятью. Причем эргономика языка позволяет реализовывать логику приложения достаточно быстро насколько я понимаю. То есть да, смысл использовать интерпретируемые языки вроде питона, жса (тса), руби, пхп, если есть раст? Только если хочется использовать что-то масштабное из тех языков, типа джанги, некстжса, рубионрейлса, ларавеля. Поднимемся чуть выше, из широко используемых языков для веба можно добавить сюда жаву и шарп. Они выполняются в виртуальных машинах, у них огромные экосистемы. Но сами языки какие-то жирные, то есть за годы их существования сформировалась культура, которая поощряет "широкий", размазанный и абстрактный код. Там свои паттерны, через которые надо продираться при разработке, чтобы что-то сделать. Но в целом языки и системы хорошие в плане производительности. Если говорить про расход памяти, то по современным меркам и, учитывая оптимизации последних версий жвм и дотнета, все довольно хорошо. Например жава уже не тот монстр, что был в нулевых годах. Но в них огромный багаж экосистем, свои подходы, в которые надо глубоко въезжать. Далее, особняком стоит Го, быстрый, по памяти маленький футпринт, быстрая компиляция, можно получить один бинарник. Считается простым, идейно напоминает си, но используется только для написания серверных приложений и каких-то кли приложух. Очень узкая ниша, если вылезаешь за ее пределы, то надо искать другой язык. Есть спорные вещи вроде обработки ошибок, работы с нуллами и указателями там, где не надо. Из-за относительной "новизны" языка тут нету какого-то багажа экосистемы, нет каких-то мощных фреймворков. Весь костяк облак написан на го, но как язык он не дает ничего, что не дал бы раст. При этом очень легко можно угодить в рейс кондишены и дереф нулпоинтера. Не вижу смысла в го в 26м году, когда есть раст.
Кложур, коммон лисп, эликсир, скалу, хачкель и т.д. не рассматриваю. У меня в голове пока вот такой ряд выстроился для написания серверных приложений: раст > го > шарп/жава > кресты26 > говно > моча >>> жстспхпрубипетухон. Что скажете, зайчата? Я просто вилами по воде поводил, накидал на вентилятор, выговорился.
>>3651875 Не, там удобно все. Есть асинхронщина с токио, есть для всей хуйни крейты от serde джсона до grpc, от redis до sqlx, короче от патрона до гандона. А бизнес-логику писать удобнее чем в гошке из-за довольно сильной системы типов и гонять по слоям удобнее со всякими From Into
>>3651817 >Если вернуться к изначальной теме, про использование раста на бэкенде, то я вижу, что его используют. Но насколько активно? В чем подводные камни? Вот это все хочу узнать. То есть в отличие от крестов на расте хоть как-то пишут на бэке, есть поддерживаемые фреймворки, проекты пилятся. Основное фреймворки: axum, actix, rocket тут пока не в теме бери тот что на вкус и цвет. Асинхронный рантайм я бы рекомендовал использовать tokio. Для БД порекомендовал бы sqlx, а всякие seaorm и diesel брать когда будешь хорошо знаком с синтаксисом (и то не факт что они понравятся) Json - serde Ну и всякие библиотеки типа uuid, url, reqwest и прочее по потребностям Вот пример из Cargo.toml, который используется в продакшене остальные зависимости наши внутренние библиотекиhttps://pastebin.com/eLSkVPVv
>>3651872 Для своих пет проектов сейчас уже +- похуй на язык, все равно коды нейронка генерит.
Для работы - зависит от локации, но работе на Rust хуй да маленько. Например в гейропе если ты бекендер, то надо Java изучать для поиска работы, ну или сишарп хотя бы. Go почти полностью отсутствует где-либо, Rust аналогично.
>>3652460 > Для своих пет проектов сейчас уже +- похуй на язык, все равно коды нейронка генерит. Заблуждение. Нейронка хуево генерит комплексный Раст код
>>3655805 Вот только раст не предназначен для бэкенда. А консольные утилиты можно писать почти на чём угодно, это даже областью нельзя назвать, так, базовая возможность любого языка программирования.
>>3655829 с одной стороны тоже так считаю, что все эти "системные языки", там где их используют можно было обойтись чем-то лучше и проще, тк нет высоких требований, а риск обосраться растёт даже в расте, хоть и не как в си. а с другой, язык даёт возможность в обмен на что-то, а приоритет критериев выбираешь сам и выбираешь язык. ну я бы так делал, если бы был кабаном или программистом, выбирал язык под задачу
>>3637404 (OP) К расту может быть только один вариант здорового отношения: он сам не имеет права на существование, любой софт, в котором есть хотя бы кусочек на расте, следует считать несуществующим, а все, кто на нём пытаются писать — особо опасные вредители, которых вообще-то надо бы убивать, но государство не велит. Любое вот это вот "да ладно, это же пока ещё не так чтоб уже совсем" — позволяет этой заразе развиваться и давать метастазы.
>>3657229 База. Не ожидал, что этот джун выдаст годноту. Хотя, у меня есть bat, тоторый написан на Rust - редкий случай норм решения на этом языке, но в целом, лучше бы это написали на C, а ржавой скамины не существовало
>>3658843 Это достаточно неблагодарное дело описывать почему что-то не нравится. Правильный вопос в том, что является лучшим решением, а не почему плохое является плохим.
1. Система типов в Rust убога. В C++ она гораздо мощнее. Примеров могу привести много, но это отдельный труд, который меня не вдохновляет. Поэтому можно начать с простого примера. Как сделать разное поведение кода в Rust зависимости от используемых типов? https://godbolt.org/z/6qxGMfqnP
>>3659041 Да, много писать. Для меня это просто уже закрытая несколько лет назад тема. Давай закину
2. То как раст пиарится. Это проект Мозилы, которые пиарится, как безопасный и быстрый, тогда, как он тормозной и небезопасный. Куча трапов в комьюнити, не то, что бы я против трапов 3. И так до сих пор за 10 лет ничего не создали, таже на том же Go написано больше, тогда, как на плюсах написано почит всё фундаментальное, в том, числе LLVM, который используется при компиляции раст кода, кек. Большинство разработок раста на проверку оказывюатся обёртками на C либами или переписыванием какого-то говна мамонта в 500 строк, так, что строк получется 1200 4. Почти все заявленные фичи реализованы хуже, чем в плюсах. Пример с типами я привёл выше. Там много такого можно много приводить. Синтаксис говна. Перегрузок нет. Нет move семантики, из-за чего надо либо жопоеблю устраивать с типами, либо копировать примитивные объекты, что пиздец. Нет исключений - не сделали, и всем напиздели, что так безопаснее и быстрее. Ехал unwrap() через unwrap() по этой причине. Да, лень перечислять
Просто когда я так накидываю, появляется возможность сказать, ВРЁТИ. Всё безопасно, C++ устарел, перегрузки не нужны, моу всеманитка оставляет объекты сиротами и это небезопасно, исключения неявны и перетряхивают стек и т.д. Я все эти тейки знаю. Поэтому надо не перечислять, а показывать примеры конкретного кода, и говрить, что вот, смотри, плюсы так ещё 10 лет назад умели, а у можной и молодёжный язык не завели
Барьером к этому понимаюнию служит лень на протяжении 3 - 6 месяцев изучать программирование, а желание писать код, как крутые системщики, при этом не изучая более сложные концепции. И в добавок иллюзия, созданная самой Мозилой, обосравшейся с servo, что это безопаснее, моложе и позволяет рубать много денег (ага, только эти много деняг получают только пара процентов прогеров, остальные сосут бибиу или идут в криптоскам - последний раз я там видел реальную восстребованность Rust программистов
>>3659089 Просто РАСТ это неидеальная замена плюсов, но кмк это единственный возможный безопасный аналог плюсов. Поэтому его сейчас так активно пиарят и используют.
Но для бэка я бы не использовал ни раст, ни тем более плюсы. Мы используем плюсы и раст исключительно в ядре проекта, там где действительно важна скорость работы языка, а не скорость обращения к базе
>>3659089 >криптоскам Это как рак, но тащемта вакансии с ним кидают чуть ли не по любому стеку. Моему знакомому nodejs и пхпшнику тоже кидали вакухи со всяким казиноговном и даже криптоскамом лол, хотя казалось бы - стек не совсем для таких целей подходит
>>3659091 >Просто РАСТ это неидеальная замена плюсов Раст никакая не замена вообще ничему. Он ещё хоть как-то был похож на язык, когда его делали но деньги Google, потом, когда поток иссяк, стало понятно, что разрабам платить нечем, выкинули наработки, взяли LLVM поверх него сделали фронт, и получился Rust. К тому-же зачем кресты заменять. Точнее они требуют замены, но не потому, что они старые или сложные, а потому, что консорциум тормозит и подходы из девсяностых тянутся. Но он требует развития, а не замены на говно. При этом равзитие должно не отбрасывать, а наоборот включать и развивать все мощные концепции, а не наоборот упрощать до того, что коде вынужден сам везде типы указывать руками
>это единственный возможный безопасный аналог плюсов Раст дырявое решето. Кста, лови прикол. https://godbolt.org/z/5Kaz35nPn. Safe код. Как же так, что же это творится
>Поэтому его сейчас так активно пиарят и используют Его пиарят потому, что Mozila вкладывает туда деньги. Она это делает, чтобы создать себе небольшую делянку, которую она будет окучивать. Иных причин нет
>>3659092 Нет ничего плохого в скаме как таковом. Наебать лоха - благо. Другое дело, что криптоскам закончится, у куда растеру податься. ПХП-шник пойдёт поддерживать порталы из двухтысячных, типо ВК или Мамбы, а куда податься Rust кодеру?
>>3651872 >у меня под веб много задач Питон для общевеба. Эликсир для специфических кейсов типа liveview, вебсокеты, iot, горячая перезагрузка кода, поддержка многоядерных процов, отказоустойчивость, софт реалтайм, вытесняющей многозадачности.
>>3651872 >хочется иметь универсальный язык для всего Таких не бывает, "всё" очень широкое, и языков много. Язык для быстрого прототипирования - питон с контролем типов. Дальше по ситуации.
>то во-первых надо учить все эти языки Минусы?
>когда одна область налезает на другую, то происходит переключение контекста в голове, когда с одного языка ты переходишь на другой Это круто на самом деле, учишься мыслить мультипарадигменно
>В чем подводные камни раста на бэкенде? Для веба? Мало работы, нишевая. Хотя интересная и одна из самых оплачиваемых. Кривая входа более крутая.
>джава итд Спринг/хибернейт нормально для бизнесовых задач, описания домена итд, на производительность жалоб не слышал.
>закон Мура и прочая хуерга Научись в io-неблокирующее программирование
> го ... используется только для написания серверных приложений и каких-то кли приложух. Очень узкая ниша, если вылезаешь за ее пределы, то надо искать другой язык Отличие го от раста - наличие встроенного гц. Но и его умеют отключать. Про узкую нишу пиздёж, есть даже под эмбеддед. Я писал на нём консольную утилиту. Можно парсер логов захуярить (victorialogs), можно гит хостинг (forgejo/codeberg). Можно видеоконвертер. В го нет адресной арифметики, а байтоёбство есть.
>дотнета Сишарп хорош.
Короче. Основное отличие раста - это отсутствие рантайма из коробки, интеграция с си либами. Если тебе это не надо - цена его использования слишком высока. Надо просто решать задачи - возьми тогда питон, жджаву, сишарп, го. Хочешь познать глубину глубин, сиспрог - тогда раст. Просто разные пути. Раст это не то же самое что "джава только лучше".
>>3658096 >Ньюфагу >без знаний C и C++ Ньюфагу стоит для начала понять, что каждый инструмент хорош для своей области, в других он буде хуже. Области пидораста, говноплюсов и си не совпадают.
>>3659276 Всмысле? Что не так? Не для всех проектов подойдет Си, особенно если это какой-нибудь комплексный проект для управлениями дронами на barebone arm