20 августа 2021

⚙ Rust – это новый C++ или очередная экзотика?

Веб-разработчик, фрилансер... Пишу об ИТ и смежных технологиях.
Язык программирования Rust приходит на смену С++. Правда это или нет, давайте разбираться.
⚙ Rust – это новый C++ или очередная экзотика?
Новые языки программирования похожи на звезды. Некоторые загораются и тухнут, в то время как другие продолжают освещать путь программисту. Все мы знаем, как сложно матерому разработчику со стажем поменять основной язык на созданный относительно недавно. Опытные специалисты довольно разборчивы и не каждый из них готов менять свои предпочтения. Однако появился язык, удовлетворяющий потребности многих программистов и решающий большинство современных задач разработки – Rust.

Rust был создан в 2010 году в Mozilla Research и стал позиционироваться как более надежная и безопасная альтернатива C ++. Это статический многопарадигменный язык программирования с эффективным использованием памяти, ориентированный на скорость, безопасность и производительность. Он используется для разработки игровых движков, файловых систем, веб-сайтов и инструментов, операционных систем, компонентов браузера и многого другого.

Rust поддерживает как императивное, так и функциональное программирование. Для разработки корпоративных приложений его используют в DropBox, Mozilla и Coursera, а поддерживают такие ИТ-гиганты, как Microsoft, Facebook и Intel. Что же в Rust такого особенного? Давайте разбираться.

Почему Rust?

Феномен Rust обусловлен некоторыми особенностями языка:

  • Во-первых, у него отличная документация, ласково названная разработчиками «книгой». В этой самой книге все доходчиво расписано и понятно даже далекому от программирования человеку.
  • Rust имеет очень удобный компилятор и первоклассные инструменты для работы: интегрированные менеджеры пакетов и мультиредактор.
  • Он очень быстр, предотвращает сбои и по умолчанию безопасен.
  • Язык решает проблемы, с которыми в течение долгого времени боролись программисты на C и C ++ , а именно с ошибками памяти и сложностью создания параллельных программ.

Чем Rust лучше других?

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

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

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

Rust имеет инструменты для разработки кроссплатформенных приложений и отлично подходит для сред с низким уровнем ресурсов, а существующие плагины для популярных IDE (Visual Studio Code от Microsoft и IntelliJ от JetBrains) дают неплохие возможности для экспериментов с кодом.

Немного статистики

С 2015 года Rust был признавался разработчиками любимым языком программирования в опросе разработчиков Stack Overflow четыре года подряд (в 2016-м, 2017-м, 2018-м и 2019-м):

Источник: Stack Overflow
Источник: Stack Overflow

Год назад, Rust вошел в ТОП-10 языков программирования по величине зарплат разработчиков, работающих на нем:

Источник: Stack Overflow.
Источник: Stack Overflow.


По данным все того же опроса Stack Overflow, Rust входит в пятерку самых популярных языков программирования:

Источник: Stack Overflow
Источник: Stack Overflow


Rust впервые вошел в список двадцати самых популярных языков программирования TIOBE в 2020 году. А в прошлогоднем обзоре Reddit он стал вторым по популярности языком программирования после Python.

Источник: Reddit
Источник: Reddit

Cargo

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

Система сборки Cargo признана одной из самых сильных сторон экосистемы Rust. Без нее разработчикам пришлось бы искать и загружать необходимые куски кода из неизвестных источников на GitHub, создавать пакеты статических библиотек и связывать их с программой. Cargo делает все это сама без постороннего вмешательства. Эта удобная штука вшита в установочный пакет и идет в комплекте с языком.

Использование Rust в реальном мире

Кроме разработчика языка, корпорации Mozilla, использующей Rust для браузерного движка Servo и большинства проектов связанных с Firefox, довольно много компаний применяют его в своих проектах. Firecracker от Amazon Web Services полностью написан на Rust, а популярные ИТ-компании Discord, npm, Cloudflare, Figma и другие успешно разрабатывают на нем программное обеспечение.

Выступая на RustFest Barcelona полтора года назад, инженеры Microsoft Райан Левик и Себастьян Фернандес рассказали о проблемах и преимуществах внедрения нового языка и о попытках переписать на Rust низкоуровневые компоненты Windows.

По их словам, индустрия программного обеспечения стоит на небезопасной технологической основе, которая обходится корпорации слишком дорого. По самым скромным оценкам Microsoft, любая проблема с программным обеспечением стоит около 150 000 долларов в день. Расходы могут быть еще выше для организаций, ставших жертвами уязвимостей системы безопасности. Именно так и было с британской национальной системой здравоохранения, которой атака вымогателя обошлась в 4 миллиарда долларов. По словам экспертов, в большинстве случаев такой ущерб связан с использованием C/C ++.

C и C ++ отлично подходят для написания низкоуровневых систем и используют мало ресурсов машины. Фактически они являются основой, на которой мы создаем наши системы сегодня. Однако проблема заключается в том, что они очень и очень небезопасны. Когда они разрабатывались, мало кто думал про безопасность.
Себастьян Фернандес

Поэтому в Microsoft начали экспериментировать с Rust, видя в нем спасение.

Rust позволит нам безопасно писать высокопроизводительные, критически важные компоненты.
Райан Левик

Впрочем, эксперт оговорился, что такая точка зрения ожидает подтверждения, и он надеется, что утверждение окажется правдой.

Основным препятствием на пути к этой цели является невозможность переписать на Rust огромное количество унаследованного кода из-за объема работы и проблем сосуществования нового языка с рядом других технологий. В дополнение к этому Rust должен быть принят разработчиками ПО, использующими C/C ++ в течение многих лет. Они должны убедиться в удобстве перехода. Помимо этого Microsoft уже использует Rust в проекте для тестирования модулей WebAssembly в Kubernetes.

Начавший кампанию по переписыванию низкоуровневых системных компонентов Windows инженер-программист Адам Берч охарактеризовал Rust как глоток свежего воздуха:

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

Берч разделяет оптимизм Фернандеса и Левика по поводу того, что разработчики на C/C++ быстро овладеют этим языком, и включил несколько интересных практических предложений по взаимодействию Rust с унаследованным кодом в руководство под названием generation of Rust data structure to represent C data.

Amazon, Google, Intel и Red Hat заинтересованы в развитии языка – они запустили совместный проект «rust-vmm». Несколько десятков репозиториев собраны в один на GitHub: компании размещают там боксы с обновлениями старых решений и новыми фичами, чтобы делится ими друг с другом и с остальным сообществом.
***

В нынешней ситуации при создании проектов нельзя забывать о безопасности, поэтому Rust сейчас на подъеме, и все больше компаний выбирают этот уникальный язык. В России он пока не так популярен, но уже очевидно – у Rust большое будущее. Если вы собираетесь начать новый проект или задумываетесь о карьере системного программиста, современную альтернативу морально устаревшим C и C++ стоит хотя бы рассмотреть.

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Go-разработчик
по итогам собеседования
Senior Java Developer
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