Praktikum:

Funktionale Programmierung [FP-PR] (SoSe 2015)

PD Dr. David Sabel

Aktuelles

Notwendige Voraussetzungen:

Erfahrung in der funktionalen Programmierung.

Anmeldung:

Die Anmeldung fand mit dem ersten Treffen am Donnerstag, den 16. April um 14 c.t. in Raum 205a (Informatik-Gebäude) statt.

Termine Regelmäßiges Treffen: Do, 14 c.t. in Raum 205a
Projekt

Kurzbeschreibung

Im Praktikum soll ein  Interpreter / Compiler für die nebenläufige funktionale (Kern-)sprache CHF implementiert werden. CHF steht für "Concurrent Haskell with Futures" und ist eine Kernsprache von Haskell, erweitert um nebenläufige Threads, sogenannter MVars zur Synchronisation von Threads und um Futures, die zur eleganten und deklarativen nebenläufigen Programmierung genutzt werden können.

Einen kurzen Überblick über das Projekt gibt das folgende Schaubild:

Neben den Phasen des Compilierens wird ein besonderer Schwerpunkt in der Implementierung verschiedener Varianten von abstrakten Maschinen zur verzögerten Auswertung funktionaler Programme liegen. Hierbei ist CHFi der Interpreter für die Programmiersprache CHF

Die Programme werden in der funktionalen Programmierspache Haskell unter Benutzung einiger Werkzeuge für Haskell implementiert. Insbesondere werden die folgenden Werkzeuge zum Einsatz kommen:



Das Gesamtprojekt ist untergliedert in drei Projektabschnitte.

  1. Im ersten Projektabschnitt "Lexen und Parsen" wird die Erkennung der Eingabe eines CHF-Programms und ihre syntaktische Analyse implementiert.
  2. Im zweiten Projektabschnitt "Typcheck und Transformation in einfachere Syntax" werden die Compilerphasen der semantischen Analyse und der Zwischencodeerzeugung implementiert.
  3. Im dritten Projektabschnitt "Abstrakte Maschinen" wird eine Abstrakte Maschine zur Ausführung des vorher erzeugten Zwischencodes implementiert. Dies folgt einem modularen Entwurfsprinzip, so dass tatsäclich drei aufeinander aufbauende abstrakte Maschinen implementiert werden (Mark 1, IO-Mark 1 und Concurrent Mark 1). Hierbei unterstützt die Maschine Mark 1 nur die Auswertung rein funktionalen Programme ohne Seiteneffekte, die Maschine IO-Mark 1 erweitert die Mark 1-Maschine um Seiteneffekte, und die Maschine Concurrent Mark 1 erweitert die Maschine IO-Mark 1 um Nebenläufigkeit.
Material Anleitung
  • Die Anleitung zum Praktikum ist hier im PDF-Format abrufbar.
  • Der vorgegebene Quellcode, wird per CVS abrufbar sein. Genauere Informationen dazu gibt es während der ersten Besprechung.
Begleitmaterial
  • Das Begleitmaterial zum Praktikum ist enthält Erläuterungen zu einzelnen Themen des Praktikums, insbesondere zu CVS, den Haskell-Werkzeugen Happy und Haddock, sowie zur Haskell-Programmierung.
Folien Forschungsartikel passend zu den Themen des Praktikums:
  • P. Sestoft: Deriving a lazy abstract machine, Journal of Functional Programming, Volume 7(03), S. 231-264, Cambridge University Press, 1997
    Aus dem Netz der Universität kostenlos abrufbar unter diesem Link.

  • D. Sabel, M. Schmidt-Schauß: A contextual semantics for concurrent haskell with futures. In Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming, S.101-112, New York, NY, USA, July 2011. ACM. © ACM, 2011.
    Aus dem Netz der Universität kostenlos abrufbar unter diesem Link

    Weitere Details sind im Technischen Bericht zu finden.

  • D. Sabel:An abstract machine for Concurrent Haskell with futures. In S. Jähnichen, B. Rumpe, and H. Schlingloff. Hrsg., Software Engineering 2012 Workshopband, Fachtagung des GI-Fachbereichs Softwaretechnik, (5. Arbeitstagung Programmiersprachen), Berlin, volume 199 der GI Edition - Lecture Notes in Informatics, S. 29-44, 2012. © Gesellschaft für Informatik e.V.

    Weitere Details sind im Technischen Bericht zu finden.

  • D. Sabel, M.Schmidt-Schauß: Conservative concurrency in Haskell. In N. Dershowitz, Hrsg. Proceedings of the 27th Annual ACM/IEEE Symposium on Logic in Computer Science (LICS 2012), Dubrovnik, Kroatien, S. 561-570, June 2012. © IEEE.
Referenzen zur Programmiersprache Haskell:
Informationen für einzelne Studiengänge

Master / Informatik:

Diese Veranstaltung ist Pflichtveranstaltung des Moduls M-FP-PR (8 CP). Das Modul ist dem Fachgebiet "Informatik der Systeme" und der Spezialisierung "Complex Software Systems" zugeordnet.


$Author: sabel $, $Date: 2015/05/07 14:32:13 $

uni ffm © 1997, 2004