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...