Modul Deklarative Programmiersprachen

Sommersemester 2014
Arbeitsgruppe Programmiersprachen und Übersetzerkonstruktion

Nr. Art Termine Raum Veranstalter
080039 V4 Di 10:15 - 11:45 LMS2 - R.Ü1 Hanus
    Do 10:15 - 11:45 LMS2 - R.Ü1  
080036 Ü2 Do 8:30 - 10:00 LMS2 - R.Ü1 Hanus, Tikovsky

Vorlesungsbeginn

Dienstag, 15.4.2014, 10:15 Uhr, LMS2-Ü1

Zielgruppe

Studierende im Masterstudiengang Informatik und im Hauptstudium des Studiengangs Diplominformatik sowie Studierende mit Nebenfach Informatik

Voraussetzungen

Grundstudium (1.-4. Semester) in Informatik, insbesondere Module Programmierung und Fortgeschrittene Programmierung (das Skript zu dieser Vorlesung ist hier innerhalb der CAU zugreifbar)

Inhalt

Aufgrund der Komplexität heutiger Software-Systeme ist die Verwendung von Programmiersprachen mit einem hohen Abstraktionsniveau notwendig. Deklarative Sprachen bieten hierzu wichtige Lösungsansätze. Aufgrund ihrer deklarativen Struktur sind die Programme leichter wartbar und verifizierbar (man denke an die immer wichtiger werdenden Sicherheitsaspekte wie z.B. im Internet). In dieser Vorlesung werden Konzepte moderner deklarativer Programmiersprachen vorgestellt.

Ausgehend von dem aus dem Grundstudium bekannten Konzept der funktionalen Programmierung, das kurz wiederholt und eingehender erläutert wird, werden funktionale Sprachen um logische Anteile erweitert, um die Konzepte der funktionalen, logischen und integrierten logisch-funktionalen Sprachen in einem einheitlichen Rahmen darzustellen. Außerdem werden die Grundlagen der funktionalen und logischen Programmierung vorgestellt.

Modulprüfung

Am Ende der Vorlesung findet eine mündliche Abschlussprüfung statt. Die genauen Zeiten werden individuell vereinbart.

Ergänzende Materialien zur Vorlesung

Es gibt kein ausführliches Skript zur Vorlesung, aber einige vorläufige(!) Notizen zur Vorlesung im PDF-Format (nur innerhalb der CAU Kiel zugreifbar!), die im Verlauf des Semesters aktualisiert werden.

Folien und Programme:

15.4.2014: Einführung (PDF) Quicksort (PDF)
17.4.2014: Email-Suche in Webseiten Su Doku-Löser ( Web-Interface) Fakultätsfunktion (Haskell) Wurzelberechnung (Haskell)
22.5.2014: Verwandtschaftsbeispiel (Haskell) Verwandtschaftsbeispiel (Curry) Extravariablen, Listen (Curry) Spiel 24 (Curry) Reguläre Ausdrücke (Curry)
27.5.2014: Reguläre Ausdrücke: grep mit Positionsausgabe (Curry)
3.6.2014: Landkarte färben (Curry) Haus vom Nikolaus (Literate Curry)
17.6.2014: Bankkonto (Curry) Hypothekenberechnung (Curry) Constraint-Löser für SEND+MORE=MONEY (Curry)
19.6.2014: Su Doku-Löser (Curry) Counter GUI (Curry)
24.6.2014: Counter GUI mit 4 Zählern (Curry) GUI mit Temperaturkonverter (Curry) Tischrechner-GUI (Curry)
26.6.2014: Beispiel für set functions (Curry) Kürzeste Wegesuche (Curry)
1.7.2014: n-Damen-Problem (Curry) Sortieren mit funktionalen Mustern (Curry)
3.7.2014: Ausdrücksverarbeitung mit funktionalen Mustern (Curry) XML-Verarbeitung mit funktionalen Mustern (Curry)
8.7.2014: XML-Verarbeitung mit funktionalen Mustern (Curry)

Übungen

In den begleitenden Übungen werden für praktische Programmieraufgaben die Sprachen Haskell und Curry eingesetzt, für die es frei verfügbare Implementierungen für Unix- und Linux-Systeme gibt.
Die Abgabe der Übungen soll vornehmlich über das iLearn Übungssystem erfolgen. Hierzu wird man automatisch angemeldet, wenn man sich bei der StudiDB angemeldet hat.

Literatur

  • P. Hudak: The Haskell School of Expression: Learning Functional Programming through Multimedia, Cambridge University Press, 1999
  • S. Thompson: Haskell - The Craft of Functional Programming, Addison-Wesley, 1996
  • L. Sterling, E. Shapiro: The Art of Prolog, 2nd Ed., MIT Press, 1994
  • M. Hanus: The Integration of Functions into Logic Programming: From Theory to Practice, Journal of Logic Programming, Vol. 19,20, pp. 583-628, 1994
  • M. Hanus: Multi-paradigm Declarative Languages, International Conference on Logic Programming (ICLP 2007), Springer LNCS 4670, pp. 45-75, 2007
  • S. Antoy, M. Hanus: Functional Logic Programming, Communications of the ACM, Vol. 53, No. 4, pp. 74-85, 2010
Weitere Literatur wird in der Vorlesung bekanntgegeben.