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-x на пошуки нових рішень.

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

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

Основні переваги Rust

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

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

Можливість створення програмного забезпечення без помилок

Повідомлення та запропоновані варіанти розв’язання проблем від компілятора Rust в більшості випадків допомагають усунути проблему швидше. Для мене комфорт розробки був ще одним вирішальним фактором у виборі Rust як наступної технології.

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

Звичайно, порозумітись із компілятором вдається не відразу, але із накопиченням досвіду компілятор стає твоїм кращим другом, з яким ви займаєтесь парним програмуванням.

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

Memory safety

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

Rust гарантує, що ваше програмне забезпечення не матиме витоку пам’яті.

Ця мова не потребує ручного керування пам’яттю й не має збирача сміття, як Java або C#. У застосунках C++ бувають такі випадки, коли ручне звільнення пам’яті не враховується в коді заздалегідь, що призводить до витоку пам’яті, і чим довше існуватиме система, тим більше пам’яті вона почне використовувати. Це використання зростатиме, доки системна пам’ять остаточно не закінчиться.

Згодом система може зависнути і перезавантажитись. Перезавантаження може відбутися будь-коли, що спричинить незручності для бізнесу та користувачів.

Властивості безпеки

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

Онлайн курс UI/UX Design Pro від Hillel IT School.
Навчіться проєктувати інтерфейси з урахуванням поведінки користувачів, розв'язувати їх проблеми через Customer Journey Mapping, створювати дизайн-системи і проводити дослідження юзабіліті, включаючи проєктування мобільних додатків для Android та iOS і розробку UX/UI на основі даних!
Дізнатися більше

Ми можемо розділити наш додаток таким чином, що при написанні багатопотокового застосунка не виникне колізій: один потік у нашій програмі змінює дані, а другий їх одночасно зчитує.

Безпека в Rust закладена у синтаксисі мови. Якщо говорити простими словами, це мова з вбудованим статичним аналізатором коду.

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

Але під час розробки важливо дотримуватися загальних заходів безпеки та не покладатися повністю на автоматичні властивості. У тих випадках, коли безпечного Rust недостатньо, ви можете скористатися «небезпечним». Це дає додаткові можливості, однак ви повинні стежити за безпекою власноруч.

Цей код може бути укладений в абстракції вищого рівня, що гарантує, що всі види використання абстракції безпечні.

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

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

В Rust є стандартизований менеджер версій, і це перша річ, яку встановлює розробник. Відсутність єдиного загальновизнаного рішення для написання та генерації документації в Node.js теж викликає труднощі. Згенерована документація проєктів відрізняється: як візуально, так і за функціоналом.

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

Оскільки спільнота Rust швидко зростає, її документація належним чином організована та достатньо детальна. Щодо спільноти, то растове ком’юніті дуже дружнє — там завжди готові допомогти початківцю.

Практичний інтенсивний курс з дизайну - Design Booster від Powercode academy.
Навчіться дизайну з нуля за 3 місяці і заробляйте перші $1000, навіть якщо ви не маєте креативного мислення, смаку або вміння малювати. Отримайте практичні навички, необхідні для успішної кар'єри в дизайні.
Зарееструватися

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

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

Спільнота дбає про мову, але це виключно мої відчуття. Існує кілька офіційних та неофіційних способів отримати допомогу, таких як:

Сфери застосування Rust

Технологія Rust може бути використана в наступних сферах:

Онлайн-курс "Математика тастатистика для Data Science" від robot_dreams.
Навчіться проводити статистичний аналіз даних за допомогою Python та розвиньте математичне мислення для розв’язання реальних завдань Data Science.
Детальніше про курс
  • геймдев;
  • системне програмування;
  • enterprise-рішення;
  • фронтенд;
  • embedded;
  • розробка для мобільних пристроїв.

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

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

За допомогою Rust можна створювати:

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

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

2022 може нарешті стати роком для Rust всередині ядра Linux версії 6.1.

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

