Как стать автором
Обновить

Комментарии 11

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

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

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

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

Говоря откровенно, нравится практически все. Есть просто нюансы, которые надо знать (ну или придется узнать). Как например, `as u32` и `u32::from` - ведут себя по-разному (as - в случае чего просто молча обрежет, а from - выдаст ошибку, поэтому рекомендуется использовать именно from).

Для удовлетворения моего интереса, на каких язык еще Вы писали коммерческий код?
Пишу на крестах в основном, хоть убейте, не понимаю и не вижу преимущества Rust.
P.S. Вопрос ни в коем случае не для разжигания срача, действительно интересно.

начинал с JavaScript (до сих пор является основным стэком в форме React.js), так же несколько лет был PHP (в основном в виде Symfony2) и Python. На этих языках писал и коммерческий код, и код для своих личных проектов. На Rust боюсь писать коммерческий. Боюсь, что заставят писать какую-то гадость и разочаруюсь, как это уже было с Python.

Так же добавлю (тоже не в целях разжигания), что хотя и не использую плюсы, но регулярно приходится разбираться в коде на C++ (конкретно, проект mangos и его производные). И я бы не назвал код на плюсах самым читабельным. Хотя, может, это конкретно там он такой.

P.S. пора писать статью "Rust как форма эскапизма"

Боюсь, что заставят писать какую-то гадость и разочаруюсь, как это уже было с Python.

Хм-м, а как это связано? :) Если так рассуждать, то, поскольку говно можно написать на абсолютно любом языке, то нужно априори разочароваться во всех языках :)

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

Мне нравится мой код (да, я понимаю, что это - временно), но когда я пойму, что в нем что-то не так - я его перепишу, если надо - с нуля. Но не буду продолжать писать то, что не нравится.

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

Пишу на крестах в основном, хоть убейте, не понимаю и не вижу преимущества Rust.

Попробую поделиться опытом, как человек, который шесть лет писал на С++ и любил этот язык, а потом перешёл на раст и спустя пять лет "возвращаться" совсем не тянет. Скорее имеет место быть обратный процесс: поначалу я активно защищал кресты перед коллегами, которые были в восторге от раста, потом думал, что если с растом не пойдёт, то всегда без проблем снова буду писать на С++. Но позже пришёл к понимаю, что даже за большие деньги не готов переключиться назад. Хотя за новыми стандартами до сих пор стараюсь следить. К слову, последний плюсовый проект, над которым я работал, был вполне зрелым в техническом плане: опытные коллеги, нормальный процесс ревью, валгринд и санитайзеры на CI.


Преимущества Rust я бы разделил на несколько (размытых) категорий:


  • Инфраструктура. Тут я ничего нового не скажу — карго хвалят все подряд. Могу разве что обратиться к плюсовому опыту — в своё время сильно радовался переходу на CMake, но на нескольких последних проектах поверх CMake было написано куча своего кода. В итоге каждый раз приходилось разбираться заново. Казалось бы, небольшая проблема, но теперь я вижу, что можно лучше: просто иметь декларативный конфиг для подавляющего большинства случаев. Тут обычно возражают, что каждый плюсовый проект сильно особенный. Не согласен, но раст вполне себе позволяет для особых случаев писать билд-скрипты. Причём на самом расте, а не на отдельном языке.


  • Правильные умолчания. Это когда при доступе к элементу массива/вектора у нас будет паника, а не UB, если мы вышли за границы. При этом есть get_unchecked альтернативы позволяющие избежать лишних проверок в горячем коде, если оно действительно нужно. При этом данная функция и unsafe и писать длиннее, так что просто так ты это делать не будешь. Сразу хочется комментарий написать почему оно тут нужно, иначе на ревью всё равно спросят. Да, я понимаю, что в С++ для новых сущностей просто поступали последовательно, но от этого не легче.


  • unsafe. Отчасти пересекается с предыдущим пунктом, но хочется выделить отдельно. Собственно, частый аргумент, что на расте ничего без ансейфа не написать. У меня несколько (если не сказать совершенно) другой опыт. Зачастую даже написание новой библиотеки начинается с ![deny(unsafe_code)] в корне. И очень часто оно так и остаётся. В любом случае, цель не избегать "небезопасного" кода любой ценой, цель — не размазывать его по всей кодовой базе, а завернуть в безопасную абстракцию. А явный маркер весьма помогает при обзоре кода.


  • Бороу чекер. Да, он запрещает некоторые корректные программы, да иногда воевать с ним достаточно больно. И те кто говорит, что он бьёт по рукам только новичкам "немного" лукавят. Но писать на языке без бороу чекра (и без GC, разумеется) мне сейчас просто некомфортно.


  • Макросы, особенно процедурные (и derive). Опять же, в плане написания это далеко не верх удобства, но пользоваться готовым весьма приятно. Для сериализации в С++ пользовался cereal, так вот просто добавить структуре атрибуты Serialize/Deserialize намного проще. Или можно сравнить clap с монструозным boost::program_option.


  • Это просто современный язык со всякими штуками вроде паттерн матчинга, нормальных тип-сумм, "всё выражение", константности по умолчанию, простой семантики перемещения и т.д.



При этом я совсем не хочу сказать, что у языка совершенно нет проблем. Есть немало вещей, которым я недоволен, но по совокупности параметров это наиболее комфортный язык для меня.

Тоже прочитал rust_book и async_book и принялся заменить wowchat на rust. Пока ничего не готово буду смотреть Ваш код.
https://github.com/fjaros/wowchat

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории