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%).
  • Воркшоп "PR + AI: Рисерч, Креатив, Контент" від Skvot.
    Навчіться адаптувати потенціал АІ під задачі піарника. Корисні тулзи, яким можна делегувати рутину, генерувати свіжі ідеї для контенту і піар-стратегій.
    Дізнатись більше

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

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

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

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

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

Memory safety

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

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

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

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

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

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

Онлайн-курс "Нотації BPMN" від Laba.
Опануйте мову BPMN для візуалізації бізнес-процесів, щоб впорядкувати хаос у них.Після курсу ви точно знатимете, що саме обрати для розв’язання завдань вашого бізнесу.
Дізнатись більше

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

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

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

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

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

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

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

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

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

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

Онлайн-курс "Створення електронної музики" від Skvot.
Практичний курс про те, як знайти власний стиль та написати й зарелізити свій перший трек.
Програма курсу і реєстрація

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

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

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

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

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

Онлайн-курс Pyton від Powercode academy.
Опануйте PYTHON з нуля та майте проект у своєму портфоліо вже через 4 місяця.
Приєднатися
  • геймдев;
  • системне програмування;
  • enterprise-рішення;
  • фронтенд;
  • embedded;
  • розробка для мобільних пристроїв.

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

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

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

Онлайн-курс "PR Basis" від Skvot.
Дізнайся нюанси різних сфер і обрери свою.Як результат — матимеш стратегію бренду у своєму портфоліо та зможеш стартувати в піарі. Інсайтами ділиться лекторка, яка має 9+ років досвіду.
Детальніше про курс
  • високопродуктивні розподілені системи;
  • вбудовані системи;
  • 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 існує потреба в операційній системі реального часу, особливо для програм, які повинні мати швидкий час відгуку.

Онлайн-курс "Проджект-менеджмент у геймдеві" від Skvot.
Новий левел для тих, хто хоче поєднати менеджерські скіли та любов до ігор.Отримай необхідний скілсет та керуй командою в ігровій індустрії.
Детальніше про курс

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

Англійська для початківців від Englishdom.
Для тих, хто тільки починає вивчати англійську і хоче вміти використовувати базову лексику і граматику.
Реєстрація на курс

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

Кіноклуб "Забагато драми" від Skvot.
10 лекцій та 10 практикумів, щоб зрозуміти мистецтво кіномови.Сформуй власний смак та бібліотеку фільмів і навчись писати рецензії.
Програма кіноклубу

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

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

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

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

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

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

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

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

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

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

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

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

Висновки

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

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

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

Онлайн-курс "Бренд-менеджмент" від Laba.
Розберіться в комплексному управлінні брендом: від його структури до комунікації з аудиторією.Дізнайтесь принципи побудови бренд-стратегії, проведення досліджень і пошуку свого споживача.
Детальніше про курс

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

Топ-5 найпопулярніших блогерів березня

PHP Developer в ScrumLaunch
Всего просмотровВсього переглядів
2434
#1
Всего просмотровВсього переглядів
2434
Founder at Shallwe, Python Software Engineer (Django/React)
Всего просмотровВсього переглядів
113
#2
Всего просмотровВсього переглядів
113
Career Consultant в GoIT
Всего просмотровВсього переглядів
95
#3
Всего просмотровВсього переглядів
95
CEO & Founder в Trustee
Всего просмотровВсього переглядів
94
#4
Всего просмотровВсього переглядів
94
Рейтинг блогерів

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

Топ текстів

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

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

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