Introduction to Functional Programming
Die Veranstaltung besch?ftigt sich mit den Grundlagen nichtprozeduraler Programmierung und hier insbesondere mit der Funktionalen Programmierung und der Logikprogrammierung . Beide folgen dem deklarativen Programmierprinzip, nachdem ein Programm nicht wie in den prozeduralen Sprachen aus der algorithmischen Abarbeitung einer L?sungsvorschrift besteht, sondern aus der logischen Spezifikation des zu l?senden Problems selbst. Diese Spezifikation besteht aus einer Menge von abstrakten "wenn-dann" Reduktionsregeln, welche das den Problembereich charakterisierende Faktenwissen repr?sentieren.
Die Ausführung eines Logikprogrammes entspricht der logischen Deduktion einer L?sung direkt aus dieser abstrakten Problemspezifikation. In der funktionalen Programmierung wird das aus der Algebra bekannte symbolische Auswerten von Rechenausdrücken zum Grundprinzip des Ablaufmodelles erhoben und Probleml?sungen als Rekursionsgleichungen über anwendungsspezifischen Datenstrukturen formuliert. Die deklarative Programmiermethodik ist besonders erfolgreich etwa in der Behandlung von Planungsproblemen, in Expertensystemen und im Bereich der Künstlichen Intelligenz, wo es auf generische L?sungen und die leichte und rasche Anpassung an neue Aufgabenstellungen ankommt.
In der Vorlesung wird der systematische Aufbau einer funktionalen Programmiersprache schrittweise erl?utert und ausführlich Gelegenheit zum praktischen Programmieren mit der Programmiersprache Haskell gegeben. Neben der dynamischen Ablaufsemantik wird in der Vorlesung ein polymorphes Typsystem entwickelt und in elementare Techniken der Typprüfung und Typsynthese eingeführt.