The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Rust 1.46"
Отправлено deeaitch, 29-Авг-20 03:40 
> О, реальный опыт, это ценно! Можешь рассказать, в чём именно был ад,
> что есть или чего нет в Расте и C/C++, что делает
> его менее удобным в работе с 50+ файлами?

Хорошо. Поделюсь. Не тролинга ради, и не ради поливания грязью. Только то через что прошёл сам.

Прошу заметить, всё изложенное ниже моё исключительно субъективное мнение, никоим образом не претендующее на объективность.

Коротко что это из себя представляет. Это большой комплекс диагностического оборудования и софта к нему. Облать аутомотив. Куча платформ и контроллеров. On board встроенных систем и т.д. управление из Linux, Windows, MacOs, iOS, Android.

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

Жизненный цикл того оборудования подошёл к концу. Т.е. его будут менять (выбирается производитель сейчас). Встал вопрос о том чтобы перенести весь этот код на новое оборудование чему я воспротивился и повезло что начальство удалось убедить. Началась разработка всего с нуля.

И вот тут на сцену выходит Rust. Не потому что я верю в его безопасность (более того я знаю что это нет) и превосходство. Я очень очень комфортно с C++. Rust я пробовал поковырять но это всё ниочём. Нельзя почувствовать язык без чего-то серьёзного. Поэтому и было принято решение. Параллельно с C++ вести разработку на Rust. Некоторые идеи из Rust мне понравились, поэтому а почему нет?

И так.

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

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

И так тут всё хорошо. Но и преимуществ перед C++ не видно. Порядка 50-ти прототипов. Прототипы не большие, по 5 - 10 файлов.

Начинаем собирать всё это в месте. И вот начинается. Это нормальное явление рефакторинг в начале проекта. Переименовать что-то сразу во всём проекте (по контексту).

И тут выяснятся что в случае с C++ это задача решается одним хоткеем. В случае с Rust я встречаю первую проблему. Нету IDE или чего-то что может это делать. Я пользовал kate для написания кода Rust. Синтаксис подствечивает и он уже не такой страшный как кажется в начале. Но понятное дело дальше оно ничего не умеет. Смотрим дальше, VSCode? Во первых это блевотня. Ну да ладно, поставлю. И так, оно тоже не может ничего кроме подсветки синтаксиса. Оказывается надо ставить плагины. Начинаем ставить, одно тянет другое, третье, десятое. Фух, поставилось. Ан нет. Конфликты, в форумах есть ответ. Я то почитал, можно решить. Но я понял что коллегам которые потом со мной будут работать я этого делать не буду. Я забуду. Не хочу. Выносите. Что там ещё? Ещё какой-то плагин к эклипсу. Спасибо, переодически падающий эклипс на плюсах, с отваливающейся индексацией и прочими граблями - нет, не надо. Ещё какие-то жавовские поделья в которых тоже только в виде плагинов. С неделю поковырялся и понял что ну просто нету ничего. Остановился на emacs, так как чуть с lisp знаком и при наличии времени и желания дописываю ту поддержку что есть сейчас. Но это медленно, времени не так много. Чуть допилил стало чуть проще. Но опять таки, это моя наколенная поделка.

Вторая проблема - компиляция. Для C++ есть куча всего что поддерживает парсинг выхлопа компилятора. Т.е. у тебя ушибка в коде? перешел на неё, нажал Enter и оказался в строчке ошибки. В случае с Rust - нет. Надо смотреть самому в выхлоп и потом открывать этот файл в нужной строке, это время, это не удобно. Да в emacs потом допилилось. Но опятьтаки, надо допиливать.


Сейчас ещё активная стадия не наступила, по этому я стараюсь держать код на Rust и на C++ в одинаково актуальном состоянии. Но по факту на C++ даже благодаря инструментам быстрее. Но бывает так что код на Rust отстаёт на неделю. Почему? тот-же рефакторинг. То что я сделал в C++ благодаря среде одним хоткеем в одно мгновение, в случае с Rust мне надо либо руками с грепом бегать, либо садиться допиливать emacs, или сидеть опять перебирать кучу недоделанных редакторов, форумов про поддержку раст в разных средах. На это просто нет времени если честно. Проект растёт. И он с нуля, и ещё не покрыл и 10% от того что должен.

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

Как минимум я узнал много нового. Но пока увы, на практике, Rust пока проигрывает. Удовольствие от создания чего-то на языке получаешь не только от языка, но и от того что его окружает. В том числе среда которой пользуешься.

Ну и да, по самому языку, честно вот функционала уровня шаблонов не хватает. Не надо тут кидать гнилыми помидорами. Я не предлагаю пихать шаблоны везде где не попадя. У них своё место. Во всём проекте что уже сделан у меня всего 3 шаблона. Но они так здорово экономят время, время на написание, время на отладку. Да и код меньше. Всего должно быть в меру. Где-то шаблоны это сила, где-то это будет фууууу.

И конечно всё это должно будет потом общаться с пользователем. Т.е. должны будут быть пользовательские интерфейсы. Увы, у Rust Ui toolkit очень печален. Я сейчас активно пробую биндинг на Qt. Посмотрим что из этого выйдет буквально через 2 месяца.

Я не говорю что я хорошо знаю Rust, более того я могу сказать что знаю его ну в лучшем случае средне. Часто приходится смотреть документацию. Кстати тоже момент, я не люблю лазить в браузер за документацией. Ну это не удобно и долго. Гораздо быстре нажать F1 и увидеть справку по команде, удобнее нажать ctrl+space и увидеть параметры с описанием. Но нет, у Rust с этим проблема пока.

Не предлогайте мне только этот ужас VSCode, эклипсы, интелиж и прочие жавовские поделья. Два тулкита в Linux, это Qt и Gtk, весь остальной мусор можете оставить себе если вас устраивает. Поэтому пока emacs, но функционал оставляет желать лучшего. Словно на 20 лет назад отбросило по возможностям.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру