Rust 2024 — различия между версиями
Snezhanna (обсуждение | вклад) (→Литература) |
Snezhanna (обсуждение | вклад) (→Литература) |
||
Строка 73: | Строка 73: | ||
* [https://doc.rust-lang.org/book/ The Rust Programming Language] - Rustbook, the first book to be read by newbie. | * [https://doc.rust-lang.org/book/ The Rust Programming Language] - Rustbook, the first book to be read by newbie. | ||
* [https://doc.rust-lang.org/stable/reference/ The Rust Reference] - The Rust language reference. Something like explained docs. | * [https://doc.rust-lang.org/stable/reference/ The Rust Reference] - The Rust language reference. Something like explained docs. | ||
− | * Learn Rust With Entirely Too Many Linked | + | * [https://rust-unofficial.github.io/too-many-lists/ Learn Rust With Entirely Too Many Linked Lists] - Just writing multiple linked lists. It may help to understand the basics of ownership. |
− | * The Cargo | + | * [https://doc.rust-lang.org/cargo/ The Cargo Book] - The Cargo package manager reference. |
− | * Rust | + | * [https://rust-lang-nursery.github.io/rust-cookbook/intro.html Rust Cookbook] - Explains how to solve simple, widespread programming tasks. |
− | * Rust API | + | * [https://rust-lang.github.io/api-guidelines/about.html Rust API Guidelines] - Official set of recommendations on how to design and present APIs. |
− | * The Little Book of Rust | + | * [https://danielkeep.github.io/tlborm/book/index.html The Little Book of Rust Macros] - Starter book about Rust Macros. |
− | * Rust Design | + | * [https://rust-unofficial.github.io/patterns/intro.html Rust Design Patterns] - Good practices of Rust programming. |
− | * The | + | * [https://doc.rust-lang.org/nomicon/index.html The Rustonomicon] - The book about Unsafe Rust. In addition, it covers some advanced safety topics such as an ownership. |
− | * Rust's Unsafe Code Guidelines Reference (UCG WG) | + | * [https://rust-lang.github.io/unsafe-code-guidelines/introduction.html Rust's Unsafe Code Guidelines Reference (UCG WG)] |
− | * The Rust Performance | + | * [https://nnethercote.github.io/perf-book/title-page.html The Rust Performance Book] - The book about optimizing Rust code. |
− | * Asynchronous Programming in | + | * [https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html Asynchronous Programming in Rust] - Introduction to asynchronous programming. |
− | * Futures Explained in 200 Lines of | + | * [https://cfsamson.github.io/books-futures-explained/introduction.html Futures Explained in 200 Lines of Rust] - Good book on futures and executors. |
− | * Guide to Rustc | + | * [https://rustc-dev-guide.rust-lang.org/ Guide to Rustc Development] - The guide to compiler development for enthusiasts. |
− | * What is rustc? - Describes some advanced usages of the rustc compiler. | + | * [https://doc.rust-lang.org/rustc/what-is-rustc.html What is rustc?] - Describes some advanced usages of the rustc compiler. |
− | * The Embedded Rust | + | * [https://docs.rust-embedded.org/book/ The Embedded Rust Book] - Programming for embedded systems in Rust. |
===Articles=== | ===Articles=== | ||
− | * Improved portability and | + | * [https://pngquant.org/rust.html Improved portability and performance] - How [https://github.com/ImageOptim/libimagequant libimagequant] library became more performant and portable (!) by rewriting C code to Rust. |
− | * Rust Collections Case Study: | + | * [https://cglab.ca/~abeinges/blah/rust-btree-case/ Rust Collections Case Study: BTreeMap] - Great post about the implementation of BTree in Rust from its author. |
− | * The Error | + | * [http://joeduffyblog.com/2016/02/07/the-error-model/ The Error Model] - Article with a perfect, step-by-step explanation of error handling models, including Rust's one, and is good and how it solves mistakes of other generations of error handling. |
− | * Finding Closure in | + | * [https://huonw.github.io/blog/2015/05/finding-closure-in-rust/ Finding Closure in Rust] - Detailed post with "straightforward" explanation of closures design. |
− | * How to organize your Rust | + | * [https://blog.logrocket.com/how-to-organize-your-rust-tests/ How to organize your Rust tests] - Answers the question "How to organize your Rust tests" :) |
===Writing idiomatic Rust code=== | ===Writing idiomatic Rust code=== | ||
− | * Writing Idiomatic Libraries in | + | * [https://www.youtube.com/watch?v=0zOg8_B71gE Writing Idiomatic Libraries in Rust] - Good talk on writing idiomatic code. |
===Conference talks about Rust=== | ===Conference talks about Rust=== | ||
− | * The History of | + | * [https://www.youtube.com/watch?v=79PSagCD_AY The History of Rust] - Just a bit of History of Rust. |
− | * How Rust Views | + | * [https://www.youtube.com/watch?v=2ajos-0OWts How Rust Views Tradeoffs] - Good talk about the aims of Rust language. |
− | * RustConf 2021 - Move Constructors: Is it Possible? by Miguel Young de la Sota | + | * [https://www.youtube.com/watch?v=UrDhMWISR3w RustConf 2021 - Move Constructors: Is it Possible? by Miguel Young de la Sota] |
− | * Rust's Journey to Async/ | + | * [https://www.youtube.com/watch?v=lJ3NC-R3gSI Rust's Journey to Async/Await] - The talk about the high-level design of async in Rust. |
− | * The Talk You've Been Await-ing | + | * [https://www.youtube.com/watch?v=NNwK5ZPAJCk The Talk You've Been Await-ing for] - Introduction to async in Rust. |
− | * Rust Programming | + | * [https://www.youtube.com/watch?v=vqavdUGKeb4 Rust Programming Techniques] - Good practices of writing idiomatic code. |
===YouTube channels=== | ===YouTube channels=== | ||
− | * Previous year | + | * [https://www.youtube.com/watch?v=XDv4I3_4Ubs&list=PL4_hYwCyhAvbeLzi699gqMUA4UaPkcdmJ Previous year course] - It is highly recommended for viewing if you missed something or did not understand |
− | * Jon Gjengset YouTube | + | * [https://www.youtube.com/c/JonGjengset/featured Jon Gjengset YouTube channel] - Excellent channel about Rust, especially "Crust of Rust" series, where several topics covered from intermediate to advanced level. |
− | * Aleksey Kladov YouTube | + | * [https://www.youtube.com/channel/UCLd3PQ6J0C-VuNBozsXGUWg/featured Aleksey Kladov YouTube channel] - If you're interested in how rust-analyzer works - it's the best channel and the best speaker. |
===Research papers=== | ===Research papers=== | ||
− | * GhostCell: Separating Permissions from Data in | + | * [http://plv.mpi-sws.org/rustbelt/ghostcell/paper.pdf GhostCell: Separating Permissions from Data in Rust] - Tricky usage of Rust type system. |
− | * Stacked Borrows: An Aliasing Model for | + | * [https://plv.mpi-sws.org/rustbelt/stacked-borrows/paper.pdf Stacked Borrows: An Aliasing Model for Rust] - On checking unsafe code. |
===Books=== | ===Books=== | ||
− | * "Rust for Rustaceans - Idiomatic Programming for Experienced Developers" by Jon | + | * [https://nostarch.com/rust-rustaceans "Rust for Rustaceans - Idiomatic Programming for Experienced Developers" by Jon Gjengset] - Perfect book that covers a lot of details about the language in-depth. |
− | * Zero To Production In Rust | + | * [https://www.zero2prod.com/index.html?country=Netherlands&discount_code=VAT20 Zero To Production In Rust] |
===Blogs=== | ===Blogs=== | ||
− | * Alastair Reid | + | * [https://alastairreid.github.io/ Alastair Reid blog] - You can find great posts about automatic verification tools in this blog. |
− | * Aleksey Kladov | + | * [https://matklad.github.io/ Aleksey Kladov blog] - Some random things about Rust. |
− | * Waffle | + | * [https://ihatereality.space/ Waffle blog] - Some random things about Rust. |
− | * Lloyd Chan | + | * [https://beachape.com/ Lloyd Chan blog] - The author usually writes on advanced usages of the type system. |
Версия 16:55, 1 февраля 2024
Общие сведения
- Семестр: весенний семестр 2024
- Формы контроля: домашние задания
- Форма регистрации на курс
- План занятий и домашних работ
- [ Таблица с оценками]
- Telegram-чат курса
Материалы занятий
Домашние задания
Планируется 11 домашних заданий.
Проверка: code review. Исправления по code review можно делать в течение 1 недели после 1-го комментария.
Название | Старт | Дедлайн |
---|---|---|
Дз 1 | ||
Дз 2 | ||
Дз 3 | ||
Дз 4 | ||
Дз 5 | ||
Дз 6 | ||
Дз 7 | ||
Дз 8 | ||
Дз 9 | ||
Дз 10 | ||
Дз 11 |
Штраф за опоздание по дедлайну: -25%
- Домашние задания
- Сдача домашних заданий
Преподаватели
- Лектор
- Денис Баринов
- Учебный ассистент
- Александр Русин
Критерии получения оценки
Домашние задания
- Домашние задания
- Сдача домашних заданий
Итоговая аттестация
Литература
«Rustbooks»
- The Rust Programming Language - Rustbook, the first book to be read by newbie.
- The Rust Reference - The Rust language reference. Something like explained docs.
- Learn Rust With Entirely Too Many Linked Lists - Just writing multiple linked lists. It may help to understand the basics of ownership.
- The Cargo Book - The Cargo package manager reference.
- Rust Cookbook - Explains how to solve simple, widespread programming tasks.
- Rust API Guidelines - Official set of recommendations on how to design and present APIs.
- The Little Book of Rust Macros - Starter book about Rust Macros.
- Rust Design Patterns - Good practices of Rust programming.
- The Rustonomicon - The book about Unsafe Rust. In addition, it covers some advanced safety topics such as an ownership.
- Rust's Unsafe Code Guidelines Reference (UCG WG)
- The Rust Performance Book - The book about optimizing Rust code.
- Asynchronous Programming in Rust - Introduction to asynchronous programming.
- Futures Explained in 200 Lines of Rust - Good book on futures and executors.
- Guide to Rustc Development - The guide to compiler development for enthusiasts.
- What is rustc? - Describes some advanced usages of the rustc compiler.
- The Embedded Rust Book - Programming for embedded systems in Rust.
Articles
- Improved portability and performance - How libimagequant library became more performant and portable (!) by rewriting C code to Rust.
- Rust Collections Case Study: BTreeMap - Great post about the implementation of BTree in Rust from its author.
- The Error Model - Article with a perfect, step-by-step explanation of error handling models, including Rust's one, and is good and how it solves mistakes of other generations of error handling.
- Finding Closure in Rust - Detailed post with "straightforward" explanation of closures design.
- How to organize your Rust tests - Answers the question "How to organize your Rust tests" :)
Writing idiomatic Rust code
- Writing Idiomatic Libraries in Rust - Good talk on writing idiomatic code.
Conference talks about Rust
- The History of Rust - Just a bit of History of Rust.
- How Rust Views Tradeoffs - Good talk about the aims of Rust language.
- RustConf 2021 - Move Constructors: Is it Possible? by Miguel Young de la Sota
- Rust's Journey to Async/Await - The talk about the high-level design of async in Rust.
- The Talk You've Been Await-ing for - Introduction to async in Rust.
- Rust Programming Techniques - Good practices of writing idiomatic code.
YouTube channels
- Previous year course - It is highly recommended for viewing if you missed something or did not understand
- Jon Gjengset YouTube channel - Excellent channel about Rust, especially "Crust of Rust" series, where several topics covered from intermediate to advanced level.
- Aleksey Kladov YouTube channel - If you're interested in how rust-analyzer works - it's the best channel and the best speaker.
Research papers
- GhostCell: Separating Permissions from Data in Rust - Tricky usage of Rust type system.
- Stacked Borrows: An Aliasing Model for Rust - On checking unsafe code.
Books
- "Rust for Rustaceans - Idiomatic Programming for Experienced Developers" by Jon Gjengset - Perfect book that covers a lot of details about the language in-depth.
- Zero To Production In Rust
Blogs
- Alastair Reid blog - You can find great posts about automatic verification tools in this blog.
- Aleksey Kladov blog - Some random things about Rust.
- Waffle blog - Some random things about Rust.
- Lloyd Chan blog - The author usually writes on advanced usages of the type system.