Diese Übung dient der Zusammenarbeit und ist als Forschungslabor vorgesehen. Wir werden uns im April bis Juli zum regelmäßigen Austausch online treffen.
Programmierungskenntnisse und Erfahrung in Entwicklungsprojekten (im Kontext des Studiums oder in anderem Rahmen) sind notwendige Vorkenntnisse. Die Arbeitsweise der Übung fokussiert Ihre individuelle Entwicklung von Software in einer oder mehreren funktionalen Sprachen: Wir diskutieren praktische Beispiele, sowie Methoden und versuchen die entsprechenden Diskussionen mit Prinzipien und Theorie zu verbinden, die in Literatur und Onlinepräsentationen zugänglich sind.
Ziel ist es, dass Jede/r Studierende im Rahmen dieser Veranstaltung Kenntnis von einer ausgewählten funktionalen Programmierungssprache gewinnen wird.
Termine
- Treffen 13. April und Aufgabe bis 19. April
- Treffen 20. April
- Treffen 27. April
- Treffen 4-18 Mai
- Treffen 1. Juni
- Treffen 8. Juni
- Treffen 15. Juni
- Treffen 22–29 Juni
- Treffen 6. Juli
- Treffen 13. Juli
- Treffen 20. Juli
Literatur
Unser Hauptbuch für diese Übung ist:
Abelson, H. and Sussman, G.J. (1996). Structure and interpretation of computer programs.Cambridge, Mass.: MIT Press.
Eine digitale Version liegt in Ilias vor. Es gibt auch eine deutsche Übersetzung, die Sie (hoffe ich) später des Semesters in der UB finden können:
Abelson, H. und Sussman, G.J. (1996). Struktur und Interpretation von Computerprogrammen : eine Informatik-Einführung. 4., durchges. Aufl. Berlin: Springer
Das erste Kapitel wird die UB für Ilias einscannen.
Sie sollen unbedingt Kapitel 1 von Abelson und Sussman lesen. Ich empfehle Ihnen, auch 2–4 durchzulesen. Wenn einige mathematische Beispiele schwierig sind, können Sie diese überspringen. Diese aufgezeichnete Vorlesungsreihe bei Abelson und Sussman erklärt funktionale Programmierung und Informatik allgemein mit viel spaß und tiefe: https://www.youtube.com/playlist?list=PLE18841CABEA24090
Wichtig sind einige Paar Grundbegriffe für ein tieferes theoretisches und praktisches Verständnis von Programmierung allgemein und funktionale Programmierung, insbesondere:
- Abstraktionen
- Algorithmen
- Prozeduren höherer Ordnung
- Rekursion
- Modularität
- Umgebungen
Wir werden im Rahmen Ihrer praktischen Arbeit diese Begriffe diskutieren. Insbesondere werden wir die Unterschiede zwischen nicht-mutierbaren (mathematischen) Variabeln und mutierbare Variabeln, wie wir sie von prozeduralen Programmiersprachen kennen, erläutern. LISP und Scheme (der LISP-Dialekt, der in Abelson und Sussman verwendet wird) stellt mutierbare Variabeln zur Verfügung. In z.B. Haskell gibt es keine solche Variablen.
Lambda Papers
Diese sind wichtig für ein tieferes Verständnis der Grundkonzepte und ihrem historischen Hintergrund: https://en.wikisource.org/wiki/Lambda_Papers
Ressourcen
Hier finden Sie weitere Informationen über einige (nicht ganz zufällich) ausgewählte funktionale Programmierungssprache:
Common LISP
Fundamentals of CLOS. Common Lisp Object System stellt Objektorientierung zur verfügung in LISP. Es gibt Mehrfachvererbung :-)
Für FormalistInnen: The Common Lisp HyperSpec. Einkaufsmöglichkeiten des offiziellen Standards finden Sie bei ANSI.
Scheme
Eine wichtige Lernressource für Scheme ist Abelson und Sussman: Struktur und Interpretation von Computerprogrammen.
The Scheme programming language.
Definierende Beschreibung: Revised5 Report on the Algorithmic Language Scheme in Higher-Order and Symbolic Computation 11, 7–105(1998).
Haskell
Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey ist ein gutes Einleitungsvideo mit vielen historischen Anekdoten.
Tutorials: Programming Haskell.
XSLT
SAXON: The XSLT and XQuery Processor.
XSLT im Rahmen Text Encoding Initative (TEI): Teil 1 (Teil 2–5 folgt). Es gibt eine Uni Köln Site-Lizenz für Oxygen, die sich für die XSLT-Entwicklung verwenden lässt Treten Sie bitte bei Bedarf mit mir in Kontakt.
XSLT ist normalerweise als eine Sprache an funkationale Programmierung-Ideen basiert, aber nicht völlig funktional. Argumente dagegen gibt, z.B.: The Functional Programming Language XSLT - A proof through examples.
Ein Paar weitere Sprache
- Kotlin
- Elm
- Clojure
- Erlang
- Dart
- funktionales JavaScript
- Java 8
Studienleistung
- Aktive Teilnahme in Diskussionen
- Umsetzung von mindestens zwei kleinerer Entwicklungsprojekte
- diese Projekte können miteinander verbunden sein
Modulprüfung
Wenn Sie ein Modulprüfung auf Grundlage dieser Übung absolvieren möchten, dann kontaktieren Sie mich bitte bis 18. Juni. Danach melden Sie sich bitte zu der Prüfung in Klips an.