Особливості Rust: сфера застосування, відмінності від інших мов, вакансії
Привіт! Я цікавлюся створенням апаратного та програмного забезпечення для вбудованих систем від 1987 р. Останні 10 років — це участь в проектах в аутсорсингових компаніях в ролі розробника.
У цій статті хочу поговорити про Rust.
Сфера застосування
Я би не вставив вибір мови програмування як наріжний камінь. Для «вільного муляра» з свободою вибору проблема стоїть скоріше в тому, який інструмент на даний момент ліпше використати: кайло чи лопата чи сокира, за умови що вона є і, що хоть якось вмієш нею користуватися. Для командної роботи — тут ще більше змінних, які впливають на вибір інструменту. З іншого боку, на мою думку, поява Rust — об’єктивна необхідність, і рано чи пізно щось би придумали подібне, тим паче, в нетрях якось корпорації.
Екосистема
Якщо мається на увазі ІDE, то в силу специфіки (написання мікросервісів), мало коли нею користуюся, і розробку веду в звичайному текстовому редакторі. Rust має чудовий пакетний менеджер, який впевнено вирішує залежність від сторонніх бібліотек та модулів. Підтримує достатньо велику кількість платформ, операційних систем та апаратних архітектур.
Приклад кроскомпіляції під Raspberry PI.
Особливості
Як на мене, основна особливість це володіння об’єктом, і пов’язані з цим дії щодо управління пам’яттю. Як наслідок, писати використовуючи Rust в стилі іншої мови програмування скоріш за все не дозволить компілятор, і на початках Вам прийдеться ламати свої звички та підлаштовуватися під нього.
Відмінності від інших популярних мов
Серед тих мов програмування, якими хоч трохи користувався (C, C++, Java, Python, Go) найближчою мені видається Golang.
Відмітив би тільки такі особливості:
- підвищене безпечність;
- кращий пакетний менеджер (не тре окремо виконувати go get щоб отримати модуль);
- нема збирача сміття;
- мінімум ручного управління пам’яттю;
- виключне володіння об’єктами;
- менший час виконання;
- основна робота на стеці, як наслідок, мінімум глобальних об’єктів.
У решті дуже подібний. Ще одна спільність з Golang, що підтримується корпорацією, тільки не Google а Mozilla.
Супутні скіли, які потрібні для розробника цієї мови
Особливих вимог не потрібно, крім бажання, терпіння, та комп’ютерної грамотності. Якщо людина навчилася писати на одній із мов програмування, то зможе на іншій.
Приклади з власного досвіду
Це, мабуть саме цікавіше, так як решту інформації досить легко знайти та прочитати. Знайомство з Rust відбулося, тому що клієнт забажав змінити оновити апаратне забезпечення, і заодно архітектуру і програмне забезпечення, оскільки технічний борг досяг критичної маси.
Оцінюючи інші альтернативи щодо написання, однією із переваг була наявність готового модуля для обробки специфічного формату даних, якого не було у інших варіантах, і його прийшлось би писати з нуля.
Зі сторони підрядника лише мені видалася така опція цікавою, решті програмістів RUST був не до смаку: «я спробував і мені не сподобалося».
Що отримав у результаті:
- швидке написання невеликих програм та модулів для підтвердження концепції (PoC — proof of concept) та мінімально цінного продукту (MVP — minimal viable product);
- досвід програмування в іншій парадигмі, яку сповідує RUST.
Не обійшлося і без ложки дьогтю.
Оскільки Rust передбачає виключне володіння об’єктами, чітку синхронізацію його використання в різних нитках,то не вийшло написати програму для асинхронної роботи із послідовним портом, тобто працювати в окремих нитках програми на прийом і передачу.
Оцінюючи інші альтернативи, такі як C, C++, Java, Python зрозумів, що подібний нескладний сервіс швидко не вийде, тому вирішив спробувати на Golang. Спроба видалася вдалою, так як потрібні пакети роботи із послідовним портом та іншими модулями існували, а працювати асинхронно з глобальним об’єктом (TTY або COM порт), який доступний в різних нитках було так само легко, як в звичайному С.
Вакансії
З цим наразі не густо, в основному блокчейн, але приходять іноді цікаві запити, наприклад, від НАСА.
Резюме
З моєї точки зору, якщо Вас все влаштовує в тій ніші, у який ви працюєте, то знайомство з Rust, скоріш за все не принесе задоволення.
Але, якщо клієнт рекомендує Rust, і готовий оплачувати час на перехід на нього, то тре використовувати таку можливість.
Якщо Ви фрілансер, і Вам важливо зробити ефективно, швидко і надійно, то Rust, це ще один додатковий інструмент у вашому арсеналі: крім «кирки та лопати» у Вас з’явиться ще «сокира».
Так як Rust досить своєрідна мова, яка поєднує багато корисних рис із таких популярних мов як C, C++, Java, Python, Golang, то в багатьох застосуваннях (веб, бекенд, вбудовані системи, блокчейн, ІоТ і т.п.) є достойним конкурентом.
Іноді, завдяки підвищеній безпечності, безальтернативним варіантом.
За нею стоїть потужна корпорація. Не забуваємо також, що вона кілька років визнана як «найулюбленіша мова розробників».
На мою думку, поступово, тихою сапою вона пробиватиме шлях на гору в рейтингах використання. Так за п’ять років Rust із 50 місця добрався до
В іншому рейтингу (який побудований на кількості запитів google щодо використання мови) 18.
1374 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів