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. Die Vorträge sind ungefähr für Ende Mai geplant.

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.

Datum der Blockveranstaltung: 9. und 10. Juni

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

Links

Offizielle Webseite von Rust



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