Dozenten:
Prof. Christian Lengauer + Mitarbeiter (Lehrstuhl für Programmierung)
Ankündigung:
Mittwoch, 01.07.2015, 18 Uhr s.t im HS 13 IM (Folien)
Vorbesprechung:
Mittwoch, 15.07.2015, 9 Uhr s.t.(!) im Raum 242 IM
Termin:
Donnerstag, 10-12 Uhr im Raum 004 IM (nicht 040!)
Veranstaltungsnummern:
5798HS (Bachelor) / 5799HS (Master)
Seminarinhalt

Die Wahl der geeigneten Programmiersprache ist ein wesentlicher Schritt zum Erfolg eines Softwareprojekts. In den letzten zwei Jahrzehnten ist ein deutlicher Trend hin zu abstrakteren und domänenspzifischeren Sprachkonstrukten zu verzeichnen. Gleichzeitig gibt die Verbreitung von parallelen Hardware-Architekturen Anlass zu speziellen Sprachen oder Sprachergänzungen.

Das Seminar soll einige dieser Entwicklungen beleuchten. Die angebotenen Themen decken ein breites Spektrum ab und behandeln hauptsächlich Ansätze, von denen wir erwarten, dass sie für Sie in Zukunft von Bedeutung sein werden. Es besteht die Möglichkeit, selbst ein Thema vorzuschlagen. Dies muss von den Dozenten aber explizit genehmigt werden.

Seminarform

Das Seminar wird in Form von Doppelvorträgen im zweiten und dritten Semesterdrittel abgehalten werden. Jeder Vortragsslot ist inkl. Fragen eine Stunde lang. Neben dem Foliensatz zum Vortrag wird am Ende des Semesters eine etwa 15-seitige schriftliche Ausarbeitung erwartet, die unabhägig lesbar sein soll.

Funktionale Sprachen

  • Vergleich von Haskell und F#
    29.10. Thomas Lang, Armin Größlinger

    F# ist eine funktionale Programmiersprache von Microsoft für .NET, die mit OCaml und ML verwandt ist. F# bietet darüber hinaus aber auch objektorientierte und sogar imperative Features. Haskell ist dagegen eine rein funktionale Sprache. Der Vortrag soll diese beiden Sprachen gegenüberstellen.

  • Elm
    29.10. Christoph Woller, Stefan Ganser

    Elm ist eine funktionale Programmiersprache zur Webprogrammierung. Im Vordergrund stehen reaktive Programmierung und das Model View Controller Pattern.

  • Staging in MetaOcaml
    05.11. Victor Schlegel, Armin Größlinger

    MetaOcaml eignet sich hervorragend zur Metaprogrammierung mittels Staging. Staging ermöglicht die Erstellung von äußerst flexiblen Programmmodulen ohne Belastung durch viele Parameter oder Ineffizienzen zur Laufzeit.

  • Typen in JavaScript
    05.11. Christian Bielert, Stefan Ganser

    Aufbauend auf den Vortrag zu Elm wird hier die Programmiersprache JavaScript betrachtet. JavaScript hat in den letzten Jahren wesentlich zu Innovationen in der Webprogrammierung beigetragen. Gleichzeitig steht die Sprache wegen ihrer dynamischen Typisierung in der Kritik. Der Vortrag soll JavaScript und die optional typisierten Alternativen TypeScript und Dart gegenüberstellen. Zusätzlich wird auf Flow, ein Werkzeug zur statischen Typprüfung von JavaScript, eingegangen.

Imperative Sprachen

  • Vergleich Java / C++11
    19.11. Tobias Stangl, Andreas Simbürger

    Der Vortrag soll sich auf das Speichermanagement und die Programmiertechniken in beiden Sprachen konzentrieren.

  • Die .NET-Sprache C#
    19.11. Stefan Brand, Armin Größlinger

    Das .NET Framework ist eine objektorientierte Laufzeitumgebung ähnlich des Java Runtime Environment, die ein plattformunabhängiges Programmieren in unterschiedlichen Sprachen, wie z.B. C#, erlaubt. Nachdem Microsoft Ende 2014 angekündigt hat, den gesamten Quellcode des Frameworks für andere nutzbar zu machen, könnte dies die Verbreitung von .NET Anwendungen auch außerhalb von Windows vorantreiben.

  • Swift
    26.11. Nikolay Tarashchenko, Armin Größlinger

    Swift ist eine neue Programmiersprache von Apple. Sie soll die (im Apple-Umfeld weit verbreitete) Sprache Objective-C ablösen und moderne Sprachfeatures, wie sie häufig in Skriptsprachen zu finden sind, in eine performante, kompilierte Sprache integrieren. Aktuell ist Swift nur auf Apple-Systemen nutzbar, Ende 2015 soll Version 2.0 von Swift aber als Open Source verfügbar gemacht werden.

  • Die C++-Alternative Rust
    26.11. Georg Seibt, Stefan Ganser

    Laut ihrer Webseite ist Rust eine Sprache mit einer extrem effizienten implementierung, die kaum zu Segmentation Faults führt und die Fadensicherheit garantiert.

  • Communicating Sequential Processes (CSP) in Go
    03.12. Benedikt Lang, Andreas Simbürger

    Tony Hoare's Prinzip der Communicating Sequential Processes (CSP) wurde in den 80er Jahren in der implementierten Sprache occam umgesetzt, der Programmiersprache des transputers. Heute erscheint es in moderner Form in der Sprache Go.

