Samstag, 11. Februar 2012


Buch-Tipp

Generative Programming

(Link zum Artikel: http://www.entwickler.de/jaxenter//000126)

Methods, Tools, and Applications

  • Autor/in: Krzysztof Czarnecki, Ulrich W. Eisenecker
  • Verlag: Addison-Wesley Verlag
  • Seiten: 864
  • erschienen: 2000
  • Preis: $ 44,95
  • ISBN: 0201309777

Nach den Komponenten kommt das Generative Programmieren. Dieser Ausdruck wurde von den beiden in der Komponentenwelt bestens bekannten Autoren in diesem Buch erfunden. Das ansprechende Cover verrät, um was es geht: Man schreibt Software, die eine ganze Familie von Problemen lösen kann, und wählt eine spezielle, maßgefertigte Lösung aus. Schaut man die Hasen auf dem Cover genauer an, so erkennt man, dass sie alle aus den gleichen Komponenten bestehen. Generatives Programmieren unterscheidet sich von „Reuse”, das leider nur eingeschränkt funktioniert, wie die Softwareindustrie schmerzhaft lernen musste. Generatives Programmmieren zahlt sich aus, wenn man lange Zeit in einem Domain tätig ist. Krzysztof Czarnecki arbeitet in der Forschung für DaimlerChrysler und erklärt, dass man, sobald man eine Spezifikationssprache, die klug genug ist, um Dependencies etc. richtig zu behandeln, hat, einfach sagen kann „Ich will einen blauen C-Klasse Mercedes mit allen Extras” anstatt anzufangen, alle Komponenten und Bindeglieder richtig zusammenzusetzen. Das macht der Generator automatisch.
Meine anfängliche Skepsis wurde durch die drei Beispiele am Buchende sowie positive Stimmen aus Mailinglisten überwunden. Ob Generative Programmierung verwendet werden kann oder nicht, wird letztendlich vom Domain abhängen. Mir ist nicht klar, wie es bei der Entwicklung eines CAD-Programms hilfreich wäre, aber ich kann mir die meisten formbasierten Business-Anwendungen als eine Instanz einer Meta-Anwendung vorstellen. Das Buch bräuchte mehr konkretere Beispiele. Es besteht aus drei Teilen:

  • Analyse und Design Methoden und Techniken: Domain Engineering, Domain Engineering und objektorientierte Analyse und Design, Feature Modelling, Prozess der Generativen Programmierung.
  • Implementierungstechnologien: Generative Programming, komponentenorientierte und templatebasierte C++ Programmiertechniken, aspektorientierte Programmierung, Generatoren, statische Metaprogrammierung in C++, Intentional Programming.
  • Anwendungsbeispiele: Listencontainer, Bankkonto, Generative Matrix Computation Library.
Am Anfang jeden Kapitels steht, wieso man es lesen sollte. Dies vereinfacht die Auswahl der Kapitel, die teilweise in beliebiger Reihenfolge gelesen werden können.
Fazit: System- und Sofwaredesigner, speziell C++ Bibliothekenentwerfer, sollten dieses Buch lesen. Teilweise erweckt es einen zu akademischen Eindruck, dafür ist es mit Informationen gespickt und wagt den Blick in die Zukunft mit Intentional Programming, welches im Moment nur ein interessanter Microsoft-Traum ist, aber vielleicht eines Tages in .Net integriert wird. „Generative Programming könnte mindestens so bedeutend wie Design Patterns werden.”

von Armin Röhrl

Kommentare