Чому Rust - улюблена мова розробників

Чому Rust - улюблена мова розробників
Переклад 11 хв. читання
02 жовтня 2023

Rust продовжує очолювати хіт-паради як найулюбленіша та найбажаніша мова серед розробників, і в цій статті ми зануримося трохи глибше в те, як (і чому) Rust завойовує серця розробників по всьому світу.

Вже восьмий рік поспіль Rust очолює рейтинг "найбажанішої мови програмування" у щорічному опитуванні розробників Stack Overflow. А оскільки понад 80% розробників повідомили, що хотіли б знову використовувати цю мову в наступному році, варто замислитися, як мова, створена менш як 20 років тому, змогла завоювати серця розробників по всьому світу.

У цій статті ми розглянемо історію Rust, для чого вона зазвичай використовується, чому розробники так її люблять, а також деякі ресурси, які допоможуть вам почати вивчати одну з найбільш динамічно зростаючих мов на GitHub.

Отже, що таке мова програмування Rust?

Rust - це мова системного програмування, яка спочатку була задумана як безпечніша альтернатива мовам C та C++, але набула значної популярності серед розробників завдяки своєму акценту на безпеці, швидкості та продуктивності. Rust є статично типізованою мовою, тому типи змінних і виразів визначаються і перевіряються під час компіляції, що допомагає підвищити безпеку пам'яті та виявлення помилок, що призводить до надійніших збірок.

У 2006 році розробник програмного забезпечення Грейдон Хоар розпочав роботу над Rust як особистий проєкт під час роботи в Mozilla. Згідно з інтерв'ю MIT Technology Review, натхненням для Rust став зламаний ліфт у багатоквартирному будинку Хоара. Програмне забезпечення системи управління ліфтом вийшло з ладу, і Хоар зрозумів, що подібні проблеми зазвичай виникають через проблеми з тим, як програма використовує пам'ять.

Досить часто програмне забезпечення для таких типів пристроїв пишуть на C або C++, але ці мови вимагають значних зусиль для управління пам'яттю, що може призвести до помилок, які можуть спричинити збій системи. Тож Хоар почав працювати над тим, як створити мову програмування, яка була б одночасно компактною і не вимагала б багато пам'яті.

Пізніше він показав проєкт менеджеру, що призвело до того, що у 2009 році Mozilla спонсорувала його в рамках довгострокових зусиль, спрямованих на включення мови в розробку експериментального рушія браузера. У 2010 році Mozilla Research офіційно оголосила про проєкт Rust і випустила вихідний код для широкого загалу як проєкт з відкритим вихідним кодом. Після кількох років розробки Rust досяг стабільного та зрілого стану - і в травні 2015 року було випущено Rust 1.0. Ця подія означала, що Rust готовий до масового використання, і стала основою для розробників, від якої вони могли відштовхуватися.

З моменту виходу версії 1.0 популярність Rust стрімко зросла, а провідні програми, такі як Microsoft Windows, використовують Rust для переписування основних бібліотек з кодом, що не займає багато пам'яті. Окрім технологічних гігантів, Rust також має енергійну спільноту розробників, або "Rustaceans", які прагнуть зробити використання Rust активним та спільним.

Цікавий факт: ``Кажуть, що Rust отримав свою назву на честь особливо міцного типу грибів, які за словами Хоара, "надмірно пристосовані до виживання".

Чому Rust - улюблена мова розробників Це Ферріс, неофіційний талісман Rust!

Згідно з нещодавнім опитуванням SlashData, у 2023 році у світі налічуватиметься приблизно 2,8 мільйона Rust-розробників, і ця кількість зросла майже втричі за останні два роки. Завдяки великій кількості активних форумів, документації та спільноті, що підтримує розробників усіх рівнів кваліфікації, не дивно, що Rust продовжує очолювати списки найбажаніших мов.

Що робить Rust особливою?

Отже, які ж ключові особливості Rust роблять її такою привабливою для розробників?

Простіше кажучи, Rust вирішує деякі з найнеприємніших проблем управління пам'яттю, які зазвичай асоціюються з мовами C та C++, але це не єдина його перевага. Один зі штатних інженерів-програмістів GitHub, Джейсон Орендорф (Jason Orendorff), який є співавтором книги про програмування за допомогою Rust, сказав про цю мову наступне:

