An einem einfachen Beispiel (Summation) lernen Sie die grundlegenden Techniken der generischen Programmierung. Der Ausgangspunkt, eine Funktion im C-Stil, wird schrittweise "geliftet", bis eine voll generische Komponente entsteht.

Ein kurzes Tutorial der generischen Programmierung in C++

I still believe in abstraction, but now I know that one ends with abstraction, not starts with it. I learned that one has to adapt abstractions to reality and not the other way around.
Alexander Stepanov

Die Frage nach dem Warum und Wieso der generischen Programmierung haben wir ja schon angeschnitten. Sie können nun dieses und noch vieles andere über generische Programmierung lesen. Wirklich verstehen werden Sie aber erst, wenn Sie es selber tun. Deswegen gibt es hier etwas "Butter bei die Fische" — eine Einladung, selbst aktiv zu werden. Um die generische Programmierung am Beispiel zu lernen, werden wir Schritt für Schritt eine einfache, traditionell nicht-generische Summations-Routine "generifizieren", in folgenden kleinen und hoffentlich gut verdaulichen Appetithäppchen:

Butter bei die Fische © Africa Studio - Fotolia.com
Butter bei die Fische — wie funktioniert's?
  1. Einmal Summation klassisch, bitte (Summe à la C)
  2. Haben's nur double? (Den Wertetyp parametrisieren)
  3. Haben's nur arrays? (Die Iteration parametrisieren)
  4. Ich möcht den Wertetyp zurück, bitte! (Wie man den Wertetyp wieder aus dem Iteratortyp holt)
  5. Womit fangen wir denn an? (Die Summe muss initialisiert werden — nicht immer mit 0.)
  6. Welcher Wertetyp darf's denn sein? (Der Wertetyp der Sequenz ist nicht immer der beste zum Summieren.)
  7. Können Sie etwas für den Anfang empfehlen? (Automatisch die richtige Initialisierung finden.)
  8. Die Rechnung, bitte: Können Sie denn nur addieren? (Operator parametrisieren: Wir können auch multiplizieren, Maximum finden, ...)
  9. Nochmal zum Anfang (Wie initialisiert man denn beim Maximum?)
  10. Nachschlag: Was man mit reduce noch anfangen kann. (So einiges. Und anderes besser nicht.)
  11. Restaurant-Kritik: Lohnt sich generische Programmierung? (Meist schon, trotz initialen Aufwands)