Gibt Es Generische Programmierung
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Von GenerischeProgrammierung
- 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? -- HelmutLeitner
Und generische Klassen/Typen und generische Module. Ich denke schon dass die Parametrisierbarkeit von Programmen durch mehr als nur Wertparameter einen eigenen Programmierstil ergibt -- KurtWatzka
[Siehe zum Beispiel die StandardTemplateLibrary in der SpracheCpp, welche in meinen Augen ein wunderbares Vorbild für GenerischeProgrammierung.]
- Auch sind die Eigenschaften, die sich bei der Verwendung in verschiedenen Sprachen (soweit ich das überblicke) ergeben, so unterschiedlich in Bezug auf Implementierung, Typsicherheit und Effizienz, dass ich mir schwer tue, diese Features unter einem gemeinsamen Begriff zusammenzufassen. -- hl
Das ist genau der Grund, warum ich eine Diskussion darüber für sinnvoll halte, ob "generische Programmierung" die darin besteht, dass Klassen oder Algorithmen für einen polymorphen Typ, oder sogar für die Wurzel der Klassenhierarchie selbst entwickelt werden und dass eben keine Parametrisierung stattfindet, überhaupt generische Programmierung ist. Insofern bin ich mit Smalltalk und Lisp in der Liste der Sprachen, die generische Programmierung unterstützen, nicht glücklich. -- kw
- Vielleicht solltest du die Liste in eine Tabelle strukturieren, so dass die unterschiedlichen Ausprägungen sichtbar werden. Ich kann mit Perl in dieser Liste auch nicht viel anfangen (zu wenig OO-Erfahrung in Perl bzw. Mangel an ausgeprägten Datentypen). -- hl
- Warum? Auch in den funktionalen Sprachen findet diese Parametrisierung statt. Nur automatisch, vom Benutzer/Entwickler versteckt. Manche zur Laufzeit und manche zur compile-time. Die Vorgangsweise des Entwicklers, die generische Programmierung, ist aber dennoch diesselbe wie in nur strikt typisierenden Sprachen. mE sogar viel "generischer" als in allen anderen Sprachen. Man sollte vielleicht die verschiedenen Arten der Typisierung zuerst durchkauen. Da gibt's bei den funktionalen Sprachen alle möglichen Varianten. --ReiniUrban
- Es gibt sicher einen engen Zusammenhang zwischen Polymorphismus und generischer Programmierung (siehe auch die Diskussion IstObjectGenerischeProgrammierung, die ich eigentlich anzetteln wollte ;-) ), aber mir fehlt das Wissen um generische Programmierung in funktionalen Sprachen. Lisp ist so weit ich weiss eine typlose Sprache, so dass hier wohl eher Polymorphismus als Parametrisierung vorliegt. Wie sieht denn eine einfache parametrisierte Funktion in Lisp aus? -- kw
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.
KategorieDiskussion
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 18. September 2004 23:35 (diff))