ru:https://highload.today/blogs/nedovolny-rabotoj-poprobujte-rust-pochemu-eto-yazyk-budushhego-i-kakie-ego-glavnye-preimushhestva/ ua:https://highload.today/uk/blogs/nezadovoleni-robotoyu-sprobujte-rust-chomu-tse-mova-majbutnogo-i-yaki-yiyi-golovni-perevagi/
logo
Мнение      25/11/2022

Недовольны работой? Попробуйте Rust: почему это язык будущего и какие его главные преимущества

Олег Щербаков BLOG

Senior Software Engineer у Yalantis

Разработка Rust не прекращается в течение 14 лет. Язык был разработан Грейденом Хором и длительное время поддерживался Mozilla. Для широкого круга Rust до сих пор остается без внимания.

Я не хочу утверждать о перспективах Rust, как о технологии, цель которой затмить другие языки. По структуре он напоминает C++, и возник на волне популярности объектно-ориентированного программирования.

Как впоследствии выяснилось, ООП нужно не всем. К примеру, в геймдеве превалирует архитектурный подход ECS (entity component system) и с объектами там не очень сложилось.

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

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

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

Основные преимущества Rust

Люди любят цифры, потому начну со статистики. Согласно опросу Rust survey 2021 года, проведенному среди 9354 разработчиков Rust, главные причины использования Rust:

  • возможность создания программного обеспечения без ошибок (96%);
  • высокая производительность языка (92%);
  • надежные характеристики безопасности (89%).
  • Курс Full-stack розробки від Mate academy.
    Станьте Full-stack розробником з нуля. Mate academy дає комплексні знання і навички для розробки повноцінних веб-рішень — від візуальної частини до серверної логіки. Ви освоїте технології, щоб створити власний проєкт від а до я — без допомоги інших.
    Ознайомитися з курсом

Возможность создания программного обеспечения без ошибок

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

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

Конечно, поладить с компилятором удается не сразу, но с накоплением опыта компилятор становится твоим лучшим другом, с которым вы занимаетесь парным программированием.

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

Безопасность памяти

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

Rust гарантирует, что у вашего программного обеспечения не будет утечки памяти.

Этот язык не требует ручного управления памятью и у него нет сборщика мусора, как у Java или C#. В приложениях C++ бывают такие случаи, когда ручное освобождение памяти не учитывается в коде заранее, что приводит к утечке памяти, и чем дольше будет существовать система, тем больше она начнет использовать. Это использование будет расти, пока системная память окончательно не закончится.

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

Свойства безопасности

По поводу безопасности: все новички в Rust видят, что для объявления переменной можно использовать два ключевых слова: let (мы объявляем переменную, которую не можем изменить) и let mut (мы объявляем переменную, в которую мы можем записывать данные не только в объявлении, но и в дальнейшем). В этом глубинный смысл Rust.

Онлайн-курс "Проджект-менеджер в ІТ" від Laba.
Навчіться запускати, контролювати й успішно реалізовувати ІТ-проєкти. Пройти весь шлях проєктного управління на реальному кейсі вам допоможе PMD із 19-річним досвідом в ІТ.
Детальніше про курс

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

Безопасность в Rust заложена в синтаксисе языка. Если говорить простыми словами, это язык со встроенным статическим анализатором кода.

Действительно очень крутым статическим анализатором, который ловит все типичные для ошибки С++. Передал по каналу ссылку на изменяющийся объект к другому потоку, а затем попытался воспользоваться этой ссылкой сам — все, не скомпилируется.

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

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

Тулинг, документация, организация и экосистема

Rust решил мою личную боль — тулинг. Это утилиты, с которыми ты как разработчик, сталкиваешься ежедневно. По сравнению с Node.js, мне очень часто приходилось менять версии и платформы, это создавало неудобства из-за необходимости пользования несколькими утилитами.

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

Аналогичная ситуация с линтером и утилитой для форматирования кода. В Node.js это были посторонние решения, в Rust — общепринятые, являющиеся частью тулчейна.

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

Курс English For IT: Communication від Enlgish4IT.
Почни легко працювати та спілкуватися з мультикультурними командами та міжнародними клієнтами. Отримайте знижку 10% за промокодом ITCENG.
Інформація про курс

Переход на Rust труден и вызывает много вопросов, но люди со всего мира охотно отвечают даже на самые глупые, и это привлекает.

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

Сообщество заботиться языке, но это исключительно мои ощущения. Существует несколько официальных и неофициальных способов получить помощь, таких как:

Сферы применения Rust

Технология Rust может быть использована в следующих областях:

Курс QA Manual (Тестування ПЗ мануальне) від Powercode academy.
Навчіться знаходити помилки та контролювати якість сайтів та додатків.
Записатися на курс
  • геймдев;
  • системное программирование;
  • enterprise-решения;
  • фронтенд;
  • embedded;
  • разработка для мобильных устройств.

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

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

С помощью Rust можно создавать:

Курс English For Tech course від Enlgish4IT.
Лише 7 тижнів по 20-30 хвилин щоденного навчання допоможуть вам подолати комунікативні бар'єри. Отримайте знижку 10% за промокодом ITCENG.
Дійзнайтеся більше
  • высокопроизводительные распределенные системы;
  • встроенные системы;
  • IoT-решения;
  • веб-сервисы.

