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

Programming Rust at FMI, 2020

Programming Rust at FMI, 2020

Intro lecture to the "Programming Rust" course at Sofia University, 2020.

Andrew Radev

October 05, 2020
Tweet

More Decks by Andrew Radev

Other Decks in Programming

Transcript

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

  2. None
  3. None
  4. None
  5. None
  6. None
  7. ust

  8. None
  9. Rust • Млад: само на 5.5_f32 години (от 1.0) •

    “C ме застреля в крака” • “C++ ми застреля и двата крака”
  10. Rust: безопасност • Ръчна алокация на памет ➔ Но няма

    free • Мерки против кракозастрелвания ➔ Няма null ➔ Всички references са гарантирано валидни, compile-time ➔ Няма data races
  11. Rust: low-level • Бърз • Zero-cost abstractions • Малък runtime

    • Съвместимост
  12. Rust: high-level • Пакети • Тестване • Силна статична типова

    система • Любезен компилатор • Елементи от функционалното програмиране • Елементи от ООП
  13. Rust: community

  14. Ferris the Crustacean

  15. Ferris the Crustacean

  16. None
  17. None
  18. None
  19. Friends of Rust

  20. Rust companies

  21. None
  22. None
  23. Rust: за какво се използва?

  24. Rust: употреба • Системно програмиране (Redox, coreutils) • Embedded програмиране

  25. None
  26. None
  27. Rust: употреба • Системно програмиране (Redox, coreutils) • Embedded програмиране

    • Уеб, server-side (Actix-web, Diesel, SQLx)
  28. None
  29. Rust: употреба • Системно програмиране (Redox, coreutils) • Embedded програмиране

    • Уеб, server-side (Actix-web, Diesel, SQLx) • Уеб, client-side (wasm, stdweb, yew)
  30. None
  31. 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) • Игри (ggez, Amethyst, Piston, SHAR)
  32. None
  33. Rust: откъде идват хора? • Ruby, Python – скорост, статично

    типизиране • Haskell, Scala – подобно типизиране • C/C++ – безопасност, съвместимост • Отворен процес
  34. ?

  35. Предупреждения • Млад език • Труден (за научаване, не за

    използване) език
  36. Предупреждения “На Go-то, с 2 часа седмично, накрая се чудехме

    за какво да говорим… ама на вас може да не ви стигне времето.” (Note: стигна ни)
  37. Административни неща • Домашни: 4 x 15 = 60т (може

    би) • Проект: 1 x 60 = 60т • + разни бонуси: предизвикателства, въпроси и отговори • 60т: 3 • 75т: 4 • 90т: 5 • 105т: 6
  38. Административни неща • Онлайн: http://video.fmi.rust-lang.bg • Ще има парола, видима

    в dashboard-а (евентуално) • Дни: Понеделник и сряда • Време: 19:15 – 21:00 • Ще има видео записи (освен на тази лекция), ще ги слагаме някъде в секция “Материали”
  39. Да идвате ли на лекции? • Накратко: Да • Ако

    се налага, гледайте видеото • Задължително започвайте домашните отрано
  40. Административни неща • Discord: https://discord.gg/FCTNfbZ • Снимки и имена •

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

    от OpenFest 2017 (spoilers!): https://youtu.be/GJfFOWv2bAg • Малко по-advanced, предимно за static typing: https://youtu.be/qfyhzwYWVn8
  42. Ако искате да пробвате • Най-лесния начин: https://play.rust-lang.org/ • За

    да си го инсталирате локално: https://2017.fmi.rust-lang.bg/topics/1 • Очаквайте компилационни грешки :)
  43. ?