Q&A про Rust. Відповідає Костянтин, лідер Ukrainian Rust Community

💡 Усі статті, обговорення, новини для початківців — в одному місці. Приєднуйтесь до Junior спільноти!

Привіт, спільното!

Мова Rust стає все популярнішою. Не так давно ми провели voice chat про Rust, а тепер — пропонуємо лишати свої питання, що стосуються теми, у цьому топіку. Відповідатиме Костянтин, Rust Software Engineer, лідер Ukrainian Rust Community. Відповіді на них отримаєте тут же.

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

Просимо дотримуватись цих пунктів при складанні запитань:

  • Надсилайте запитання українською мовою.
  • Ми не прийматимемо запитання з нецензурною лайкою та прямими образами.
  • Формулюйте запитання якомога чіткіше.

Чекаємо на ваші запитання!

👍ПодобаєтьсяСподобалось9
До обраногоВ обраному6
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Привіт, мене цікавить продуктивінсть rust в порівнянні з С як на одно так і багато ядернаб на скільки вона вища чи нижча ? Також цікавить програмування мікроконтроллерів на rust бо в інтернеті не дуже багато матеріалів про програмування МК на rust (AVR,Cortex), всі ide і туторіали це все С/С++

Продуктивність скомпільованого бінарника чи продуктивність розробника?

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

Ще дуже залежить від того, які фічі стандартної бібліотеки використовуються.

По програмуванню мікроконтролерів є docs.rust-embedded.org/book

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

Нічого, що зараз Rust, C і C++ для десь третини програм компілюються одним і тим же LLVM? А решта — GCC, MSVC, Intel C/C++ і іншими, у яких логіка далі зовнішнього парсеру однакова для обох мов?

Так, але у сішного компілятора є оптимізації і до LLVM. За вашою логікою тоді і швидкість С і С++ має бути однакова.

А решта — GCC, MSVC, Intel C/C++ і іншими, у яких логіка далі зовнішнього парсеру однакова для обох мов?

Ну і до чого тут Rust?

Так, але у сішного компілятора є оптимізації і до LLVM.

Є. Але у всіх указаних вони обʼєднані.
LLVM багато чого вже не робить, але все це винесено туди ж, де Clang робить свої оптимізації — наскільки мова дозволяє.

За вашою логікою тоді і швидкість С і С++ має бути однакова.

А так воно і є, якщо реалізується одне і те ж. Наприклад, якщо викликаєте у C++ віртуальний метод за назвою obj->doMoo(x,y), а у C якесь obj->softc->doMoo(obj,x,y).

Ну і до чого тут Rust?

А ви ж не тільки про порівняння з Rust говорили.

Доброго вечора! Нещодавно я вирішив почати вчити rust, так як в цілому вже давно цікавлюсь blockchain технологіями, до цього вивчав js та python, але досвіду роботи в it не маю як такого. Підкажіть будь ласка, як на вашу думку, з чого потрібно почати вивчення? Можливо, є якісь інтернет ресурси, книги, канали на YouTube?

Напевно с отримання досвіду. На суху вчити — досить дивна справа.

Оф. “The Book”, “The Rust Programming Language” від MIT (web.mit.edu/...​rust/html/book/index.html), “Rust By Example”, “Rust Language Cheat Sheet” (cheats.rs)

Так. Для вас ми зібрали все, що необхідно для старту тут:
github.com/...​ob/master/introduction.md

Долучайтеся до нашої спільноти і ставте питання тут:
t.me/rustlang_ua

не викладуйте запис на soundcloud більше. Там не можна збільшувати швидкість аудіо.

Не запуская, скажите что и почему выведет этот код:

fn d<T>(_f: T) {
    match std::mem::size_of::<T>() {
        0 => print!("0"),
        1 => print!("1"),
        _ => print!("2"),
    }
}

fn a<T>(f: fn(T)) {
    d(f);
}

fn main() {
    a(a::<u8>);
    d(a::<u8>);
}

Ваш коментар було видалено адміністратором:

Надсилайте запитання українською мовою.

Зверніться до компілятора з цими запитаннями)

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Хто в раст? Ми вже з пацанами добудовуємо базу, скоро будемо йти рейдити інших тіпів)))

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

В якій сфері раст зараз найпоширеніший та в якій буде поширеним (хоча б теоретично) в 2023

Зараз — Blockchain. В 2023 (через менше ніж через 2 тижні) — Blockchain, WebAssembly, CLI Tools. Але насправді, хто може знати що принесе наступний рік.

У сфері мрій знавців расту ;-)

Блокчейн, потім веб бекенд та розподілені системи.

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

Якими навичками слід володіти щоб пройти на junior/trainee rust типову вакансію? Зараз я так розумію що більша частина компаній готова з вами співпрацювати якщо ви або добре розбираетесь у крипті (90% наявних вакансій), або якщо у вас не малиій досвід з С/С++. Правильно розумію що з інших стеків технологій вас не возьмуть?

І друге питання — чи підходить Rust зараз для побудови production ready бекендів зі складною логікою?

