Willkommen auf der Heimatseite der Lehrveranstaltung „Praktische Informatik 3“ im Wintersemester 2016/2017.

Inhaltliches

Das Thema dieser Veranstaltung ist die funktionale Programmierung.

Bei der funktionalen Programmierung werden Programme als Funktionen modelliert, die eine Eingabe auf eine Ausgabe abbilden. Dieser unschuldige Satz hat weitreichende Konsequenzen. Zum ersten bedeutet es nämlich, daß unsere Programme zustands- und variablenfrei sind; eine Funktion f muß nämlich für eine Eingabe a immer dasselbe Ergebnis liefern, und kann nicht in Abhängigkeit von einem globalen oder internen Zustand ein anderes Ergebnis zurückgeben.

Diese Eigenschaft (auch referentielle Transparenz genannt), zusammen mit den anderen Eigenschaften funktionaler Programmiersprachen, wie (strenge) Typisierung, Funktionen höherer Ordnung und algebraischen Datentypen, machen funktionale Programme elegant, kurz, mathematischen Betrachtungen (Korrektheitsbeweisen) zugänglich und vor allem ganz anders als imperative oder objektorientierte Programme, wie wir sie in PI1/PI2 kennengelernt haben. Dieser Abstraktionsgewinn erlaubt es, in Konzepten und Algorithmen zu denken, nicht in Klassenstrukturen und geschweiften Klammern.

Aus diesem Grunde sollte jeder Informatiker eine funktionale Sprache einmal kennengelernt haben — wie zum Beispiel die in dieser Veranstaltung verwendete Sprache Haskell.