Rust и социальные факторы

Так сложилось, что вчера, с одной стороны, Евгений провел довольно интересную аналогию между моделью памяти Rust и книгой и это была, наверное, самая наглядная иллюстрация различий в отличиях управления памятью между Rust и C++. А с другой стороны я прочитал  “Memory Management Patterns in Business-Level Programs” из 148 выпуска Overload в которой вскользь затронут этот же вопрос. В обоих случаях отношение к изменениям принесенным Rust на мой взгляд очень разумное: изменения на выдающиеся не тянут и решают уже решенную со времен C++14 (хотел бы написать со времен C++11, но make_unique появился только в C++14, а без него модель была не полной) проблему сильно более сложным способом, заставляя думать не только о корректности логики как таковой, но и о доказуемой корректности кода с точки зрения конкретной версии компилятора.

При этом, все мы живем в обществе, работаем в командах и не можем игнорировать вау эффекты и стадные инстинкты. По не очень понятным мне причинам я со всех сторон наблюдаю щенячий восторг по поводу Rust от людей которых я бы ну никак не заподозрил в таком. Например сегодня был диалог с очень продвинутым Python-разработчиком и не менее продвинутым C# разработчиком о том, что Rust – это круто, Rust – это нам надо и мы уже начали затягивать его в нашу кодовую базу. При этом какие-либо аргументы в пользу того, что то же самое можно сделать в меньшее количество легче воспринимающихся строк кода на C++14 (так как код не будет изобиловать модификаторами времени жизни) отбрасываются сразу с аргументами “я 15 лет назад на C++ писал – жуткое убожество”.

Наблюдая за скоростью продвижения Rust исключительно (как мне кажется) за счет этого загадочного вау-эффекта начинаешь задумываться, а может всё же стоит вложиться в него временем более серьезно? Не по тому, что такое большое количество народу не может ошибаться, а потому, что когда говоришь с фанатиками и понимаешь предмет их фанатизма, легче “продать” что-то кажущееся правильным и нужным лично тебе. И пусть логически проект проще и быстрее выполнить на C++, желание сделать на чем-то ином очень важный стимул который довольно часто положительно сказывается на качестве готового решения. Единственная и самая главная неизвестная для меня в этом вопросе, а на как долго хватит этого Растоманского запала? Что же будет после него? Понятно, что C++ был, есть и будет, но вот Rust…

4 Comments Rust и социальные факторы

  1. Dzmitry Malyshau

    У вас очень похожий стиль написания на Евгения, как и отношение к Расту. Называть это сообщество фанатиками и предполагать стадный инстинкт как один из основных факторов притяжения – это, скажем честно, довольно низко… Особенно, не разобравшись в языке и ситуации.

    > самая наглядная иллюстрация различий в отличиях управления памятью между Rust и C++

    Кажется, вы просто увидели там то, что искали. Мне эта аналогия показалась совсем высосаной из пальца. Чтобы понять, насколько его теория отражает действительность, достаточно задаться вопросом, думает ли Rust разработчик об управлении памяти при написании проекта так же, как о ней думает C++ разработчик? Для Rust сообщества ответ очевиден. А те, кто не желает проникнуться, пусть продолжают подгонять теории.

    > изменения на выдающиеся не тянут и решают уже решенную со времен C++14

    Вот тут и кроется основной конфликт. Раст разработчики и сообщество не считают данное утверждение верным. Мы это видим иначе: умные указатели в С++14, как и средства статического анализа, призваны помочь в написании корректного кода, но не гарантируют результат в силу особенности (богатства?) языка.
    Одна из ссылок для ознакомления (у автора есть и другие интересные материалы): https://manishearth.github.io/blog/2015/05/03/where-rust-really-shines/

    Естественно, переход на Раст часто сопровождается быстрым забыванием всех ужасов и возможностей С++, так что я лично вполне могу упускать из вида всю картину о надёжности последнего в его современно виде, сужу исключительно по личному опыту, где модные С++14 не затрагивались. Я готов обсудить конкретные примеры, начиная с этого: https://stackoverflow.com/questions/5638323/modifying-a-data-structure-while-iterating-over-it

    Reply
    1. Alexander Stavonin

      > сужу исключительно по личному опыту, где модные С++14 не затрагивались

      Это общая черта многих растоманов, кстати. И именно она делает их фанатиками, так как сравнивать C++03 c Rust… ну конечно Rust просто невероятно продвинутая штука, для пущей убедительности лучше с C++98 сравнивать.

      Reply
      1. Roman

        > ну конечно Rust просто невероятно продвинутая штука, для пущей убедительности лучше с C++98 сравнивать.

        Покажите мне хоть один способ сказать компилятору, чтобы он кушал только православный C++17, но ругался на C++98 конструкции?

        Reply

Leave a Reply