Lehrstuhl Informatik II   
Sprachen und Beschreibungsstrukturen      
   Home Lehre Sommersemester 17 Seminare The Rust Programming Language login

The Rust Programming Language

Dozent:Julian Kranz
Ort/Zeit:Blockveranstaltung
ModulNummer:IN0013
Beschreibung:    Proseminar

Vorbesprechung

Freitag, 3.2.2017 14:00, Raum 00.09.038 „Turing";  Folien der Vorbesprechung

Anmeldung

Die Anmeldung für das Seminar erfolgt über das zentrale Matching System.

Inhalt

Sicherheit, Zuverlässigkeit und Effizienz sind die drei entscheidenen Eigenschaften, die wir von moderner Software erwarten. Gegenwärtig werden aus Gründen der Effizienz viele Werkzeuge mit C++ entwickelt. Sicherheit und Zuverlässigkeit verlangen in C++ allerdings strenge Disziplin vom Programmierer, sodass hier häufig Kompromisse eingegangen werden. In Anbetracht der Probleme, die die unentwegte Beseitigung von Sicherheitslücken und Systeminstabilitäten mit sich bringen, hat die Mozilla Foundation beschlossen, die völlig neue Programmiersprache Rust zu entwickeln, die die Effizienz von C++ mit der Speichersicherheit von automatischem Speichermanagement (wie in Java und C#) und funktionalen Konzepten, wie z.B. aus Ocaml bekannt, vereint. Rust soll dabei langfristig für den Browser Firefox, der als Tor zum Netz ganz besonders auf Sicherheit angewiesen ist, eingesetzt werden. Im Zentrum des Sprachdesigns steht dabei ein ausgefeiltes System, wie das Besitztum (Ownership) von Objekten - und damit von Speicher - verwaltet wird. Mit Hilfe eines Typsystems kann so bereits der Compiler feststellen, ob Fehlbenutzungen und Speicherfehler möglich sind. Derartige Programme werden dann zurückgewiesen. In dem Proseminar sollen die einzelnen Konzepte der Programmiersprache Rust vorgestellt und an sinnvollen Beispielen illustriert werden.

Wichtigste Features von Rust im Überblick:

  • zero-cost abstractions
  • move semantics
  • guaranteed memory safety
  • threads without data races
  • trait-based generics
  • pattern matching
  • type inference
  • minimal runtime
  • efficient C bindings

Voraussetzungen

Um an diesem Seminar teilnehmen zu können, sollte man Spaß an der Programmierung mitbringen. Es wird kein Vorwissen über Programmieren in C++ oder Rust verlangt; man sollte aber bereit sein, sich in die Konzepte und Denkweisen einer Sprache einzuarbeiten.

Organisation

Das Proseminar ist für 20 Teilnehmer geplant, die jeweils in 2er-Teams arbeiten. Sie präsentieren ihr Thema in einen 30-minütigen Vortrag (auf Englisch oder Deutsch) im Rahmen einer Blockveranstaltung. Im Anschluss an den Vortrag sollen Fragen beantwortet und das Thema diskutiert werden. Die Anwesenheit bei allen Vorträgen ist zwigende Voraussetzung zum Bestehen der Veranstaltung.

Von den Teilnehmern wird außerdem eine gemeinsame Ausarbeitung (ungefährer Umfang: 10 Seiten, auf Englisch oder Deutsch) erwartet. Die Ausarbeitung muss in Latex erstellt werden (Vorlage siehe unten).

Vorträge und Ablauf der Blocktage

Raum: 02.07.034

Titel

Redner

Slot

Begrüßung

Nico, Julian

9.6.2017 @ 9:30 Uhr

Grundlegende Einführung in die Sprache und ihre Konzepte

Philipp Schmid, Andrea Matecsa

9.6.2017 @ 9:45 Uhr

IDEs und Tools

Thomas Raith, Peter Okelmann

9.6.2017 @ 10:30 Uhr

Ownership und Lifetimes

Andreas Zimmerer, Jan Schopohl

9.6.2017 @ 11:15 Uhr

Mittagspause

 

9.6.2017 @ 12:00 Uhr

Reference Counting und Garbage Collection

Clemens Ruck, Alex Egger

9.6.2017 @ 12:45 Uhr

Polymorphismus, Traits, Generischer Code

Lena Gregor, Julian Ulrich

9.6.2017 @ 13:30 Uhr

Makros

Omar Zeidan

9.6.2017 @ 14:15 Uhr

Kaffeepause

 

9.6.2017 @ 15:00 Uhr

Das Modulsystem von Rust

Nico Rösel, Yannick Schaelow

9.6.2017 @ 15:30 Uhr

Verwendung von Rust im Mikrocontrollerbereich

David Schneller

9.6.2017 @ 16:15 Uhr

Ende des ersten Seminartages

 

9.6.2017 @ 17:00 Uhr

Nebenläufigkeit (Konzepte, Standard-Library, "chan")

Saskia Riederer, Jonas Mayer

10.6.2017 @ 10:30 Uhr

IPC in Rust

Vasil Sarafov

10.6.2017 @ 11:15 Uhr

Mittagspause

 

10.6.2017 @ 12:00 Uhr

Netzwerkkommunikation in Rust, insbesondere im Vergleich mit anderen Programmiersprachen

Jurek Olden

10.6.2017 @ 12:45 Uhr

Aktuelle Anwendungen und Perspektive von Rust

Benedikt Pfleiderer, Simon Pirsch

10.6.2017 @ 13:30 Uhr

Schlusswort

Nico, Julian

10.6.2017 @ 14:15 Uhr

Ende des zweiten Seminartages

 

 10.6.2017 @ 14:30 Uhr

Um auf unerwartete Ereignisse besser reagieren zu können, bitten wir die Vortragenden darum, an beiden Tagen vorbereitet zu sein.

Wichtige Termine

  • 19. Mai 2017: Erstes Treffen (Grundlegende Ideen werden besprochen) mit Betreuer hat stattgefunden
  • 2. Juni 2017: Zweites Treffen (1. Version der Folien sind fertig) mit Betreuer hat stattgefunden
  • Blockveranstaltung: 9. und 10. Juni (Anwenseheitspflicht für Erhalt der Credits!)
  • Abgabe der Ausarbeitung: Ungefähr Mitte bis Ende Juli, genaue Deadline steht noch aus

Themenvorschläge

  • Grundlegende Einführung in die Sprache und ihre Konzepte (Pattern Matching, Mutability, Higher order functions)
  • IDEs und Tools
  • Übersicht über Projekte, die Rust aktuell einsetzen oder einsetzen wollen -> Wieso?
  • Ownership und Lifetimes
  • Reference Counting und Garbage Collection
  • Polymorphismus, Traits
  • Generischer Code
  • C-Interface: "unsafe" Code, Raw Pointers
  • Nebenläufigkeit (Konzepte, Standard-Library, "chan")
  • Das Modulsystem von Rust
  • Ausblick: Neue Features, aktuelle Entwicklungen

Material

Bitte benutzen Sie mindestens für die Ausarbeitung obige Vorlage!

Links

Offizielle Webseite von Rust

RustConf 2016 Videos



TUM - Lehrstuhl Informatik II (Sprachen und Beschreibungsstrukturen) Thanks: Tango and TinyMCE     Generationszeit: 8 ms