[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/wiki15\/2020\/11\/30\/generische-programmierung-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/wiki15\/2020\/11\/30\/generische-programmierung-wikipedia\/","headline":"Generische Programmierung – Wikipedia","name":"Generische Programmierung – Wikipedia","description":"Methode zum Entwerfen und Schreiben von Programmen, bei denen Algorithmen in Form von Parametertypen geschrieben werden, die eine einfache Wiederverwendung","datePublished":"2020-11-30","dateModified":"2020-11-30","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/wiki15\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/wiki15\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":100,"height":100},"url":"https:\/\/wiki.edu.vn\/wiki15\/2020\/11\/30\/generische-programmierung-wikipedia\/","wordCount":18592,"articleBody":"Methode zum Entwerfen und Schreiben von Programmen, bei denen Algorithmen in Form von Parametertypen geschrieben werden, die eine einfache Wiederverwendung erm\u00f6glichen Generische Programmierung ist eine Art der Computerprogrammierung, bei der Algorithmen in Form von Typen geschrieben werden sp\u00e4ter spezifiziert werden das sind dann instanziiert bei Bedarf f\u00fcr bestimmte Typen, die als Parameter bereitgestellt werden. Dieser Ansatz, der 1973 von der Programmiersprache ML entwickelt wurde,[1][2] Erm\u00f6glicht das Schreiben allgemeiner Funktionen oder Typen, die sich nur in der Gruppe der Typen unterscheiden, mit denen sie bei Verwendung arbeiten, wodurch Doppelarbeit verringert wird. Solche Software-Entit\u00e4ten sind bekannt als Generika in Python, Ada, C #, Delphi, Eiffel, F #, Java, Nim, Rust, Swift, TypeScript und Visual Basic .NET. Sie sind bekannt als parametrischer Polymorphismus in ML, Scala, Julia und Haskell (die Haskell-Community verwendet den Begriff “generisch” auch f\u00fcr ein verwandtes, aber etwas anderes Konzept); Vorlagen in C ++ und D; und parametrisierte Typen in dem einflussreichen Buch von 1994 Designmuster.[3]Der Begriff “generische Programmierung” wurde urspr\u00fcnglich von David Musser und Alexander Stepanov in einem spezifischeren Sinne als dem oben genannten gepr\u00e4gt, um ein Programmierparadigma zu beschreiben, bei dem grundlegende Anforderungen an Typen aus konkreten Beispielen von Algorithmen und Datenstrukturen abstrahiert und als Konzepte formalisiert werden. mit generischen Funktionen, die im Hinblick auf diese Konzepte implementiert sind, typischerweise unter Verwendung von Sprachgenerierungsmechanismen, wie oben beschrieben.Table of Contents Stepanov-Musser und andere generische Programmierparadigmen[edit]Programmiersprachenunterst\u00fctzung f\u00fcr Generizit\u00e4t[edit]In objektorientierten Sprachen[edit]Generika in Ada[edit]Beispiel[edit]Vor- und Nachteile[edit]Vorlagen in C ++[edit]Technische \u00dcbersicht[edit]Vorlagenspezialisierung[edit]Vorteile und Nachteile[edit]Vorlagen in D.[edit]Codegenerierung[edit]Gro\u00dfz\u00fcgigkeit in Eiffel[edit]Grundlegende \/ uneingeschr\u00e4nkte Gro\u00dfz\u00fcgigkeit[edit]Eingeschr\u00e4nkte Gro\u00dfz\u00fcgigkeit[edit]Generika in Java[edit]Generizit\u00e4t in .NET [C#, VB.NET][edit]Gro\u00dfz\u00fcgigkeit in Delphi[edit]Gro\u00dfz\u00fcgigkeit in Free Pascal[edit]Funktionssprachen[edit]Gro\u00dfz\u00fcgigkeit in Haskell[edit]Polyp[edit]Generisches Haskell[edit]Sauber[edit]Andere Sprachen[edit]Siehe auch[edit]Verweise[edit]Quellen[edit]Weiterf\u00fchrende Literatur[edit]Externe Links[edit]Stepanov-Musser und andere generische Programmierparadigmen[edit]Die generische Programmierung ist in Musser & Stepanov (1989) wie folgt definiert:Die generische Programmierung konzentriert sich auf die Idee, von konkreten, effizienten Algorithmen zu abstrahieren, um generische Algorithmen zu erhalten, die mit verschiedenen Datendarstellungen kombiniert werden k\u00f6nnen, um eine Vielzahl n\u00fctzlicher Software zu erstellen.– –Musser, David R.; Stepanov, Alexander A., \u200b\u200bGenerische Programmierung[5]Das Paradigma der “generischen Programmierung” ist ein Ansatz zur Software-Zerlegung, bei dem grundlegende Anforderungen an Typen aus konkreten Beispielen von Algorithmen und Datenstrukturen abstrahiert und analog zur Abstraktion algebraischer Theorien in der abstrakten Algebra als Konzepte formalisiert werden.[6] Fr\u00fche Beispiele f\u00fcr diesen Programmieransatz wurden in Scheme und Ada implementiert.[7] Obwohl das bekannteste Beispiel die Standard Template Library (STL) ist,[8][9] das eine Theorie der Iteratoren entwickelte, die verwendet wird, um Sequenzdatenstrukturen und die darauf arbeitenden Algorithmen zu entkoppeln.Zum Beispiel gegeben N. Sequenzdatenstrukturen, z. B. einfach verkn\u00fcpfte Liste, Vektor usw., und M. Algorithmen, um sie zu bearbeiten, z finden, Sortieren usw. w\u00fcrde ein direkter Ansatz jeden Algorithmus spezifisch f\u00fcr jede Datenstruktur implementieren und geben N. \u00d7 M. zu implementierende Kombinationen. Beim generischen Programmieransatz gibt jedoch jede Datenstruktur ein Modell eines Iteratorkonzepts zur\u00fcck (ein einfacher Werttyp, der zum Abrufen des aktuellen Werts dereferenziert oder so ge\u00e4ndert werden kann, dass er auf einen anderen Wert in der Sequenz verweist), und stattdessen wird jeder Algorithmus geschrieben generisch mit Argumenten solcher Iteratoren, z. B. einem Paar von Iteratoren, die auf den Anfang und das Ende der Teilsequenz zeigen, oder Reichweite herstellen. Also nur N. + M. Datenstruktur-Algorithmus-Kombinationen m\u00fcssen implementiert werden. In der STL sind mehrere Iteratorkonzepte angegeben, von denen jedes eine Verfeinerung restriktiverer Konzepte darstellt, z. B. Vorw\u00e4rtsiteratoren, die nur zum n\u00e4chsten Wert in einer Sequenz f\u00fchren (z. B. geeignet f\u00fcr eine einfach verkn\u00fcpfte Liste oder einen Strom von Eingabedaten), w\u00e4hrend ein Direktzugriff m\u00f6glich ist Der Iterator bietet auch direkten zeitkonstanten Zugriff auf jedes Element der Sequenz (z. B. geeignet f\u00fcr einen Vektor). Ein wichtiger Punkt ist, dass eine Datenstruktur ein Modell des allgemeinsten Konzepts zur\u00fcckgibt, das effizient implementiert werden kann. Anforderungen an die Komplexit\u00e4t der Berechnungen sind explizit Teil der Konzeptdefinition. Dies begrenzt die Datenstrukturen, auf die ein bestimmter Algorithmus angewendet werden kann, und solche Komplexit\u00e4tsanforderungen sind eine Hauptdeterminante f\u00fcr die Wahl der Datenstruktur. Die generische Programmierung wurde in \u00e4hnlicher Weise in anderen Bereichen angewendet, z. B. in Graph-Algorithmen.[10]Beachten Sie, dass dieser Ansatz zwar h\u00e4ufig Sprachfunktionen f\u00fcr Generizit\u00e4t \/ Vorlagen zur Kompilierungszeit verwendet, jedoch tats\u00e4chlich unabh\u00e4ngig von bestimmten sprachtechnischen Details ist. Generischer Programmierpionier Alexander Stepanov schrieb: Bei der generischen Programmierung geht es darum, Algorithmen und Datenstrukturen zu abstrahieren und zu klassifizieren. Es wird von Knuth und nicht von der Typentheorie inspiriert. Ihr Ziel ist die schrittweise Erstellung systematischer Kataloge n\u00fctzlicher, effizienter und abstrakter Algorithmen und Datenstrukturen. Ein solches Unterfangen ist immer noch ein Traum.– –Alexander Stepanov, Kurze Geschichte von STL [11][12]Ich glaube, dass Iteratortheorien f\u00fcr die Informatik ebenso zentral sind wie Ringtheorien oder Banachr\u00e4ume f\u00fcr die Mathematik.– –Alexander Stepanov, Ein Interview mit A. Stepanov[13]Bjarne Stroustrup bemerkte,Nach Stepanov k\u00f6nnen wir generische Programmierung definieren, ohne Sprachmerkmale zu erw\u00e4hnen: Heben Sie Algorithmen und Datenstrukturen von konkreten Beispielen in ihre allgemeinste und abstrakteste Form.– –Bjarne Stroustrup, Entwicklung einer Sprache in und f\u00fcr die reale Welt: C ++ 1991-2006[12]Andere Programmierparadigmen, die als generische Programmierung beschrieben wurden, umfassen Generische Programmierung des Datentyps wie unter “Generische Programmierung – eine Einf\u00fchrung” beschrieben.[14] Das Verschrotte deine Boilerplate Ansatz ist ein leichter generischer Programmieransatz f\u00fcr Haskell.[15]In diesem Artikel unterscheiden wir die \u00fcbergeordneten Programmierparadigmen von generische Programmierungoben aus der untergeordneten Programmiersprache Generizit\u00e4tsmechanismen wird verwendet, um sie zu implementieren (siehe Unterst\u00fctzung f\u00fcr Programmiersprachen f\u00fcr allgemeine Informationen). Weitere Informationen und Vergleiche allgemeiner Programmierparadigmen finden Sie unter.[16]Programmiersprachenunterst\u00fctzung f\u00fcr Generizit\u00e4t[edit]Genericity-Einrichtungen existieren seit mindestens den 1970er Jahren in Hochsprachen in Sprachen wie ML, CLU und Ada und wurden anschlie\u00dfend von vielen objektbasierten und objektorientierten Sprachen \u00fcbernommen, darunter BETA, C ++, D, Eiffel, Java, und DECs inzwischen nicht mehr existierende Trellis-Owl-Sprache.Genericity wird in verschiedenen Programmiersprachen unterschiedlich implementiert und unterst\u00fctzt. Der Begriff “generisch” wurde auch in verschiedenen Programmierkontexten unterschiedlich verwendet. In Forth kann der Compiler beispielsweise Code beim Kompilieren ausf\u00fchren und neuen erstellen Compiler-Schl\u00fcsselw\u00f6rter und neue Implementierungen f\u00fcr diese W\u00f6rter im laufenden Betrieb. Es hat wenige W\u00f6rter das macht das Compilerverhalten sichtbar und bietet daher nat\u00fcrlich Gro\u00dfz\u00fcgigkeit Kapazit\u00e4ten, die in den meisten Forth-Texten jedoch nicht als solche bezeichnet werden. In \u00e4hnlicher Weise bieten dynamisch typisierte Sprachen, insbesondere interpretierte, normalerweise Gro\u00dfz\u00fcgigkeit Standardm\u00e4\u00dfig sind sowohl die \u00dcbergabe von Werten an Funktionen als auch die Wertzuweisung typindifferent, und ein solches Verhalten wird h\u00e4ufig zur Abstraktion oder Codeverknappung verwendet. Dies wird jedoch normalerweise nicht gekennzeichnet Gro\u00dfz\u00fcgigkeit da es eine direkte Folge des von der Sprache verwendeten dynamischen Typisierungssystems ist.[citation needed] Der Begriff wurde in der funktionalen Programmierung verwendet, insbesondere in Haskell-\u00e4hnlichen Sprachen, die ein strukturelles Typsystem verwenden, bei dem Typen immer parametrisch sind und der tats\u00e4chliche Code f\u00fcr diese Typen generisch ist. Diese Verwendungen dienen immer noch einem \u00e4hnlichen Zweck des Speicherns von Code und des Renderns einer Abstraktion.Arrays und Strukturen k\u00f6nnen als vordefinierte generische Typen angesehen werden. Jede Verwendung eines Array- oder Strukturtyps instanziiert einen neuen konkreten Typ oder verwendet einen zuvor instanziierten Typ wieder. Array-Elementtypen und Strukturelementtypen sind parametrisierte Typen, mit denen der entsprechende generische Typ instanziiert wird. All dies ist normalerweise im Compiler integriert und die Syntax unterscheidet sich von anderen generischen Konstrukten. Einige erweiterbare Programmiersprachen versuchen, integrierte und benutzerdefinierte generische Typen zu vereinheitlichen.Es folgt eine umfassende \u00dcbersicht \u00fcber Generizit\u00e4tsmechanismen in Programmiersprachen. F\u00fcr eine spezifische Umfrage zum Vergleich der Eignung von Mechanismen f\u00fcr die generische Programmierung siehe.[17]In objektorientierten Sprachen[edit]Beim Erstellen von Containerklassen in statisch typisierten Sprachen ist es unpraktisch, spezifische Implementierungen f\u00fcr jeden enthaltenen Datentyp zu schreiben, insbesondere wenn der Code f\u00fcr jeden Datentyp praktisch identisch ist. In C ++ kann diese Duplizierung von Code beispielsweise umgangen werden, indem eine Klassenvorlage definiert wird:template class List { \/\/ Class contents.};List list_of_animals;List list_of_cars;\u00dcber, T. ist ein Platzhalter f\u00fcr den Typ, der beim Erstellen der Liste angegeben wird. Diese “Container vom Typ T”, allgemein als Vorlagen bezeichnet, erm\u00f6glichen die Wiederverwendung einer Klasse mit verschiedenen Datentypen, solange bestimmte Vertr\u00e4ge wie Untertypen und Signaturen beibehalten werden. Dieser Generizit\u00e4tsmechanismus sollte nicht mit verwechselt werden EinschlusspolymorphismusDies ist die algorithmische Verwendung austauschbarer Unterklassen: zum Beispiel eine Liste von Objekten vom Typ Moving_Object Objekte vom Typ enthalten Tier und Wagen. Vorlagen k\u00f6nnen auch f\u00fcr typunabh\u00e4ngige Funktionen wie in der verwendet werden Tauschen Beispiel unten:\/\/ \"&\" passes parameters by referencetemplate void Swap(T& a, T& b) { T temp = b; b = a; a = temp;}std::string hello = \"World!\";std::string world = \"Hello, \";Swap(world, hello);std::cout COMPARABLE]Generika in Java[edit]Unterst\u00fctzung f\u00fcr die Generika, oder \"Container vom Typ T\" wurde der Java-Programmiersprache im Jahr 2004 als Teil von J2SE 5.0 hinzugef\u00fcgt. In Java werden Generika nur zur Kompilierungszeit auf Typkorrektheit \u00fcberpr\u00fcft. Die generischen Typinformationen werden dann \u00fcber einen Prozess namens Typl\u00f6schung entfernt, um die Kompatibilit\u00e4t mit alten JVM-Implementierungen zu gew\u00e4hrleisten und sie zur Laufzeit nicht verf\u00fcgbar zu machen. Zum Beispiel a Auff\u00fchren wird in den Rohtyp konvertiert Auff\u00fchren. Der Compiler f\u00fcgt Typumwandlungen ein, um die Elemente in die zu konvertieren String Geben Sie ein, wenn sie aus der Liste abgerufen werden, wodurch die Leistung im Vergleich zu anderen Implementierungen wie C ++ - Vorlagen verringert wird.Generizit\u00e4t in .NET [C#, VB.NET][edit]Generika wurden im November 2005 als Teil von .NET Framework 2.0 hinzugef\u00fcgt, basierend auf einem 1999 gestarteten Forschungsprototyp von Microsoft Research.[23] Obwohl .NET-Generika den Generika in Java \u00e4hnlich sind, wenden sie keine Typl\u00f6schung an, sondern implementieren Generika als erstklassigen Mechanismus zur Laufzeit mithilfe der Reifizierung. Diese Entwurfsauswahl bietet zus\u00e4tzliche Funktionen, z. B. das Erm\u00f6glichen der Reflexion unter Beibehaltung generischer Typen sowie das Verringern einiger Einschr\u00e4nkungen beim L\u00f6schen (z. B. das Nichterstellen generischer Arrays).[24][25] Dies bedeutet auch, dass Laufzeit-Casts und normalerweise teure Box-Conversions keine Leistungseinbu\u00dfen verursachen. Wenn primitive und Werttypen als generische Argumente verwendet werden, erhalten sie spezielle Implementierungen, die effiziente generische Sammlungen und Methoden erm\u00f6glichen. Wie in C ++ und Java verschachtelte generische Typen wie Dictionary> sind g\u00fcltige Typen, von denen jedoch f\u00fcr Mitgliedssignaturen in Code-Design-Entwurfsregeln abgeraten wird.[26].NET erlaubt sechs Arten von generischen Typeinschr\u00e4nkungen unter Verwendung von wo Schl\u00fcsselwort einschlie\u00dflich der Einschr\u00e4nkung generischer Typen auf Werttypen, Klassen, Konstruktoren und die Implementierung von Schnittstellen.[27] Unten finden Sie ein Beispiel mit einer Schnittstellenbeschr\u00e4nkung: 1 using System; 2 3 class Sample 4 { 5 static void Main() 6 { 7 int[] array = { 0, 1, 2, 3 }; 8 MakeAtLeast(array, 2); \/\/ Change array to { 2, 2, 2, 3 } 9 foreach (int i in array)10 Console.WriteLine(i); \/\/ Print results.11 Console.ReadKey(true);12 }13 14 static void MakeAtLeast(T[] list, T lowest) where T : IComparable15 {16 for (int i = 0; i t2 -> Bool type Eq {[ k -> l ]} t1 t2 = forall u1 u2. Eq {[ k ]} u1 u2 -> Eq {[ l ]} (t1 u1) (t2 u2) eq {| t :: k |} :: Eq {[ k ]} t t eq {| Unit |} _ _ = True eq {| :+: |} eqA eqB (Inl a1) (Inl a2) = eqA a1 a2 eq {| :+: |} eqA eqB (Inr b1) (Inr b2) = eqB b1 b2 eq {| :+: |} eqA eqB _ _ = False eq {| :*: |} eqA eqB (a1 :*: b1) (a2 :*: b2) = eqA a1 a2 && eqB b1 b2 eq {| Int |} = (==) eq {| Char |} = (==) eq {| Bool |} = (==)Sauber[edit]Clean bietet generisches programmierbasiertes PolyP und das generische Haskell, wie vom GHC> = 6.0 unterst\u00fctzt. Es parametrisiert nach Art, bietet aber eine \u00dcberlastung.Andere Sprachen[edit]Die ML-Familie von Programmiersprachen unterst\u00fctzt die generische Programmierung durch parametrischen Polymorphismus und generische Module Funktoren.Sowohl Standard ML als auch OCaml bieten Funktoren, die Klassenvorlagen und Adas generischen Paketen \u00e4hneln. Schemasyntaktische Abstraktionen haben auch einen Zusammenhang mit der Generizit\u00e4t - dies ist in der Tat eine Obermenge von Vorlagen \u00e0 la C ++.Ein Verilog-Modul kann einen oder mehrere Parameter annehmen, denen ihre tats\u00e4chlichen Werte bei der Instanziierung des Moduls zugewiesen werden. Ein Beispiel ist ein generisches Registerarray, bei dem die Arraybreite \u00fcber einen Parameter angegeben wird. Ein solches Array kann in Kombination mit einem generischen Drahtvektor aus einer einzelnen Modulimplementierung ein generisches Puffer- oder Speichermodul mit einer beliebigen Bitbreite machen.[29]VHDL, das von Ada abgeleitet ist, verf\u00fcgt auch \u00fcber allgemeine Funktionen.Siehe auch[edit]Verweise[edit]^ Lee, Kent D. (15. Dezember 2008). Programmiersprachen: Ein aktiver Lernansatz. Springer Science & Business Media. S. 9\u201310. ISBN 978-0-387-79422-8.^ Milner, R.; Morris, L.; Newey, M. (1975). \"Eine Logik f\u00fcr berechenbare Funktionen mit reflexiven und polymorphen Typen\". Tagungsband zur Pr\u00fcfung und Verbesserung von Programmen.^ Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Designmuster. Addison-Wesley. ISBN 0-201-63361-2.CS1-Wartung: ref = harv (Link)^ Musser, David R.; Stepanov, Alexander A. Generische Programmierung (PDF).^ Alexander Stepanov; Paul McJones (19. Juni 2009). Elemente der Programmierung. Addison-Wesley Professional. ISBN 978-0-321-63537-2.^ Musser, David R.; Stepanov, Alexander A. (1987). \"Eine Bibliothek generischer Algorithmen in Ada\". Bericht der j\u00e4hrlichen ACM SIGAda International Conference 1987 \u00fcber Ada: 216\u2013225. CiteSeerX 10.1.1.588.7431. doi:10.1145 \/ 317500.317529. ISBN 0897912438. S2CID 795406.^ Alexander Stepanov und Meng Lee: Die Standardvorlagenbibliothek. HP Laboratories Technical Report 95-11 (R.1), 14. November 1995^ Matthew H. Austern: Generische Programmierung und STL: Verwenden und Erweitern der C ++ Standard Template Library. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA 1998^ Jeremy G. Siek, Lie-Quan Lee und Andrew Lumsdaine: The Boost Graph Library: Benutzerhandbuch und Referenzhandbuch. Addison-Wesley 2001^ Stepanov, Alexander. Kurze Geschichte von STL (PDF).^ ein b Stroustrup, Bjarne. Entwicklung einer Sprache in und f\u00fcr die reale Welt: C ++ 1991-2006 (PDF). doi:10.1145 \/ 1238844.1238848. S2CID 7518369.^ Lo Russo, Graziano. \"Ein Interview mit A. Stepanov\".^ Roland Backhouse; Patrik Jansson; Johan Jeuring; Lambert Meertens (1999). Generische Programmierung - eine Einf\u00fchrung (PDF).^ L\u00e4mmel, Ralf; Peyton Jones, Simon. \"Scrap Your Boilerplate: Ein praktisches Entwurfsmuster f\u00fcr die generische Programmierung\" (PDF). Microsoft. Abgerufen 16. Oktober 2016.^ Gabriel Dos Reis; Jaakko Ja \u0308rvi (2005). \"Was ist generische Programmierung? (Preprint LCSD'05)\" (PDF). Archiviert von das Original (PDF) am 25. Dezember 2005.^ R. Garcia; J. Ja \u0308rvi; A. Lumsdaine; J. Siek; J. Willcock (2005). \"Eine erweiterte vergleichende Studie zur Sprachunterst\u00fctzung f\u00fcr die generische Programmierung (Preprint)\". CiteSeerX 10.1.1.110.122. ^ Stroustrup, Dos Reis (2003): Konzepte - Entwurfsoptionen f\u00fcr die \u00dcberpr\u00fcfung von Vorlagenargumenten^ Stroustrup, Bjarne (1994). \"15.5 Vermeiden der Codereplikation\". Das Design und die Entwicklung von C ++. Reading, Massachusetts: Addison-Wesley. S. 346\u2013348. Bibcode:1994dec..book ..... S.. ISBN 978-81-317-1608-3.^ Hell, Walter. \"Voldemort-Typen in D\". Dr. Dobbs. Abgerufen 3. Juni 2015.^ Objektorientierte Softwarekonstruktion, Prentice Hall, 1988 und Objektorientierte Softwarekonstruktion, 2. Auflage, Prentice Hall, 1997.^ Eiffel: Die Sprache, Prentice Hall, 1991.^ .NET \/ C # Generics-Verlauf: Einige Fotos vom Februar 1999^ C #: Gestern, heute und morgen: Ein Interview mit Anders Hejlsberg^ Generika in C #, Java und C ++^ Codeanalyse CA1006: Verschachteln Sie keine generischen Typen in Mitgliedssignaturen^ Einschr\u00e4nkungen bei Typparametern (C # -Programmierhandbuch)^ Das generische Haskell-Benutzerhandbuch^ Verilog anhand eines Beispiels, Abschnitt Der Rest als Referenz. Blaine C. Readler, Full Arc Press, 2011. ISBN 978-0-9834973-0-1Quellen[edit]Weiterf\u00fchrende Literatur[edit]Externe Links[edit]C ++ \/ D.C # \/. NETDelphi \/ Objekt PascalNick Hodges, \"Delphi 2009 Reviewers Guide, \"Oktober 2008, Embarcadero Developer Network, Embarcadero.Craig Stuntz, \"Generika und Typbeschr\u00e4nkungen von Delphi 2009, \"Oktober 2008Dr. Bob, \"Delphi 2009 Generika\"\"Freier Pascal: Kostenloses Pascal-Referenzhandbuch Kapitel 8: Generika, Micha\u00ebl Van Canneyt, 2007Delphi f\u00fcr Win32: Generika mit Delphi 2009 Win32, S\u00e9bastien DOERAENE, 2008Delphi f\u00fcr .NET: Delphi Generika, Felix COLIBRI, 2008EiffelHaskellJohan Jeuring, Sean Leather, Jos\u00e9 Pedro Magalh\u00e3es und Alexey Rodriguez Yakushev. Bibliotheken f\u00fcr die generische Programmierung in Haskell. Universit\u00e4t Utrecht.D\u00e6v Clarke, Johan Jeuring und Andres L\u00f6h, Das generische Haskell-BenutzerhandbuchRalf Hinze, \"Generika f\u00fcr die Massen,\" Im Vortr\u00e4ge der ACM SIGPLAN International Conference on Functional Programming (ICFP), 2004.Simon Peyton Jones, Herausgeber, Der Haskell 98-Sprachbericht, \u00dcberarbeitet 2002.Ralf L\u00e4mmel und Simon Peyton Jones, \"Scrap Your Boilerplate: Ein praktisches Entwurfsmuster f\u00fcr die generische Programmierung\", In Vortr\u00e4ge des internationalen ACM SIGPLAN-Workshops zu Typen in Sprachdesign und -implementierung (TLDI'03), 2003. (Siehe auch die Website dieser Forschung gewidmet)Andres L\u00f6h, Erkundung von generischem Haskell, Doktorarbeit, Universit\u00e4t Utrecht 2004. ISBN 90-393-3765-9Generisches Haskell: eine Sprache f\u00fcr die generische ProgrammierungJavaGilad Bracha, Generika in der Programmiersprache Java, 2004.Maurice Naftalin und Philip Wadler, Java Generika und Sammlungen, 2006, O'Reilly Media, Inc. ISBN 0-596-52775-6Peter Sestoft, Java genau, zweite Ausgabe, 2005 MIT Press. ISBN 0-262-69325-9Generische Programmierung in Java, 2004 Sun Microsystems, Inc.Angelika Langer, H\u00e4ufig gestellte Fragen zu Java Generics"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki15\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki15\/2020\/11\/30\/generische-programmierung-wikipedia\/#breadcrumbitem","name":"Generische Programmierung – Wikipedia"}}]}]