Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

Rust как потенциальная замена Go — хайп или реальность?

Аватарка пользователя Вадим Егорцев
для
Логотип компании Tproger
Tproger
Отредактировано

Почему ядро Linux и сервисы Discord переписывают на Rust? В каких случаях «ржавый» язык окажется лучшим выбором для ваших проектов?

2К открытий6К показов
Rust как потенциальная замена Go — хайп или реальность?

Ядро Linux переписывают на Rust, новый драйвер NVIDIA NOVA разрабатывают на «ржавом» языке, во фронтенде появился фулстек-фреймворк Leptos. Rust становится универсальным решением, и кажется, что заменит Golang.

Давайте разберёмся, корректно ли сравнивать эти языки, посмотрим на плюсы, минусы технологий и выясним, в каких сценариях раскрываются их сильные стороны.

Комментарии по теме предоставили: разработчики Василий Зорин, Эдуард Дыкман; автор курсов в Яндекс Практикуме Кирилл Федченко; участники сообщества Golang Go и Rust.

⚠️ Мы не ищем язык-убийцу. В публикации собрали популярные мнения, чтобы помочь в принятии взвешенного решения для ваших проектов.

Почему Go и Rust считают конкурентами, если они такие разные?

Первый со сборщиком мусора больше похож на Java. Второй без сборки мусора, и напоминает продвинутый C++. Но постойте!

Во-первых, языки появились практически одновременно. Go заявил о себе в 2009 году, Rust показали в 2010-м. «Современный язык для разработки быстрых и безопасных приложений», — так говорили про Go, так говорили про Rust.

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

В-третьих, на этих языках пишут схожие типы приложений: веб-серверы, микросервисы, CLI-инструменты и системное ПО. Например, на Go написаны Docker и Kubernetes, а на Rust — Firecracker (AWS), движок Servo, Vector.

Оба языка конкурируют в backend-разработке, облачных вычислениях и инструментах DevOps, где ключевыми являются масштабируемость и параллелизм. Например, в области:

— микросервисов: оба языка используются для создания распределенных систем, при этом функции безопасности Rust могут быть предпочтительнее для критически важных компонентов;
— сетевого взаимодействия: такие инструменты, как gRPC или HTTP-серверы, реализованы в обоих языках;
— облачной инфраструктуры: компании используют Go из-за его простоты, а Rust для компонентов, критически важных для производительности.

Rust лучше подходит для системного программирования (компиляторы, драйверы, ОС), в то время как Go более распространен в крупномасштабных сервисах высокой доступности, где приоритетна быстрая разработка.
Кирилл Федченкоавтор курсов в Яндекс Практикуме

Простота сейчас или надёжность потом?

Go следует принципу «простота превыше всего»: минимум синтаксического сахара, встроенная поддержка горутин, автоматическая сборка мусора.

Наши программисты — гуглеры, а не исследователи. Они не способны понять гениальный язык, но мы хотим, чтобы они создавали хорошее ПО. Поэтому язык, который мы им даём, должен быть простым для понимания и лёгким для освоения.
Роб Пайксоавтор Golang
Иногда Golang называют дубовым языком, и считают это преимуществом. Вообще вопросов к нему много: можно рассуждать о проблемах обработки ошибок, об отсутствии тернарников, энумов и т. д.
Пользователь из чатаGolang

У Rust другая философия — «лучше потратить время на борьбу с компилятором сейчас, чем часы на отладку багов потом».

Система типов и borrow checker заставляют контролировать жизненный цикл данных, помнить про безопасность потоков и обработку ошибок ещё до запуска программы. Компилятор не позволит собрать код с потенциальными проблемами.

Я ценю Rust за баланс производительности и низкоуровневого контроля с гарантиями безопасности языков высокого уровня. Модель владения исключает ошибки, такие как гонки данных и разыменование нулевых указателей, что повышает надежность сложных систем и сокращает время отладки. Бесплатные абстракции языка позволяют писать высокоуровневый код, который компилируется в эффективный машинный, без потерь в выразительности. Инструментарий Cargo значительно упрощает управление зависимостями, тестирование и сборку. А растущая экосистема и поддержка сообщества означают, что для большинства задач уже есть проверенные библиотеки и фреймворки.
Кирилл Федченкоавтор курсов в Яндекс Практикуме
Что привлекает в Rust — это инструментарий и экосистема. Язык развивается предсказуемо: стабильные обновления выходят по календарю, есть понятная схема nightly → beta → stable.

