Спеціалізовані мови програмування
VTFK • 2025
Лекція 8: Адресація пам'яті
Фокус: вивчати мову вищого рівня з безпекою
Системна мова з гарантіями безпеки пам'яті без垃圾 збирача. Компілюється в машинний код як C, але з більшою безпекою.
Аналогія: Як C++ , але без UB (Undefined Behavior) — 'Безпечніший C без втрати швидкості'
Безпека vs Контроль
| Аспект | C | Rust |
|---|---|---|
| Швидкість | Найшвидша | Рівна C |
| Безпека пам'яті | Ручна | Автоматична (ownership) |
| Buffer overflow | Можливий | Неможливий |
| Null pointer | Можливий | Не існує null |
| Потоки | Race conditions | Type-safe (Send/Sync) |
| Крива навчання | Середня | Висока |
Hello World
// Rust
fn main() {
let name = "World";
println!("Hello, {}!", name);
}
// Компілюється в machine code, як C
// Але типи перевіряються на compile-time
Менеджер пакетів та система збірки для Rust. Як npm для JavaScript, pip для Python.
Аналогія: Як Makefile на стероїдах: керує залежностями, версіями, тестами
Щодня використовується
# Створити проект
cargo new hello_rust
cd hello_rust
# Збудувати
cargo build
# Запустити
cargo run
# Релізну версію (оптимізована)
cargo build --release
# Тестувати
cargo test
Ownership — це система, яка гарантує, що пам'ять звільняється правильно, без垃圾 збирача.
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 переміщується
Далі — базовий синтаксис: змінні, типи, функції
Лекція 10: Базовий синтаксис Rust
Дякую за увагу! 💾