"Як на мене, найкраще в Rust те, що вона одночасно швидка і надійна", - каже Орендорф. "Вона дозволяє мені писати багатозадачні програми, які працюють на 16 ядрах, і зберігати їх читабельними, ремонтопридатними та без збоїв. Це також дозволяє мені писати дуже низькорівневі алгоритми, що вимагають контролю над розподілом пам'яті, і підтягувати крайт, який робить HTTPS-запити надзвичайно простими. Саме поєднання цих можливостей робить Rust таким унікальним".

Спираючись на це, ось ще кілька характеристик і можливостей, які вже стали улюбленими:

  • Паралелізм. Rust має вбудовану підтримку паралельного програмування завдяки системі власності, яка забезпечує суворі правила доступу до даних, та моделі запозичення, яка запобігає гонці даних, дозволяючи контрольований одночасний доступ. Це гарантує, що декілька потоків можуть працювати над спільними даними без проблем з пам'яттю.
  • Відсутність прибирання сміття. На відміну від деяких мов програмування, Rust не використовує збірку сміття. Натомість його правила володіння та запозичення керують пам'яттю, що допомагає розробникам мати точний контроль над розподілом та вивільненням пам'яті для ефективного управління ресурсами.
  • Менеджер пакетів. Вбудований у Rust менеджер пакетів Cargo спрощує управління проєктами, відстеження залежностей та збірку, що сприяє ефективному та організованому робочому процесу розробки. Але це не дає зрозуміти, наскільки божевільною є екосистема Cargo. За словами Орендорфа, "Моя команда використовує високоякісні пакети з відкритим вихідним кодом для хешування, серіалізації, багатопотоковості, структур даних, стиснення та багато іншого. Це критично важливі для продуктивності бібліотеки. Без деяких з них наш проєкт з переосмислення пошуку коду на GitHub був би неможливий". І ось цікавий факт: Rust була фактично першою мовою системного програмування, яка мала стандартний менеджер пакетів, і, як результат, екосистема Rust є неймовірно надійною.
  • Абстракції з нульовою вартістю. Ця функція дозволяє розробникам писати високорівневі абстракції та функції коду без жодних накладних витрат на продуктивність під час виконання.
  • Зіставлення шаблонів. Ця потужна функція мови дозволяє розробникам стисло та ефективно зіставляти складні структури даних з конкретними шаблонами, щоб витягувати та обробляти різні випадки або сценарії у чистий та читабельний спосіб.
  • Виведення типів. Ця функція дозволяє компілятору Rust автоматично визначати вираз на основі контексту під час кодування. "Багато мов програмування мають деяке виведення типів, - каже Орендорф. "C# та C++ є трохи, Rust має трохи більше, а такі мови, як Haskell, Scala та ML мають ще більше".

fn main() {
    break rust;
}

Запустіть цей код як інсайдерський жарт для Rust-розробників 😆

Для чого зазвичай використовується Rust?

Завдяки прямому доступу до апаратного забезпечення та пам'яті, Rust добре підходить для вбудованих систем та bare-metal розробки. А оскільки це мова загального призначення, її також можна використовувати для різноманітних програм.

Розгляньмо кілька ключових випадків використання:

Використання Rust для створення критично важливих до продуктивності бекенд-систем

Критично важливі до продуктивності бекенд-системи - це програмні компоненти або сервіси, які виконують завдання, що вимагають високошвидкісної обробки, низької затримки та ефективного використання ресурсів - і продуктивність, безпека потоків та обробка помилок Rust роблять його чудовим вибором для розробки систем такого типу. Власне, ми використовуємо Rust для створення деяких з цих систем на GitHub. Наприклад, бекенд нашої функції пошуку коду написаний на Rust (і ви можете прочитати більше про розробку новітнього пошуку коду на GitHub за допомогою Rust).

Використання Rust для розробки операційних систем

Rust було створено для розв'язання проблем з операційними системами (пам'ятаєте проблему з ліфтом?) - тож не дивно, що його часто використовують для створення операційних систем, ядер, драйверів пристроїв та інших низькорівневих компонентів, де контроль над пам'яттю та продуктивністю має вирішальне значення. Redox, Unix-подібна операційна система, була написана на Rust, що сприяє її найважливішій особливості: безпеці. "Fuchsia - це ще один приклад, який був створений в Google, - сказав Орендорф. "Якщо у вас є смарт-колонка Google Nest, вона, швидше за все, працює під управлінням Fuchsia".