Дозвольте відповім.
1) ви вже самі дали відповідь на перше ;) запитання.
2) Так, підходить, оскільки складна логіка в більшій мірі залежить від архітектури, а ніж від мови як такої.

1) Не дуже згодний з вами. На друге питання я не відповів.
2) Є мови які добре висловлюють складну бізнес логику — вони вололіють достатнью високорівневими сутностями й тому на них її простіше писати. Ви можете и на Сі написати, але там це будет 100500 строчок коду й 100500 файлів. Це стосовно «виразності» мови. А щодо побудови бекендів — ще не чув щоб десь використовували Rust саме для цього. Так, ліби є, фреймворки також, але все ж (чомусь) Rust зараз дуже не популярна мова для побудови бекендів. Комьюніті дуже стараеться але не виходить. Й тому здається що зараз rust for backend це здебільшого actix for techempower benchmarks й усе. Можливо я й помиляюсь, тому було цікаво послухати експертів стовосно цього.

Раст не буде популярною мовою, бо дуже складний.
Я робив декілька бекендів (джсон АПІ) на Расті, дуже задоволений, по складності десь як Нода з Тайпскриптом. Але я робив їх сам, не у команді.

думаю, що більше «сирий» , чим складний, і це одна з причин, чого би не вибрати його для більшості mature бізнесу

Та нє, сирості не помітив, більше складний, особливо дженерикі з асинхронністю.

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

Може і мало, я хз, скільки це, бібліотеки можна і не оновлювати, якщо не хочеш.

оновлювати і змініювати постійно інтерфейс трохи різні речі,
що там каже SOLID?

якщо порівнювати з пітоном, то так, складніше.
Але якщо з C++, то легкотня

Мав на увазі, що дуже важко читати довгі дженерики, особливо, якщо вони стосуються асинхронних результатів чи асинхронних кложурів

Також написав бекенд на rust — гарно и швидко працює — їсть зовсім трішки ресурсів. Зприводу виразності — згоден, вона дійсно допомагає, але як розробник php,js,ts скажу, що rust досить добре читається, коли звикаєш до великої кількості Generic.

Прочитати Rustbook та ще пару книжок, орієнтуватися в концепціях та екосистемі, комфортно почуватися із синтаксисом, читанні/написанні кода. З нетехнічного — мати високий інтерес до роботи та відповідально до неї ставитися. Цього достатньо. Умови такі ж як і при інтерв’юванні на позиції інших мов програмування. Сертифікація й інші пруфи, які важко підробити суттєво спростить пошук та задачу HR-а. Для старту: github.com/...​ob/master/introduction.md

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

Чи планується сертифікація накшталт OpenJS Certification and Training Programs?

Rust замінить C в майбутньому?

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

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

а що С галявинка в блокчейні?

якби С галявинка була у блокчейні, то про витіснення С Растом, ми б говорили як про факт.

Дивлячись, що ви вкладаєте в слово «замінить». С або C++ вивчають у всіх університетах світу сьогодні. Тому де-факто він є стандартом. Якщо проводити паралелі, то можна сказати, що C/C++ є Англійською серед мов програмування. Але якби це змінилося і Rust зайняло цю нішу то світова економіка, за моїм переконанням зекономила б мільярди доларів. Залежить це не лише від технічних, але й культурно-політичних факторів тому прогнозувати чи стане Rust наступником і коли важко. Одним із визначальним фактором успіху C стало його адаптація в ядрах операційних систем, а також авторитет компаній, котрі стояли за його розробкою та маркетингом. Це все є і в Rust. Вперше в історії в ядрі Linux з’явилася друга мова програмування. Майже всі гіганти ринку адаптували Rust у своїх компаніях. Rust має багато позитивних технічних характеристик. Це все є міцним фундаментом для очікування, що Rust «замінить» C/C++, як стандартна мова програмування в майбутньому.

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

> Чи зникнуть колись вакансії для С++ розробників
Ні, але варто очікувати їх скорочення. Потреба в підтримці Legacy коду не зникне ніколи.

> Чи стане Rust тою мовою на якій написано найбільше програмного забезпечення
Можливо.

> Коли Rust стане найбільш популярною мовою програмування
Rust 7-ий рік поспіль улюблена мова програмування і вперше стає найбільш бажаною обходячи Python
www.reddit.com/...​_survey_2022_as_the_most
Якщо це рахується за популярність, то вже це сталося. Якщо питання про долю ринку, то це може ніколи й не трапиться, бо в розробці програмного забезпечення є багато роботи, яка не вимагає освіти чи якихось глибоких знань, а отже може виконуватися людьми із мінімальною підготовкою. Rust заважка мова для таких сценаріїв використання, що робить мене скептиком, що Rust займе і цю нішу. Але без сумніву на Rust з часом буде писатися найбільше коду для нових проєктів, а також екосистема Rust домінуватиме над іншими екосистемами. Зокрема, тому що системна розробка це ніша Rust.

Підписатись на коментарі