ЛЕКЦІЯ 9

Вступ до Rust: Переваги, філософія, Cargo та Codespaces

Спеціалізовані мови програмування

VTFK • 2025

Що вже вивчили

Лекція 8: Адресація пам'яті

  • Assembly бази: MOV, ADD, CMP
  • Прапорці та умовні переходи
  • Робота з пам'яттю та регістрами

План лекції

  • Rust: історія та філософія
  • Порівняння C vs Rust
  • Cargo: менеджер проектів
  • Встановлення та Hello World

Фокус: вивчати мову вищого рівня з безпекою

Rust

Rust Programming Language

Системна мова з гарантіями безпеки пам'яті без垃圾 збирача. Компілюється в машинний код як C, але з більшою безпекою.

Аналогія: Як C++ , але без UB (Undefined Behavior) — 'Безпечніший C без втрати швидкості'

Rust в ландшафті мов

Безпека vs Контроль

%%{init: {"theme": "neutral", "mermaid": {"version": "11.12.2"}}}%% flowchart LR SAFE["Безпечні
Python, Java"] RUST["Rust
Системна
Безпечна"] FAST["Швидкі
C, C++"] SAFE -->|Потрібна
швидкість| RUST FAST -->|Потрібна
безпека| RUST style RUST fill:#FFE5E5 style SAFE fill:#E5F3FF style FAST fill:#E5FFE5

Rust vs C: порівняння

Аспект C Rust
Швидкість Найшвидша Рівна C
Безпека пам'яті Ручна Автоматична (ownership)
Buffer overflow Можливий Неможливий
Null pointer Можливий Не існує null
Потоки Race conditions Type-safe (Send/Sync)
Крива навчання Середня Висока

Філософія Rust

Rust vs C: простий приклад

Hello World

// Rust
fn main() {
    let name = "World";
    println!("Hello, {}!", name);
}

// Компілюється в machine code, як C
// Але типи перевіряються на compile-time

Встановлення Rust

Cargo

Cargo

Менеджер пакетів та система збірки для Rust. Як npm для JavaScript, pip для Python.

Аналогія: Як Makefile на стероїдах: керує залежностями, версіями, тестами

Cargo: основні команди

Щодня використовується

# Створити проект
cargo new hello_rust
cd hello_rust

# Збудувати
cargo build

# Запустити
cargo run

# Релізну версію (оптимізована)
cargo build --release

# Тестувати
cargo test

Міні-вікторина

Що таке 'ownership' в Rust?

  • Гарантія, що тільки один власник змінної в раз
  • Як GC в Python
  • Object-oriented концепція
✅ Правильна відповідь: Гарантія, що тільки один власник змінної в раз
💡 Пояснення:

Ownership — це система, яка гарантує, що пам'ять звільняється правильно, без垃圾 збирача.

Помилка: очікувати C синтаксис

⚠️ ЗАСТЕРЕЖЕННЯ

Rust вимагає перевірок на compile-time

❌ Неправильно

fn main() {
    let x = 5;
    println!("{}", x);
    println!("{}", x);  // Скопіює int
    // x.clone() непотрібна для чисел
}

Rust копіює примітивні типи автоматично

✓ Правильно

fn main() {
    let x = 5;
    println!("{}", x);
    println!("{}", x);  // Все працює
    
    // Для String: потрібне клонування
    let s = String::from("hello");
    let s2 = s.clone();  // Явне клонування
}

Copy types (int, bool) копіюються; String переміщується

Переваги Rust над C

Підсумки

  • Rust: C-рівень швидкості + безпека
  • Cargo: повне управління залежностями
  • Ownership: гарантія правильної пам'яті

Далі — базовий синтаксис: змінні, типи, функції

Домашнє завдання

Наступна лекція:

Лекція 10: Базовий синтаксис Rust

📚 Корисні ресурси:

📚 Корисні ресурси:

Дякую за увагу! 💾

← Повернутися до списку лекцій