Cистемне програмування: embedded and distributed systems / IoT

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

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

Онлайн курс з промт інжинірингу та ефективної роботи з ШІ від Powercode academy.
Курс-інтенсив для отримання навичок роботи з ChatGPT та іншими інструментами ШІ для професійних та особистих задач, котрі допоможуть як новачку, так і професіоналу.
Записатися на курс

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, може бути недостатнім. Також важливо перевірити свою архітектуру, щоб побачити, чи здатна вона витримати високе навантаження.

Онлайн-курс "Управління командою в бізнесі" від Laba.
12 занять для тих, хто прагне перетворити групу співробітників на бізнес-команду, що вмотивована на результат.Курс відповідає стандартам якості навчання PMI.
Детальніше про навчання

Лише після усунення проблем з архітектурою (якщо вони є), ми також можемо реалізувати бекенд на 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 визнає це і ухвалив свідомі дизайнерські рішення щодо зворотної сумісності та стабільності.

Курс-професія "Motion Designer" від Skvot.
55 занять, щоб освоїти софти After Effects, Cinema 4D та Octane Render — і почати створювати 2D- та 3D-анімації.А після — стартувати в будь-якій індустрії: від ТБ та кіно — до ІТ.
Детальніше про навчання

Вимоги до мов низького рівня постійно зростають, але Rust дуже швидко вдосконалюється і не дарма вважається перспективною мовою програмування.

Згідно з опитуванням CodinGame і CoderPad Tech Hiring Survey 2022 серед 14 тис. розробників і рекрутерів у всьому світі, ось поточний стан попиту на різні мови програмування:

Тепер поговоримо про ситуацію на ринку України. Якщо ми подивимося на популярні мови програмування, то практично за кожною з них стоїть велика корпорація. Новачку важко пробитися в таку тісну компанію. Але Rust поступово завойовує своє місце. Можливо, це погано видно через аутстаф-орієнтований ринок розробників України.

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

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

Якщо ви просто втомилися від суперечливих і нелогічних речей, поступово переглядайте вакансії, ходіть на співбесіди, дізнавайтеся, що запитують і визначайте свої слабкі сторони. Практикуйтесь на pet-проєктах. Допоки Rust набирає обертів в Україні, у цій сфері немає упереджень на ринку, можуть взяти як джуна, так і досвідченого світчера.

Щодо світчингу, то перехід на Rust з інших мов є доволі складним. Якщо говорити на перехід з плюсів, то тут буде легше. Якщо це JavaScript, то значно важче.

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

Курс-професія "Unreal Engine Developer" від robot_dreams.
Отримайте фундаментальні знання з розробки ігор, навчіться кодити на С++ та використовувати Blueprints і Gameplay Ability System, щоб створювати віртуальні всесвіти на топовому рівні.
Про курс

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

Отже, коли ти маєш достатньо досвіду, в тебе не виникає бажання шукати нові штуки, ти просто пишеш код.

У випадку з Rust ти постійно шукаєш нові модулі, крейти, відкриття, які можна принести у свій проєкт.

Висновки

У 2021 році Amazon, Google, Huawei, Microsoft, Mozilla та інші технологічні гіганти створили Rust Foundation для підтримки мови та її спільноти. Поступово це набирає обертів, а технологічний світ все більше виказує довіру Rust та використовує для своїх рішень.

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

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Основи Web дизайну від Hillel IT School.
Цей онлайн-курс з основ веб-дизайну дозволить вам опанувати мистецтво створення ефективних та привабливих інтерфейсів для вебсайтів і застосунків. Ви оволодієте ключовими принципами UX/UI дизайну, створюватимете дизайн-макети та прототипи, розроблятимете адаптивні інтерфейси для різних пристроїв, готуючись до професійної кар'єри в галузі веб-дизайну.
Дізнатися більше

Цей матеріал – не редакційний, це – особиста думка його автора. Редакція може не поділяти цю думку.

Найбільш обговорювані статті

Топ текстів

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

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

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