Rust для коду, пов'язаного з операційною системою

Rust також добре підходить для написання коду, який виконує завдання, що тісно взаємодіють з операційною системою. Наприклад, команда Codespaces на GitHub використовує Rust для підвищення швидкості запуску віртуального диска в GitHub Codespaces та оптимізації використання сховища Azure. Coursera також використовує Rust у своїй онлайн-системі оцінювання, оскільки вона працює в Docker і потребує мови, яка компілюється в машинний код з мінімальною кількістю залежностей.

Використання Rust для веб-розробки

Rust все частіше використовується для веб-розробки, особливо на стороні сервера. Асинхронна модель програмування та характеристики продуктивності Rust роблять її зручною для створення високопродуктивних веб-серверів, API та бекенд-сервісів. Крім того, з'явилася велика кількість веб-фреймворків для Rust, таких як Rocket, які можуть допомогти почати писати безпечні веб-застосунки. Поява цих фреймворків підкреслює позицію Rust як зрілої мови, а також допомагає збільшити підтримку для людей, які хочуть використовувати Rust у роботі з інтерфейсом або бекендом.

Використання Rust для крипто- та блокчейн-розробки

Швидкість, управління пам'яттю та безпека Rust сприяють його використанню в технологіях криптовалют та блокчейну. Наприклад, Polkadot, який розроблений для забезпечення сумісності та взаємодії між декількома блокчейнами для безпечного та децентралізованого обміну інформацією та активами, використовує Rust для побудови своєї основної інфраструктури. Логіка виконання Polkadot, яка керує поведінкою та правилами блокчейну, також написана на Rust. Перевірте цей репозиторій, awesome-blockchain-rust, щоб знайти деякі корисні компоненти для створення власних блокчейн-додатків за допомогою Rust.

Використання Rust для створення інструментів CLI

Компіляція Rust в ефективний машинний код та виразний синтаксис роблять його чудовим вибором для створення інструментів та додатків командного рядка. Крім того, написання програми командного рядка - це чудовий спосіб вивчити Rust і відчути себе комфортно в ньому. Погляньте на цей вичерпний посібник про те, як створити власний CLI-додаток за допомогою Rust за 15 хвилин!

Використання Rust для розробки вбудованих систем та IoT

Мінімальний час виконання та контроль над розміщенням пам'яті роблять Rust неймовірно корисним для розробки вбудованих систем та пристроїв Інтернету речей (IoT). Його здатність запобігати помилкам, пов'язаним з пам'яттю, керувати паралелізмом та генерувати невеликі, ефективні двійкові файли задовольняє потреби IoT у безпеці, реальному часі та ефективності.

Чому розробники люблять Rust

Хоча база користувачів Rust не така велика, як у Java чи Python, вона продовжує конкурувати з лідерами у списках найпопулярніших мов в інтернеті. Існує навіть цілий веб-сайт, що складається з хвалебних відгуків розробників про Rust.

Але чому саме Rust так захоплює розробників? Якщо звести все до кількох причин, чому розробники так люблять Rust, то це швидкість, безпека та продуктивність мови.

Крім того, Rust продовжує розвиватися і поповнюватися новими фреймворками, інструментами та ресурсами. Ви можете стежити за внесками у розвиток мови у репозиторії awesome-rust, який містить вражаючий список коду та ресурсів Rust.

Підсумок: Захоплення Rust - це не просто прийняття мови, це прийняття способу мислення, який надає пріоритет інноваціям без шкоди для основних принципів стабільності та безпеки.

Джерело: Why Rust is the most admired language among developers
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (2)
    1. Alex

      Думаю це натяк на помилку яку видасть компілятор

      error: internal compiler error: It looks like you're trying to break rust; would you like some ICE?
      
      note: the compiler expectedly panicked. this is a feature.
      
      note: we would appreciate a joke overview: https://github.com/rust-lang/rust/issues/43162#issuecomment-320764675
      
      1 місяць тому ·
      1
      p.s.
Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація