Das sogenannte ‚Expression Problem‘ ist das Problem, dass sich
Programme in zwei Richtungen weiterentwickeln können, nämlich:
- neue Operationen für bestehende Datentypen, und
- neue Datentypen für bestehende Operationen,
und dass man sich gerne beide Möglichkeiten offen halten möchte, ohne
das Programmieren wesentlich komplizierter zu machen. Komplizierter
wird es zum Beispiel, wenn der bestehenden Code dazu geändert oder
neu kompiliert werden muss. (Phillip Wadler, der den Begriff geprägt
hat, formuliert es
hier etwas
enger).
Der grundlegende Ansatz der objekt-orientierten Programmierung macht
es leicht neue Datentypen hinzuzufügen und schwer neue Operationen
hinzuzufügen, während es bei klassischer funktionaler
Programmierung genau umgekeht ist (siehe z.B.
hier).
Im diesem Artikel möchte ich das Problem anhand einfacher Beispiele
erläutern, und einige Lösungen auflisten, die in diversen Sprachen
dafür angeboten werden.
Weiterlesen...