Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Programming Rust at FMI, 2022

Programming Rust at FMI, 2022

The intro lecture of the 2022 "Programming Rust" course

Andrew Radev

October 04, 2022
Tweet

More Decks by Andrew Radev

Other Decks in Programming

Transcript

  1. Програмиране с ust

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. Ferris the Crustacean

    View Slide

  8. Ferris the Crustacean

    View Slide

  9. ust

    View Slide

  10. View Slide

  11. Rust

    Сравнително млад: на 7.5_f32 години (от 1.0)

    “C ме застреля в крака”

    “C++ ми застреля и двата крака”

    View Slide

  12. Rust: безопасност

    Ръчна алокация на памет

    Но няма free

    Мерки против кракозастрелвания

    Няма null

    Всички references са гарантирано валидни,
    compile-time

    Няма data races

    View Slide

  13. Rust: low-level

    Бърз

    Zero-cost abstractions

    Малък runtime

    Съвместимост (със C и не само)

    View Slide

  14. Rust: high-level

    Пакети

    Тестване

    Силна статична типова система

    Любезен компилатор

    Елементи от функционалното програмиране

    Елементи от ООП

    View Slide

  15. Rust: community

    View Slide

  16. Friends of Rust

    View Slide

  17. Open source

    View Slide

  18. Open source

    View Slide

  19. Rust: за какво се използва?

    View Slide

  20. Rust: употреба

    Системно програмиране (Redox, coreutils)

    Embedded програмиране

    View Slide

  21. View Slide

  22. View Slide

  23. Rust: употреба

    Системно програмиране (Redox, coreutils)

    Embedded програмиране

    Уеб, server-side (Actix-web, Axum, Hyper)

    View Slide

  24. View Slide

  25. Rust: употреба

    Системно програмиране (Redox, coreutils)

    Embedded програмиране

    Уеб, server-side (Actix-web, Axum, Hyper)

    Уеб, client-side (wasm, stdweb, yew)

    View Slide

  26. View Slide

  27. Rust: употреба

    Системно програмиране (Redox, coreutils)

    Embedded програмиране

    Уеб, server-side (Actix-web, Axum, Hyper)

    Уеб, client-side (wasm, stdweb, yew)

    CLI tools (ripgrep, xsv, fd, sd, rawk)

    Parser-и (rust-analyzer, salsa)

    Компилация на Javascript (SWC, deno, parcel)

    Игри (ggez, godot, bevy)

    Desktop (GTK, Tauri, Egui)

    View Slide

  28. Rust: откъде идват хора?

    Ruby, Python, Javascript (през Typescript) –
    скорост, статично типизиране

    Haskell, Scala – подобно типизиране

    C/C++ – безопасност, съвместимост

    View Slide

  29. ?

    View Slide

  30. Предупреждения

    Млад език – доста библиотечен код е на 0.x
    версии

    Няма много работа с него

    Труден (за научаване, не за използване) език

    Иска време

    View Slide

  31. Предупреждения
    “На Go-то, с 2 часа седмично, накрая се чудехме
    за какво да говорим…
    ама на вас може да не ви стигне времето.”
    (Note: стигна ни)

    View Slide

  32. Предупреждения

    Млад език – доста библиотечен код е на 0.x
    версии

    Няма много работа с него

    Труден (за научаване, не за използване) език

    Иска време

    Не пускаме преписвачи (дори и много да съжаляват
    и да са пред държавен изпит, и те само искат 3, и...)

    View Slide

  33. Административни неща

    Домашни: 4 x 15 = 60т (или 3 x 20 = 60т)

    Проект: 1 x 60 = 60т (задължителен)

    + разни бонуси: предизвикателства, въпроси
    и отговори
    ● 60т: 3
    ● 75т: 4
    ● 90т: 5
    ● 105т: 6

    View Slide

  34. Административни неща

    Дни: вторник и четвъртък

    Време: 19:15 – 21:00

    Ще опитаме да правим видео записи в
    секция “Материали”

    Ако (когато) минем онлайн, ще пишем на
    сайта и в Discord

    View Slide

  35. Да идвате ли на лекции?

    Накратко: Да

    Не е задължително, но ще помогне

    Задължително започвайте домашните
    отрано

    View Slide

  36. Административни неща

    Discord: https://discord.gg/FCTNfbZ

    Снимки и имена

    За лекции, домашни (регистрирайте се),
    видео от минали години:
    https://fmi.rust-lang.bg

    View Slide

  37. Ако още не сте зарибени

    Зарибявка за езика от BurgasConf 2022:
    https://youtu.be/u7VW5Q2YaBI

    Кратко интро с повечко детайли от OpenFest
    2017: https://youtu.be/GJfFOWv2bAg

    Малко по-advanced, предимно за static
    typing: https://youtu.be/qfyhzwYWVn8

    View Slide

  38. Ако искате да пробвате

    Най-лесния начин: https://play.rust-lang.org/

    За да си го инсталирате локално:
    https://2017.fmi.rust-lang.bg/topics/1

    Очаквайте компилационни грешки :)

    View Slide

  39. ?

    View Slide