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

Programming Rust at FMI, 2021

Programming Rust at FMI, 2021

The intro lecture of the 2021 "Programming Rust" course

Andrew Radev

October 05, 2021
Tweet

More Decks by Andrew Radev

Other Decks in Programming

Transcript

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

    View full-size slide

  2. Rust

    Млад: само на 5.5_f32 години (от 1.0)

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

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

    View full-size slide

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

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

    Но няма free

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

    Няма null

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

    Няма data races

    View full-size slide

  4. Rust: low-level

    Бърз

    Zero-cost abstractions

    Малък runtime

    Съвместимост

    View full-size slide

  5. Rust: high-level

    Пакети

    Тестване

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

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

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

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

    View full-size slide

  6. Rust: community

    View full-size slide

  7. Ferris the Crustacean

    View full-size slide

  8. Ferris the Crustacean

    View full-size slide

  9. Friends of Rust

    View full-size slide

  10. Rust companies

    View full-size slide

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

    View full-size slide

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

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

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

    View full-size slide

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

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

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

    Уеб, server-side (Actix-web, Diesel, SQLx)

    View full-size slide

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

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

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

    Уеб, server-side (Actix-web, Diesel, SQLx)

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

    View full-size slide

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

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

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

    Уеб, server-side (Rocket, Diesel)

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

    Networking, async stuff (Tokio)

    Обработка на данни

    Tooling (ripgrep, xsv, fd, sd, rawk)

    Parser-и (rust-analyzer, salsa, parcel)

    Игри (ggez, godot, bevy, SHAR)

    View full-size slide

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

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

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

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

    Отворен процес: The Rust Foundation

    View full-size slide

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

    Млад език

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

    Иска време

    View full-size slide

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

    View full-size slide

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

    Домашни: 4 x 15 = 60т (може би)

    Проект: 1 x 60 = 60т

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

    View full-size slide

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

    Онлайн: http://video.fmi.rust-lang.bg

    Има парола, видима в dashboard-а

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

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

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

    View full-size slide

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

    Накратко: Да

    Ако се налага, гледайте видеото

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

    View full-size slide

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

    Discord: https://discord.gg/FCTNfbZ

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

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

    View full-size slide

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

    Кратко интро към езика от OpenFest 2017
    (spoilers!): https://youtu.be/GJfFOWv2bAg

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

    View full-size slide

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

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

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

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

    View full-size slide