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.
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.
Vergleich von Haskell und F#
29.10.
,
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.
,
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.
,
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.
,
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.
Vergleich Java / C++11
19.11.
,
Andreas Simbürger
Der Vortrag soll sich auf das Speichermanagement und die Programmiertechniken in beiden Sprachen konzentrieren.
Die .NET-Sprache C#
19.11.
,
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.
,
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.
,
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.
,
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.
Scala: Zusammenspiel des funktionalen und des imperativen Teils
03.12.
,
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.
,
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.
,
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.
,
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.
Die LLVM-Sprache Julia
14.01.
,
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.
,
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.
,
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.
Logische Programmierung: Prolog
04.02.
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...?
Last modified: Tue Jul 28 16:42:45 CEST 2015