Programowanie w języku Rust 1000-2M24RUS
Zagadnienia
* Wprowadzenie. Ekosystem języka Rust. Rustup, Cargo, Clippy, Rustfmt. “Hello world”.
* Własność. Borrow checker - najważniejsza innowacja Rusta. String vs &str, Vec
* Typy danych. Struktury i enumeracje. Dopasowanie do wzorca (pattern matching).
* Crate i moduły. Obsługa zależności. Cargo.toml.
* Eksplicytna obsługa błędów. Typ Result zamiast wyjątków, typ Option zamiast nulla.
* Typy generyczne. Trait. Static (impl) vs dynamic (dyn) dispatch.
* Wbudowane narzędzia do testowania kodu.
* Programowanie funkcyjne. Iteratory i domknięcia (closures).
* Własność cz. 2. Smart pointery. Analogie i różnice z C++.
* Wprowadzenie do współbieżności w Ruście. “Fearless Concurrency”. Wątki. Biblioteka Rayon. Iteratory równoległe.
* Programowanie asynchroniczne w Ruście. Biblioteka Tokio.
* Higieniczne makra. Makra deklaratywne, makra proceduralne.
* Kod unsafe. Gwarancje zapewniane przez kod safe. Odpowiedzialność twórcy API w Rust.
* Kompatybilność binarna z językiem C (FFI - Foreign Function Interface) - extern "C", repr(C).
* Przegląd popularnych bibliotek: log - logowanie (komunikaty diagnostyczne), clap - parsowanie argumentów linii komend, iced/egui - budowanie GUI, serde - serializacja i deserializacja danych, {anyhow, thiserror} - obsługa błędów odpowiednio w aplikacjach i bibliotekach, axum - ergonomiczny framework webowy.
Kierunek podstawowy MISMaP
Założenia (lista przedmiotów)
Programowanie obiektowe
Programowanie współbieżne
Wstęp do programowania
Koordynatorzy przedmiotu
Kryteria oceniania
Ocena w całości na podstawie projektów programistycznych.
Dwie części oceny:
1) małe zadania po każdych zajęciach, wprowadzające praktycznie w poruszane zagadnienia,
2) realizacja (w dwóch iteracjach) większego projektu o dowolnej tematyce, do uzgodnienia z prowadzącym.
Literatura
The Rust Book - https://doc.rust-lang.org/book/
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: