Два года подряд мы делаем конференцию для rust-разработчиков RustCon. И твёрдо убеждены в том, что это один из самых перспективных, хоть и самых сложных языков. Завоюет ли он мир, в каких проектах он не нужен и с каких языков проще всего на него перейти? Обо всем этом мы решили спросить у Глеба Помыкалова, который пишет на расте уже пять лет. Может быть, после интервью вы тоже влюбитесь в Rust.

Расскажи, пожалуйста, где ты работаешь, кем и какое отношение имеешь к Rust.

Я работаю engineering менеджером в компании Workato. Это стартап уже поздней стадии, мы занимаемся автоматизацией для корпораций. Позволяем не техническим людям строить сложные сценарии, интегрирующие разные сервисы, используемые в компаниях. Моя команда работает в основном с Rust.

Как используется Rust в вашей компании, в какой степени и планируется ли расширение направления?

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

Сколько человек в твоей команде? 

Сейчас у нас 6 человек, основной рост пришелся на последний месяц.

Недавно Линус Торвальдс принял в состав ветки ядра Linux 6.1 изменения, которые касаются использования Rust в качестве второго языка для разработки драйверов и модулей ядра. Как это повлияет на перспективы языка в целом?

Я бы не стал говорить, что это решение исключительно Линуса Торвальдса, хотя он, конечно, важная фигура в мире Linux. Это была длительная работа, в которую были вовлечены и те, кто писал поддержку в линуксе, и команда самого раста, которая адаптировала и оптимизировала нужные фичи. То, что Линус с этим согласился, это здорово, он убедился в том что технология действительно достойна. В свое время C++ не удостоился такой чести. 

C, хоть и является низкоуровневой основой операционных систем, все же слишком опасный и враждебный. Постоянно думать о том, чтобы не отстрелить себе ногу, — это просто неэффективно и опасно. Ну и стоит ли говорить, что ошибки случаются постоянно. 

Rust, по сути, — это единственная технология, которая достигла зрелости и может эти проблемы решить. Причем решить достаточно хорошо: с хорошим перфомансом и возможностью писать безопасно. По большому счету, адаптация Rust — это вопрос дальнейшего роста. Другие ОС тоже смотрят в эту сторону. В конечном итоге, они получат более высокую скорость разработки и качество кода.

В каких проектах Rust наиболее актуален, а для каких он не подходит? Всякий ли проект можно перевести на этот язык и стоит ли это делать?

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

Я помню свой первый заход — было очень тяжело, особенно с tokio 0.1. В большинстве мейнстримовых языков нет таких проблем, они более интуитивны. Для Rust же нужно построить интуицию заново. Наверное, кому-то это дается легче, но все же язык сложен для изучения.

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

До недавнего времени в России не было вакансии rust-разработчиков. Что с международным рынком и как отличается отношение к языку в России и в Европе? 

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

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

С какого языка проще всего переучиться на Rust? С каким языком у него есть что-то общее?

В любом современном языке есть что-то общее с другими. Rust объединяет довольно полярные концепции. Кто бы ни пришел, ему будет сложно. Строгая система типов схожа с Haskell. Сам язык компилируемый, без рантайма и в этом похож на C. Многое в стандартной библиотеке взято из функциональных языков. Другие же части довольно эргономичны и создают некую схожесть с популярными интерпретируемыми языками — такими как Ruby, Python, Javascript. К этому добавим концепции языка, которые вообще не имеют аналогов среди популярных технологий. Не так много людей имеют одновременный опыт по всем этим направлениям.

Думаю, основной вопрос не столько в технологиях, сколько в складе ума. Разработка в Rust — это совсем не инкрементальное написание строк кода. Это, в первую очередь, формирование правильных и строгих структур данных. Сам код второстепенен в большинстве случаев. Тут архитектура не просто какой-то набор идей или документов, а часть процесса разработки и часть кода. Попытка пренебречь, проигнорировать это — прямой путь к провалу. Такой код на Rust не взлетит.

Из этого вытекает и другая особенность языка. В большинстве языков код со временем ухудшается, обрастает долгом. В Rust наоборот — чем больше кодовая база, тем проще писать новый код. Тем, кому такой подход близок, изучить язык будет проще.

Станет ли он самым популярным языком и что может ему помешать? 

Самым популярным — нет. Есть много примеров, когда очень качественные с инженерной точки зрения изобретения не были популярны. Потому что популярность складывается из комплекса причин. Техническая структура и те возможности, которые дает язык, — это лишь часть этого комплекса. Самым популярным будет то, что сможет освоить большая масса людей. 

А вот в рейтинге самых любимых языков Rust уже который год удерживает первое место. Думаю, это правильно, и сохранится еще надолго.

2 декабря будем публично признаваться в любви к Rust на конференции RustCon, присоединяйтесь.

Комментарии (5)


  1. petrov_engineer
    22.11.2022 10:22
    +7

    ???? blazing fast ???? memory safe ????

    Ничего так не дискредитирует rust, как люди, которые о нем пишут


  1. CrashLogger
    22.11.2022 10:36
    +2

    Лучше бы разобрали примеры кода на C и на Rust и объяснили, где в коде на C есть проблемы и как Rust помогает их избежать.
    А в реальных проектах все равно вся низкоуровневая работа с железом идет в unsafe и разницы с C никакой )


    1. freecoder_xx
      24.11.2022 12:25

      unsafe в Rust не тождественен поведению в C. Правила владения и заимствования продолжают работать в unsafe.


  1. Error1024
    22.11.2022 10:46
    +1

    Перешёл по ссылке, увидел это. Т.е. большинство разработчиков способны выдержать не больше года написания на расте?


    1. Pastoral
      22.11.2022 11:49
      +3

      Нет, это означает что скорость роста сообщества точно экспоненциальная и возможно гиперболическая.