Из минусов — интеграция с другими языками требует дополнительных усилий по настройке FFI, но решения для этого есть (#[repr(C)]). Возникают вопросы к архитектуре: например, async/await добавили раньше, чем проработали корутины, и теперь приходится подгонять одно под другое не самыми элегантными методами. Ещё Rust компилируется заметно дольше других языков.
Пользователь из чатаRust

Сколько нужно времени на обучение Rust и Go?

Golang с нуля можно освоить за 2-4 недели. Документация Go содержит исчерпывающую информацию о синтаксисе, стандартной библиотеке и концепциях программирования. Больше всего времени потребуется на изучение горутин, каналов, системы интерфейсов.

Документация Rust не менее подробная. Синтаксис языка сложнее. Обучение затягивается из-за уникальной системы владения памятью (ownership) и концепции времени жизни (lifetimes). Ещё нужно время на принятие borrow checker, когда кажется, что компилятор специально мешает писать код.

Rust как потенциальная замена Go — хайп или реальность? 1
Borrow checker — лучший друг программиста, он следит за соблюдением модели владения. Основное правило гласит, что в любой момент времени на переменную может ссылаться либо одна мутабельная ссылка (с правом записи), либо сколько угодно иммутабельных (только чтение). Это нужно соблюдать в любом языке, который поддерживает многопоточность. В Golang, например, с data races приходится бороться своими силами. Также borrow checker убеждается в отсутствии «висячих» указателей (когда ссылка живёт дольше, чем данные).
Василий ЗоринRust-разработчик
Входной порог может быть высоким: освоить владение и заимствование, особенности синтаксиса и обработки ошибок бывает непросто не только новичкам, но и опытным разработчикам. Существуют курсы, помогающие плавно перенастроить профессиональный стек под другой язык, например, «Rust для действующих разработчиков» в Яндекс Практикуме помогает быстро перейти к практике.
Кирилл Федченкоавтор курсов в Яндекс Практикуме

Вы знали, что код на Rust в 2,6 раза проще кода на Go?

В июне 2025 года TIOBE проанализировало 1,5 миллиарда строк кода, измеряли сложность программ на разных ЯП. Считали количество путей выполнения в функциях — чем меньше число, тем проще код для понимания и поддержки.

Rust как потенциальная замена Go — хайп или реальность? 2
Rust показал лучший результат — 1.32 балла. Go набрал больше — 3.39.

Как получилось, что Golang в 2,6 раза сложнее Rust?

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

Синтаксис Go минималистичнее и проще для новичков, но код получается более разветвлённым. На Rust пишут программы с меньшим количеством путей выполнения, поэтому кажется, что код проще для понимания и поддержки.

Большое преимущество Go — это низкий порог входа (25 ключевых слов против 70 в Rust). Стандартная библиотека довольно небольшая, но в ней есть практически всё. По моему опыту, в средней кодовой базе на Golang разобраться больше шансов, чем в Rust.
Эдуард Дыкманsenior software engineer

Когда Rust работает быстрее Go, и где это используют?

Представим интернет-магазин: пользователь заходит на страницу товара, сервер идёт в базу данных и отдаёт JSON. В таких случаях Go и Rust работают примерно одинаково быстро — узкое место в скорости ответов БД.

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

В Go сборщик мусора может внезапно остановить программу на несколько миллисекунд — «подожди, я тут память чищу». В видеостриме это означает подвисание картинки, в торговых алгоритмах — потерю денег. Rust работает без неожиданных пауз, потому что вы сами управляете памятью.

В Golang накапливается «мусор», который в какой-то момент будет обработан сборщиком, что по времени может совпасть с внешней полезной нагрузкой и ухудшить время отклика сервера.

В Rust память удаляется автоматически, как только её владелец выходит из области видимости. Так что любые приложения, в которых важным аспектом производительности является управление памятью, могут выиграть за счёт использования Rust (БД, ОС, браузеры, видеоигры).
Эдуард Дыкманsenior software engineer
Rust приносит реальную пользу в продакшене там, где простои и уязвимости стоят дорого:

— встроенные системы (устройства IoT, ПО для автомобилей) — безопасность и эффективность Rust снижают вероятность сбоев оборудования, от которого зависят жизни людей.
— финансовые услуги — высокочастотные торговые платформы, использующие Rust, могут обрабатывать транзакции быстрее и с меньшим количеством ошибок, что повышает конкурентоспособность.
— облачная инфраструктура — высокая производительность и минимализм Rust в области сетевого взаимодействия и параллелизма (например, в Tokio) позволяют снизить затраты на сервер, что напрямую влияет на размер прибыли
Кирилл Федченкоавтор курсов в Яндекс Практикуме

Параллельная обработка

Допустим, вам нужно скачать 3000 файлов. В Go можно написать цикл с горутинами — синтаксис интуитивно понятный, и базовый вариант заработает без глубокого изучения теории.

В случае с Rust придётся почитать про async/await, разобраться с библиотекой Tokio, понять разницу между async fn и обычными функциями. Зато получите полный контроль над тем, как именно выполняется код.

Потребление ресурсов

Go жирнее по памяти. Каждая горутина занимает от 2 КБ, плюс сборщик мусора держит в памяти объекты про запас. Для веб-сервиса не критично, для встраиваемых систем может стать проблемой.

Rust экономнее — вы платите только за то, что реально используете. Программу на Rust можно запустить на микроконтроллере с 32 КБ памяти. Go туда не поместится.

В чём разница между развертыванием Go и Rust приложений?

Оба языка компилируются в один исполняемый файл — просто скопировали на сервер и запустили. Docker-образы получаются крошечными, особенно у Rust (можно упаковать в scratch-образ размером несколько мегабайт). Go чуть проще интегрируется с существующей инфраструктурой.

На мой взгляд, разница минимальна. Оба языка отлично собираются в машинный код для любых платформ. В Go это проще, можно просто указать компилятору нужную платформу. В Rust есть тулзы для кроссплатформенной сборки. Также в Rust сложнее собирать код, который использует FFI.
Эдуард Дыкманsenior software engineer

В каких сферах Go и Rust делят рынок программирования?

Go

  • Идеален для микросервисов и REST API. Фреймворки Gin и Echo помогают быстро собрать рабочий сервис — например, для регистрации пользователей или каталога товаров.
  • Docker, Kubernetes, Terraform — все написаны на Go. Язык используют для консольных приложений: получается один файл, который запускается везде без дополнительных зависимостей.
  • В больших командах с частой сменой разработчиков Go встречается чаще. Простой синтаксис означает, что новые разработчики быстрее разбираются в коде проекта.

Rust

  • Операционные системы, драйверы — области, где Rust конкурирует с C++. Язык предлагает сопоставимую производительность, но защищает от ошибок с памятью.
  • Rust компилируется в эффективный WebAssembly для запуска вычислений в браузере. Используется в играх, обработке изображений, криптографии.
  • Ripgrep (аналог grep) и exa (аналог ls) демонстрируют возможности Rust — они работают быстрее классических Unix-утилит.
Rust лучше подходит для системного программирования (компиляторы, драйверы, ОС), в то время как Go более распространен в крупномасштабных сервисах высокой доступности, где приоритетна быстрая разработка
Кирилл Федченкоавтор курсов в Яндекс Практикуме

Стоит ли изучать Rust, если более простой Go справляется с большинством задач?

Всё зависит от ваших целей. Кирилл Федченко отмечает:

— Go подходит для быстрой разработки микросервисов, API, облачных инструментов благодаря простоте, масштабируемости и легковесному параллелизму.

— Rust стоит изучить, если вам нужен максимальный контроль над производительностью, безопасностью или низкоуровневыми сущностями (операционные системы, встраиваемые системы). Если ваша цель — создание высокопроизводительных, критически важных систем, то инвестиция времени в изучение Rust один из эффективных способов.

Go часто достаточно для решения задач, но более широкое применение и растущий спрос на Rust делают его ценным навыком для карьеры. Уже восемь лет подряд язык признается лучшим в опросе Stack Overflow, а его сообщество растет быстрее, чем у других языков. Именно поэтому многие переучиваются на Rust с Go, C++ или Python, особенно при переходе в системное программирование или области, где безопасность имеет ключевое значение.

Почему Rust не вытеснит Go, несмотря на все преимущества?

Rust не заменит язык Go, потому что последний хорошо решает свои задачи.

Golang и Rust используют для разных целей. Сценариев применения Rust меньше, чем для Go. Поэтому Golang популярнее, но это не замена Rust.
Пользователь из чатаGolang
Оба языка далеки от идеала для написания бизнес-логики, она теряется за синтаксическими конструкциями. В зависимости от области, для бизнес-логики я бы предложил рассмотреть typescript, java/kotlin, elixir, clojure.
Эдуард Дыкманsenior software engineer

Комментарии открыты: в каких проектах вы наблюдали, как неправильный выбор языка негативно отразился на продукте?

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий6К показов