ForexIndikator.net

Все операционные системы написаны на С. Не пора ли переписать их на Rust?

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

Оборачивать низкоуровневый unsafe-код в safe на Rust довольно долго, но оно того стоит. «Плюсовой» IntelliSense вряд ли сравнится с мощным rust-analyzer и справится далеко не со всем кодом, особенно с шаблонами. Раньше приходилось гуглить, копировать и компилировать исходники библиотек — та ещё головная боль. Бывало, найдёшь исходники, а компилятор не подходит, потому что он слишком старый, хедеры протухшие или версии зависимостей не совпадают. Тогда вместо готового решения придумывали своё — и это своё всегда заканчивалось кучей багов.

Совершенствуйтесь с Rust

Все жалуются на утечки памяти уже какой десяток лет. Rust пиарят тем что он безопасно работает с памятью на уровне языка без магии из кастомных shared_ptr и прочего. К unsafe приходится прибегать при создании низкоуровневых абстракций, в частности — при разработке стандартной библиотеки Rust; обычный код рекомендуется писать без unsafe. В 2009 году[23] компания Mozilla начала отдельно спонсировать разработку Rust. Спустя год язык был официально представлен на Mozilla Summit 2010[24].

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

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

«Наша целевая аудитория — это разочарованные разработчики C++. Если вы тоже вынуждены работать с C++ из-за его производительности, но ищете что-то более безопасное и менее „болезненное“ — мы надеемся, что сможем это предоставить». Все зависимости приведены в категории dependencies . Совет�� используйте комментарии для «закомментирования» разделов кода, выполнение которых не требуется, но которые позже понадобится добавить.

Наши проекты

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

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

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

Вообще синтаксическое разнообразие для поддержания OOP не так велико. Далее перечислю черты языка по убыванию важности, на мой взгляд. Генерируется манифест под названием Cargo.toml , который содержит все метаданные, необходимые Cargo для компиляции пакета, а также файл main.rs , отвечающий за компиляцию проекта. Точно так же, как при определении переменных с примитивными типами, определяем переменную Car с идентификатором, на который будем ссылаться позже. Каждый создаваемый экземпляр типа Car должен иметь значения для этих полей. Поэтому создадим экземпляр Car для конкретного автомобиля со значениями для brand (модели) и year (года выпуска).

Виртуальная машина еще дает платформонезависимость, но на сколько это необходимо — спорный вопрос, не буду его сейчас поднимать. Но если вы уже умеете программировать на C++ или Java и кто-то предлагает вам сменить профиль — есть смысл задуматься о переходе. Rust — быстрый, безопасный и компактный язык, он отлично подходит для разработки сложных проектов и систем.

Я решил попробовать Rust, потому что устал отлавливать на код-ревью (и не только) одни и те же ошибки в C++. Обязательно кто-нибудь объявит статик-лямбду и захватит в неё по ссылке нестатический временный объект. А когда код с такими ошибками коммитят, он проходит тесты, предполагающие однократный запуск. Программа попадает в продакшен, где запускается пару раз и падает.

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

Чтобы писать на Rust, мне не пришлось менять IDE. Просто подключил к VS Code code-assistant rust-analyzer (это что-то вроде майкрософтовского IntelliSense). У неё есть неплохой плагин для Rust, но при рефакторинге он может наделать делов и оказать медвежью услугу. Так что IDE от JetBrains научили меня не доверять авторефакторингу — обязательно что-нибудь да сломается. Дмитрий Свиридкин рассказал на суровом программистском языке, так ли хорош любимчик пользователей Stack Overflow. «Поставка оружия — это национальное дело. Я приветствую решительную поддержку Украины со стороны Германии», — отметил он.

Чтобы спасти положение, команда учёных создала язык EPL и продолжила работу на нём. Кроме Mozilla язык помогают развивать Google, Huawei, Microsoft и AWS. Rust бесплатный, у него открытый исходный код, поэтому сообщество разработчиков тоже может вносить вклад в развитие языка. Согласно результатам исследования, некоторые разработчики программного обеспечения по-прежнему считают Rust слишком сложным для создания крупных проектов и дальнейшего их развития. Больше четверти респондентов (26%) также выразили обеспокоенность по поводу будущей поддержки своих проектов на Rust.

Exit mobile version