Ich habe mit dem Thema einige Schwierigkeiten. Gibt es überhaupt so etwas wie GenerischeProgrammierung (als Stilrichtung wie StrukturierteProgrammierung?, ObjektOrientierteProgrammierung oder FunktionaleProgrammierung) oder gibt es nicht eigentlich nur generische Funktionen? Falscher Anfang. Die klassischen Programmierparadigmen sind prozedurale, funktionale und logische Programmierung. OOP steht irgendwie daneben oder ist bloß eine Anstrich auf dem klassischen Gerüst. Das geht schon aus den Definitionen hervor: * prozedural: Programme sind Folgen von Prozeduraufrufen, Prozeduren definieren sich über den Effekt, den sie auf Speicherzellen haben * funktional: Programme sind Ausdrücke, durch ineinander einsetzen von Funktionen entstehen, Funktionen definieren sich über das Ergebnis, das sie berechnen * logisch: Programme sind Sammlungen logischer Fakten und Regeln, sie definieren sich über das, was aus ihnen folgt. * objekt-orientiert: Ein Programm ist objekt-orientiert, wenn es einen Teilbereich der physikalischen Welt modelliert. Deutlich zu sehen: die letzte Definition paßt nicht dazu (die ist übrigens von einem der Smalltalk-Entwickler, Namen hab ich leider vergessen). Ebenso wie OOP nicht zu den klassischen Programmierparadigmen gehört, gehört generisches Programmieren dort nicht hin, und monadisches Programmieren auch nicht. Generisches Programmieren ist eigentlich generatives Programmieren. Man schreibt Metaprogramme, die erst das eigentliche Programm erzeugen, abhängig von Parametern. Mit etwas Erfahrung hinterlegt, entwickelt sich das natürlich zu einer Disziplin, die durchaus ihren eigenen Namen verdient. GP funktioniert i.W. in Lisp (in Form der Makros) und in C++ (in Form der Template-Programme). Das ist so nützlich, dass es andere Gruppen versuchen, nachzubauen, beispielsweise mit Template Haskell. |
[Siehe zum Beispiel die StandardTemplateLibrary in der SpracheCpp, welche in meinen Augen ein wunderbares Vorbild für GenerischeProgrammierung.]
Falscher Anfang. Die klassischen Programmierparadigmen sind prozedurale, funktionale und logische Programmierung. OOP steht irgendwie daneben oder ist bloß eine Anstrich auf dem klassischen Gerüst. Das geht schon aus den Definitionen hervor:
Generisches Programmieren ist eigentlich generatives Programmieren. Man schreibt Metaprogramme, die erst das eigentliche Programm erzeugen, abhängig von Parametern. Mit etwas Erfahrung hinterlegt, entwickelt sich das natürlich zu einer Disziplin, die durchaus ihren eigenen Namen verdient. GP funktioniert i.W. in Lisp (in Form der Makros) und in C++ (in Form der Template-Programme). Das ist so nützlich, dass es andere Gruppen versuchen, nachzubauen, beispielsweise mit Template Haskell.