10120
Kommentar:
|
10636
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 199: | Zeile 199: |
Embedded Programmierung 1. The Embedded Rust Book https://docs.rust-embedded.org/book/ Die Beispiele im Buch laufen auf dem *STM32F3 Discovery* Board. Ich habe mehrere solche Boards im Rechnertechnik-Labor G2.16. Es gibt tatsächlich zwei Varianten dieses Buches, die man unter https://docs.rust-embedded.org/discovery/index.html findet. Die ältere Variante ist für das F3 Discovery Board von ST Micro, die jüngere Variante ist für das BBC micro::bit Board v1 oder v2. |
Systemnahe Programmierung in Rust
Prof. Dr. Hubert Högl, <Hubert.Hoegl@hs-augsburg.de>
Einführung in die Programmiersprache Rust mit Anwendungen aus der Systemprogrammierung.
Wintersemester 2022/2023, Beginn ab Freitag den 7. Oktober 2022, W3.03 (8:15 bis 11:20, plus Praktikum)
NEU Foliensätze https://hhoegl.informatik.hs-augsburg.de/sysprog/Rust/Folien
Quiz (Fragen zu "The Book"): https://hhoegl.informatik.hs-augsburg.de/sysprog/Rust/Quiz/
Moodle Kurs: https://moodle.hs-augsburg.de/course/view.php?id=6223 (nur für Ankündigungen, Gruppeneinteilung und Forumseinträge - nicht zur Abgabe von Aufgaben)
Das Kursmaterial ist in einem eigenen Gitlab Repository https://gitlab.informatik.hs-augsburg.de/snp-rust/material (VPN von aussen nötig!):
- Gliederung https://gitlab.informatik.hs-augsburg.de/snp-rust/material/-/blob/main/Inhalt.adoc
- Übungsblätter https://gitlab.informatik.hs-augsburg.de/snp-rust/material/-/tree/main/Aufgaben
Der vergangene Kurs vom Winter 21/22 (das war das erste mal Systemnahe Programmierung mit Rust) ist unter https://hhoegl.informatik.hs-augsburg.de/hhwiki/SysProgRust21. Den Quelltext der Projekte vom Winter 21/22 finden Sie unter https://hhoegl.informatik.hs-augsburg.de/sysprog/Rust/projekte-2021.
Für den Kurs vom WS 21/22 habe ich auch eine Evaluierung gemacht. Siehe die Auswertung.
Ablauf am Freitag
Am Freitag den 7.10. werden wir uns im M3.03 treffen und dabei über das weitere Vorgehen reden. Es wird in der Regel einen bis zwei Erzählblöcke geben, in denen ich Rust an Hand von Code-Beispielen so gut es geht vorstelle (ich bin selber auch noch am Lernen). Es ist auch möglich, dass ich im zweiten Block über den aktuellen Stand der Praktikumsaufgaben spreche.
Die restliche Zeit von 11:40 bis 15:30 Uhr werden wir für das Praktikum in Gruppen verwenden. Die Einteilung der Gruppen folgt noch. Jede Gruppe wird ein Repository für die Abgaben unter https://gitlab.informatik.hs-augsburg.de/snp-rust/ws22 bekommen (diese lege ich noch an).
Die Veranstaltung hat 5 SWS und bringt 6 CP. Der Gesamtaufwand von 180 Std. teilt sich auf in 75 Std. Präsenzzeit und 105 Std. Selbststudium (inkl. Praktikum und Vorbereitung auf die Prüfung).
Praktikum
Das Praktikum besteht aus regelmässigen Übungen und einem kleinen Projekt.
Die wöchentlichen Übungsaufgaben bearbeiten sie in Gruppen, jede Gruppe hat ein Repository zur Abgabe im Gitlab: https://gitlab.informatik.hs-augsburg.de/snp-rust/ws22. Die Namen sind einfach die Zahlen 1, 2, 3, ... Moodle benötigen wir zur Abgabe der Aufgaben nicht.
Die Gruppeneinteilung erfolgt in Kürze über Moodle. Sobald diese erledigt ist, trage ich eine Person aus jeder Gruppe als Maintainer in Gitlab ein, der dann die anderen Gruppenmitglieder eintragen kann.
Allgemein gilt für das Praktikum: Versuchen Sie die Aufgaben selbst zu lösen. Wenn Sie Codestücke im Internet finden und verwenden, dann kennzeichnen Sie die Stellen in ihrem Programm z.B. durch einen Kommentar mit dem Link, an dem Sie den Code gefunden haben. Es muss immer klar sein, welchen Code Sie geschrieben haben und welcher Code nicht von Ihnen stammt. Ausserdem müssen Sie den gefundenen Code verstehen und erklären können.
Prüfung
Zum Semesterende wird es eine Prüfung geben, die Online über Moodle stattfinden wird. Durch eine gute Mitarbeit bei den Übungen (und eventuell durch ein kleines Projekt) kann man bereits 25% Bonuspunkte für die Klausur erzielen.
Installation
Anleitung zur Installation der Rust Werkzeuge: https://www.rust-lang.org/tools/install
- Linux: einfach
- Windows: kann Schwierigkeiten machen (Microsoft C++ build tools)
Deshalb: Wir arbeiten in Linux, die Kommandozeile und ein simpler Editor genügen uns.
Empfehlung falls das eigene Notebook unter Windows läuft: Linux virtuell z.B. über VirtualBox betreiben. Darauf dann Rust installieren.
IDE: brauchen wir eigentlich nicht, da das Wichtigste beim Programmieren in Rust die Ausgaben (Fehlermeldungen, Warnungen, Tipps) des Rust Compilers sind. Diese kann man sehr gut auf der Kommandozeile lesen. Ich habe auch schon davon gehört, dass IDEs diese Fehlermeldungen nicht mehr so schön zugänglich machen, was natürlich kontraproduktiv wäre. Sie können aber natürlich trotzdem eine der üblichen IDEs verwenden: VSCode, Atom, Sublime, IntelliJ Rust und so weiter.
Test der Installation mit einem Beispielprogramm. Modul main.rs anlegen:
fn main() { println!("Hallo, Welt"); }
Kompilieren mit rustc main.rs. Ausführen mit ./main. Formatieren mit rustfmt main.rs.
Literaturangaben
(Tipp: Um die Bücher auf "learning.oreilly.com" lesen zu können, muss man sich zunächst auf https://go.oreilly.com/fachhochschule-augsburg einloggen.)
Für Anfänger geeignet
Steve Klabnick, Carol Nichols, The Rust Book, 2018 (auch kurz "The Book" genannt).
Dieses freie Buch werden wir als verbindlichen Text in der Veranstaltung verwenden. Man kann das Buch auch sehr gut auf dem Smartphone lesen.
https://doc.rust-lang.org/book/
Es gibt auch eine deutsche Übersetzung unter https://rust-lang-de.github.io/rustbook-de.
Carlo Milanesi, Beginning Rust: Get Started with Rust 2021 Edition, Apress 2021.
https://learning.oreilly.com/library/view/beginning-rust-get/9781484272084/
Das Buch kann im PDF Format beim Springer Link (https://link-springer-com.ezproxy.hs-augsburg.de) heruntergeladen werden.
Dumindu Madunuwan, Learning Rust, 2021 (freier Text)
Malte Luttermann, Programmierung sicherer Systeme mit Rust, Amazon Media, 2020 (Taschenbuch, 253 Seiten, 13,95 Euro). Das Buch ist eine sehr leicht verständliche Einführung in Rust, enthält aber deutlich weniger Stoff als das freie The Rust Book. Es reicht daher nicht für unsere Veranstaltung.
https://www.amazon.de/Programmierung-sicherer-Systeme-mit-Rust/dp/B086PQXH3N
Für Fortgeschrittene
Jim Blandy, Jason Orendorff, Leonora F.S. Tindall, Programming Rust, 2nd Edition, 2021 (655 pages). Sehr gründliche Einführung in Rust, die aber den Anfänger überfordert. Das Buch wendet sich auch an Leute, die bereits mit Systemprogrammierung zu tun hatten.
https://learning.oreilly.com/library/view/programming-rust-2nd/9781492052586
Marco Amann, Joachim Baumann, Marcel Koch, Rust. Konzepte und Praxis für die sichere Anwendungsentwicklung, dpunkt Verlag 2022.
https://learning.oreilly.com/library/view/rust/9781098141226/?ar=
- Rust by Example, https://doc.rust-lang.org/rust-by-example
- Rust Cookbook, https://rust-lang-nursery.github.io/rust-cookbook
Systemprogrammierung
- Jim Blandy, Jason Orendorff, Leonora F.S. Tindall, Programming Rust (siehe oben).
Ken Youens-Clark, Command-line Rust, Apress 2022
https://learning.oreilly.com/library/view/command-line-rust/9781098109424
Prabhu Eshwarla, Practical System Programming for Rust Developers, Packt, Dec 2020.
https://learning.oreilly.com/library/view/practical-system-programming/9781800560963/
Embedded Programmierung
The Embedded Rust Book
https://docs.rust-embedded.org/book/
Die Beispiele im Buch laufen auf dem STM32F3 Discovery Board. Ich habe mehrere solche Boards im Rechnertechnik-Labor G2.16.
Es gibt tatsächlich zwei Varianten dieses Buches, die man unter https://docs.rust-embedded.org/discovery/index.html findet. Die ältere Variante ist für das F3 Discovery Board von ST Micro, die jüngere Variante ist für das BBC micro::bit Board v1 oder v2.
Sammlungen von Projekten
Carlo Milanesi, Creative Projects for Rust Programmers, Packt 2020.
https://learning.oreilly.com/library/view/creative-projects-for/9781789346220/
Shing Lyu, Practical Rust Projects: Building Game, Physical Computing, and Machine Learning Applications, Apress 2020. Das Buch kann im PDF Format beim Springer Link (https://link-springer-com.ezproxy.hs-augsburg.de) heruntergeladen werden.
https://learning.oreilly.com/library/view/practical-rust-projects/9781484255995/
Rust Language exercises on Exercism
Anregungen für kleine Projekte
Shing Lyu, Practical Rust Projects: Building Game, Physical Computing, and Machine Learning Applications, Apress 2020. Z.B. Kapitel 5, Physical Computing in Rust, ein simples Experiment für Raspberry Pi 3 mit LED und Taster auf einem Steckbrett.
https://learning.oreilly.com/library/view/practical-rust-projects/9781484255995/
Shing Lyu, Practical Rust Web Projects: Building Cloud and Web-Based Applications, Apress 2021.
https://learning.oreilly.com/library/view/practical-rust-web/9781484265895/
Carlo Milanesi, Creative Projects for Rust Programmers, Packt Publishing 2020.
https://learning.oreilly.com/library/view/creative-projects-for/9781789346220/
Ken Youens-Clark, Command-Line Rust, O'Reilly 2022.
https://learning.oreilly.com/library/view/command-line-rust/9781098109424/
Python Module in Rust erstellen
https://hhoegl.informatik.hs-augsburg.de/sysprog/Rust/ix.11.2022-Python-Module-mit-Rust.pdf
Dateiverschlüsselung, von Go nach Rust übertragen
https://hhoegl.informatik.hs-augsburg.de/sysprog/Rust/LM-12-2022-Age.pdf
Joseph F. Nusairat, Rust for the IoT. Building Internet of Things Apps with Rust and Raspberry Pi, z.B. Kapitel 9, Raspberry Pi Sense Hat.
https://link-springer-com.ezproxy.hs-augsburg.de/book/10.1007/978-1-4842-5860-6