Domänenspezifische Sprachen für das Hochleistungsrechnen

  • Scala: Zusammenspiel des funktionalen und des imperativen Teils
    03.12. Philipp Auersperg-Castell, Stefan Kronawitter

    Scala ist die zur Zeit modernste und vielvesprechendste objektorientierte Programmiersprache. Sie besteht aus einem funktionalen Kern und einer imperative Hülle. Wie man damit die Vorteile beider Paradigmen vereinen kann, soll dieser Vortrag beleuchten.

  • Projekt Spiral in Scala
    10.12. Sebastian Schweikl, Stefan Kronawitter

    Spiral ist ein sehr erfolgreicher Ansatz zur domänenspzifischen Programmierung von Hochleistungsprogrammen. Dieser Vortrag soll eine teilweise Reimplementierung von Spiral in Scala beleuchten.

  • Die domänenspezifische Stencilsprache ExaSlang
    10.12. Thomas Ziegler, Stefan Kronawitter

    ExaSlang ist die domänenspezifische Sprache des Lehrstuhlprojekt ExaStencils zur Entwicklung hochperformanter Programme zur Berechnung partieller Differentialgleichungen, sog. Stencil-Codes.

  • Partitioned Global Address Space (PGAS) Sprachen
    14.01. Alexander Denk, Stefan Ganser

    Das Prinzip des Partitioned Global Address Space (PGAS) stellt dem Programmierer eine abstrakte Sicht eines verteilten Speichers zur Verfügung, die explizite Kommunikationsdirektiven unnötig macht. Viele moderne Sprachen experimentieren mit diesem Prinzip: Chapel, Co-Array Fortran, X10, Unified Parallel C.

Workbench-Sprachen

  • Die LLVM-Sprache Julia
    14.01. Christian Kapfhammer, Andreas Simbürger

    Das Design und der just-in-time Compiler der Sprache Julia verleihen Programmen eine Performanz vergleichbar mit C.

  • Die Xtext-Sprache Xtend
    21.01. Dominik Danner, Armin Größlinger

    Xtend Ist ein domänenspezifischer Dialekt von Java zur Programmierung von Eclipse. Ein anderer Vertreter solcher "Workbench"-Sprachen, ebenfalls für Eclipse, ist Spoofax.

  • GNU R
    21.01. Zsuzsanna Huber, Andreas Simbürger

    R bietet neben einer Programmiersprache eine gesamte Entwicklungsumgebung für statistische Berechnungen und Grafiken und wird weitläufig auf einer Vielzahl von Plattformen eingesetzt. Hier sollen grundsätzliche Sprachfeatures und Performance im Vergleich zu Sprachen wie Julia beleuchtet werden.

Zusatzveranstaltung

  • Logische Programmierung: Prolog
    04.02. Christian Lengauer

    In seiner reinsten Form nimmt das Paradigma der logischen Programmierung dem traditionellen Programmierer nicht nur das Prinzip der wiederholten Zuweisung, sondern auch das Prinzip der Richtung einer Berechnung von Eingabe zu Ausgabe. Beide diese Prinzipien können dem Paradigma jedoch hinzugefügt werden, sodass man mit ihm sowohl funktional als auch imperativ programmieren kann. Die Frage ist, ob man es tun sollte...?

Hinweis: Es gibt (alte aber größtenteils heute nicht minder gültige) Hinweise zur Vorbereitung und Präsentation von Seminarvorträgen.
Wichtig: Im Seminar besteht Anwesenheitspflicht!

Christian Lengauer

Last modified: Tue Jul 28 16:42:45 CEST 2015