Пример больших решений, которые планируют реализовать на Rust, — проект Linux Kernel, в основном написанный на языке C. Команда Linux решила добавить поддержку Rust при разработке модулей ядра.

2022 год может наконец стать годом для Rust внутри ядра Linux версии 6.1.

Такую информацию сообщил автор ядра Linux и координатор его разработки Линус Торвальдс на Kernel Maintainers Summit. Mozilla Firefox также перешла на Rust, что сделало его одним из самых быстрых браузеров в мире.

Системное программирование: embedded и distributed systems / IoT

Язык программирования Rust идеально подходит для встроенных систем. С помощью Rust можно разрабатывать серверную платформу Bare Metal и Real-Time Operating System.

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

Онлайн-курс Frontend-разробник від Powercode academy.
Курс на якому ти напишеш свій чистий код на JavaScript, попрацюєш із різними видами верстки, а також адаптаціями проектів під будь-які екрани. .
Зарееструватися

Tock — пример встроенной операционной системы, написанной на языке Rust. Эта ОС подходит для сенсорных сетей и платформ IoT. Tock позволяет одновременно запускать несколько приложений на компьютере с микроконтроллером.

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

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

В 2019 году компания 42 Technology анонсировала свои первые однокристальные устройства IoT, созданные на Rust. Этот язык универсален и подходит для всех уровней подключения IoT: облачных, периферийных и IoT-девайсов.

Создание инструментов отладки и тестирования

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

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

Веб-разработка (и фронтенд, и бэкенд)

Многие глобальные компании, такие как Braintree, Postmates и Snapview, используют Rust для построения бэкенда своих веб-служб. Rust подходит для оптимизации любой клиент-серверной архитектуры.

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

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

Курс Job Interview Crash Course від Enlgish4IT.
Отримайте 6 шаблонів відповідей на співбесіді, які ви зможете використовувати для структурування своїх відповідей. Отримайте знижку 10% за промокодом ITCENG.
Приєднатися

Лишь после устранения проблем с архитектурой (если они есть), мы также можем реализовать бэкенд на Rust.

Рост присутствия WebAssembly в браузере — большой плюс для Rust, поскольку открывается еще одна ниша для языка.

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

Графика и игры

Rust отлично подходит для разработки графики и игр под веб, мобильные девайсы и рабочие столы. Экосистема еще молода, но постоянно развивается.

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

Говоря о проектах, связанных с графикой, я бы отметил:

Разработка расширений для использования в других языках программирования

Кроме возможности разработки приложений для других языков, хочу сказать несколько слов о разработке библиотек для мобильных платформ.

Mozilla очень активно использует Rust не только для того, чтобы переписать критические части. В них она используется и в мобильных приложениях. Mozilla разрабатывает uniffi — решения для генерации байндингов для библиотек написанных на Rust под другие языки программирования, в частности Kotlin и Swift, используемые в Android-и iOS-проектах.

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

Ситуация с Rust на рынке технологий

Сейчас Rust готов для широкого и масштабного использования. Согласно опросу Stackoverflow за 2022 год, Rust входит в 10 самых высокооплачиваемых языков программирования в мире.

Спрос на язык программирования Rust составляет 2,4% в мировом масштабе по сравнению с другими языками. Но 5,18% опрошенных разработчиков сказали, что знают язык.

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

Англійська для IT від Englishdom.
В межах курсу можна освоїти ключові ІТ-теми та почати без проблем говорити з іноземними колегами.
Дійзнайтеся більше

Требования к языкам низкого уровня постоянно растут, но Rust очень быстро усовершенствуется и не зря считается перспективным языком программирования.

Согласно опросу CodinGame и CoderPad Tech Hiring Survey 2022 среди 14 тыс. разработчиков и рекрутеров во всем мире, вот текущее состояние спроса на разные языки программирования:

Теперь поговорим о ситуации на рынке Украины. Если мы посмотрим на популярные языки программирования, практически за каждым из них стоит большая корпорация. Новичку трудно пробиться в такую ​​тесную компанию. Но Rust постепенно завоевывает свое место. Возможно, это плохо видно из-за аутстафф-ориентированного рынка разработчиков Украины.

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

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

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

Что касается свитчинга, то переход на Rust с других языков довольно сложен. Если говорить о переходе с плюсов, то здесь будет легче. Если это JavaScript, то гораздо труднее.

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

Курс Project Manager від Powercode academy.
Онлайн-курс Project Manager. З нуля за 3,5 місяці до нової позиції Без знання коду, англійської та стресу.
Зарееструватися

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

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

В случае с Rust ты постоянно ищешь новые модули, крейты, открытия, которые можно принести в свой проект.

Выводы

В 2021 году Amazon, Google, Huawei, Microsoft, Mozilla и другие технологические гиганты создали Rust Foundation для поддержки языка и его сообщества. Постепенно это набирает обраты, а технологический мир все больше выражает доверие Rust и использует для своих решений.

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

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Онлайн-курс "Архітектура високих навантажень" від robot_dreams.
Досвід та інсайти від інженера, який 12 років створює програмне забезпечення для Google.
Програма курсу і реєстрація

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: