⚙ 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 – проект с открытым исходным кодом, и активное сообщество разработчиков поддерживает его и продолжает добавлять новую функциональность и удобные инструменты. Например, компилятор языка генерирует очень точные и информативные сообщения об ошибках, выделяет проблемный код и рекомендует способы его исправления.
Немного статистики
С 2015 года Rust был признавался разработчиками любимым языком программирования в опросе разработчиков Stack Overflow четыре года подряд (в 2016-м, 2017-м, 2018-м и 2019-м):
Год назад, Rust вошел в ТОП-10 языков программирования по величине зарплат разработчиков, работающих на нем:
По данным все того же опроса Stack Overflow, Rust входит в пятерку самых популярных языков программирования:
Rust впервые вошел в список двадцати самых популярных языков программирования TIOBE в 2020 году. А в прошлогоднем обзоре Reddit он стал вторым по популярности языком программирования после Python.
Cargo
Система сборки Cargo признана одной из самых сильных сторон экосистемы Rust. Без нее разработчикам пришлось бы искать и загружать необходимые куски кода из неизвестных источников на GitHub, создавать пакеты статических библиотек и связывать их с программой. Cargo делает все это сама без постороннего вмешательства. Эта удобная штука вшита в установочный пакет и идет в комплекте с языком.
Использование Rust в реальном мире
Кроме разработчика языка, корпорации Mozilla, использующей Rust для браузерного движка Servo и большинства проектов связанных с Firefox, довольно много компаний применяют его в своих проектах. Firecracker от Amazon Web Services полностью написан на Rust, а популярные ИТ-компании Discord, npm, Cloudflare, Figma и другие успешно разрабатывают на нем программное обеспечение.
По их словам, индустрия программного обеспечения стоит на небезопасной технологической основе, которая обходится корпорации слишком дорого. По самым скромным оценкам 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.
В нынешней ситуации при создании проектов нельзя забывать о безопасности, поэтому Rust сейчас на подъеме, и все больше компаний выбирают этот уникальный язык. В России он пока не так популярен, но уже очевидно – у Rust большое будущее. Если вы собираетесь начать новый проект или задумываетесь о карьере системного программиста, современную альтернативу морально устаревшим C и C++ стоит хотя бы рассмотреть.