Zum Inhalt
Fakultät für Informatik

Proseminar Lösungsansätze für das Expression Problem

Beginn: Ende:
Veran­stal­tungs­art:
  • Sommersemester 2024
Proseminar Lösungsansätze für das Expression Problem
Veranstalter: Prof. Dr. Jakob Rehof
Typ: Proseminar
Modulnummer: INF-BSc-110
Vorbesprechung: Raum OH12/2.013
Mittwoch, der 10.04.2024, um 14:00h
Termine: Präsenz, Blockseminar
Raum OH12/2.013
Mittwoch, der 17.04.2024, von 14:00h - 16:00h
Dienstag, der 30.07.2024, von 10:00h - 12:00h und 13:00h - 16:00h
Mittwoch, der 31.07.2024, von 10:00h - 12:00h und 13:00h - 16:00h
Donnerstag, der 01.08.2024, von 08:00h - 12:00h
Abgabe der schriftlichen Ausarbeitung: Montag, der 02.09.2024, um 12:00h

Neuigkeiten und Ankündigungen

  • 02.01.2024: Seite mit Informationen angelegt.
  • 14.03.2024: Moodle-Raum angelegt

Beschreibung

In der Theorie der Programmiersprachen gibt es ein altbekanntes Problem:

Gegeben einen Datentypen und Funktionen über diesem Typen. Erweitere den Datentypen und füge weitere Funktionen hinzu, ohne den bestehenden Code neu kompilieren zu müssen. Die statische Typsicherheit muss ebenfalls erhalten bleiben.

Betrachten wir zur Verdeutlichung das Problem am Beispiel von Objekt-orientierten und funktionalen Programmiersprachen. In beiden Fällen vereinfachen wir die Konzepte der Sprachparadigmen soweit, dass das Problem deutlich wird.

Bei Objekt-orientierten Sprachen nennen wir Datentypen Klassen und Funktionen Methoden, welche in der Klasse selbst definiert werden. Es ist einfach eine Klasse durch Unterklassen zu erweitern, ohne die bestehende Klassendefinition zu ändern. Allerdings bedingt das Hinzufügen einer weiteren Methode, dass die ursprüngliche Klassendefinition und die Definitionen aller Unterklassen erweitert und damit der bestehende Code neu kompiliert werden muss.

Komplementär dazu verhalten sich funktionale Sprachen. Hier werden Datentypen über Konstruktoren und Funktionen als Fallunterscheidungen auf diesen Konstruktoren definiert. Man kann einfach weitere Funktionen hinzuzufügen, ohne den Datentyp ändern zu müssen. Wenn man einem Datentyp jedoch um einen neuen Konstruktor erweitert, dann müssen alle Fallunterscheidungen in den Funktionsdefinitionen erweitert werden und damit ebenfalls der bestehende Code neu kompiliert werden.

Dieses Problem tritt bei allen Programmiersprachen auf und wurde bereits 1975 von John C. Reynolds untersucht. 1998 benennt Philip Wadler das Problem mit dem Namen "Expression Problem".

Es gibt viele unterschiedliche Lösungsansätze zum Expression Problem und es wird auch heute noch aktiv daran geforscht. Einige dieser Lösungsansätze müssen bereits beim Entwurf einer Programmiersprache umgesetzt werden, während andere Lösungsansätze probieren Design Patterns zu finden, die in bereits existierenden Sprachen umgesetzt werden können.

Daher ist das Expression Problem nicht nur ein grundlegendes Problem des Entwurfs von Programmiersprachen, sondern auch des Software Developments.

Wir werden in diesem Proseminar die unterschiedlichen Lösungsansätze für das Expression Problem behandeln.

Leistung

  • Benoteter Vortrag (20 Minuten Votragszeit + 5 Minuten Rückfragen)
  • Schriftliche, benotete Ausarbeitung
  • Teilnahme an den Vorträgen von anderen Teilnehmenden

Die Abschlussnote bewertet den Vortrag und die Ausarbeitung.

Feedback

Wir haben großes Interesse an veranstaltungsbegleitendem Feedback, um auf Änderungswünsche eingehen zu können. Bitte äußern Sie entsprechende Hinweise im persönlichen Gespräch nach den Veranstaltungen oder per Mail.

Vielen Dank!