Programmazione generica: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Template (C++): +fonti |
m Bot: numeri di pagina nei template citazione |
||
(8 versioni intermedie di 5 utenti non mostrate) | |||
Riga 2:
In [[informatica]], la '''programmazione generica''' è un [[paradigma di programmazione]] in cui gli [[algoritmo|algoritmi]] accettano come parametri le [[tipo di dato|tipologie di dati]] da trattare, oltre ai [[dato|dati]] veri e propri. Questo approccio, introdotto nel [[ML (linguaggio di programmazione)|linguaggio ML]] nel 1973,<ref name="Lee2008">
{{cita libro| autore = Kent D. Lee| titolo = Programming Languages: An Active Learning Approach| url = https://books.google.com/books?id=OuW5dC2O99AC&pg=PA9|data=15 dicembre 2008| editore = Springer Science & Business Media| ISBN = 978-0-387-79422-8| pp =
</ref><ref>
{{cita conferenza|autore = R. Milner|autore2 = L. Morris|autore3 = M. Newey|anno = 1975|titolo = A Logic for Computable Functions with Reflexive and Polymorphic Types|conferenza = Proceedings of the Conference on Proving and Improving Programs|lingua = en}}
</ref>
permette di scrivere codice generico, del quale possono essere auto-generate multiple versioni specializzate che differiscono solo per i tipi di dati trattati, riducendo così la necessità di scrivere codici essenzialmente duplicati.
== Storia ==
La programmazione generica venne introdotta al pubblico generale con la sua implementazione in [[Ada (linguaggio di programmazione)|Ada]] nel 1977. Con l'introduzione dei ''[[template (programmazione)|template]]'' in [[C++]], le tecniche di programmazione generica sono diventate parte del repertorio professionale dei [[architetto (informatica)|progettisti]] di [[libreria (software)|librerie]]. Queste tecniche vennero ulteriormente sviluppate e i "tipi parametrizzati" vennero introdotti nell'influente libro ''[[Design Patterns]]'' del 1994.<ref name="cita GoF 1994">{{cita|GoF 1994}}.</ref>
Riga 62 ⟶ 64:
</syntaxhighlight>
Il costrutto <code>template</code> del C++ utilizzato sopra è largamente citato come il costrutto di programmazione generica che ha popolarizzato la nozione tra programmatori e progettisti di linguaggi, e supporta molti [[idioma|idiomi]] di programmazione generica. Il linguaggio D offre template basati su quelli del C++ ma con una sintassi semplificata.<ref
Java offre funzionalità di programmazione generica, sintatticamente basate su quelle del C++, a partire da J2SE 5.0.<ref name="JDK8 Generics">{{cita web|url=https://docs.oracle.com/javase/tutorial/java/generics/|titolo=Java Generics|accesso=2024-03-30|lingua=en}}</ref>
[[C sharp|C#]] 2.0, [[Oxygene (linguaggio di programmazione)|Oxygene]] 1.5 e [[Visual Basic .NET]] 2005 hanno costrutti che sfruttano il supporto per i ''generic'' presenti nel [[.NET Framework]] dalla versione 2.0.<ref name=".NET Generics">{{cita web|url=https://learn.microsoft.com/it-it/dotnet/standard/generics/|titolo=Generics in .NET|data=2024-01-27|accesso=2024-03-30}}</ref>
==== Template (C++) ====
Riga 97 ⟶ 100:
* {{cita libro|autore = Joseph Albahari|titolo = C# 10 in a Nutshell|editore = O'Reilly|ISBN= 978-1-098-12195-2|edizione = 1|anno = 2022|lingua = en}}
* {{cita libro|autore = Joshua Bloch|titolo = Effective Java: Programming Language Guide|editore = Addison-Wesley|edizione = 3|ISBN = 978-0134685991|anno = 2018|lingua = en}}
* {{cita libro|autore = [[David Musser]]|autore2 = [[Alexander Stepanov]]|titolo = Symbolic and Algebraic Computation: International symposium ISSAC 1988|capitolo = Generic programming|serie = Lecture Notes in Computer Science|volume = 358|pp =
* {{cita libro|autore = Erich Gamma|autore2 = Richard Helm|autore3 = Ralph Johnson|autore4 = John Vlissides|data = 1994|titolo = Design Patterns|editore = Addison-Wesley|lingua = en|ISBN = 0-201-63361-2|url = https://archive.org/details/designpatternsel00gamm|cid = GoF 1994}}
Riga 111 ⟶ 114:
* [[Paradigma di programmazione]]
* [[Polimorfismo (informatica)]]
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|generic programming|generic programming}}
* {{cita web|url=https://www.generic-programming.org|titolo=Generic programming|editore=The Trustees of Indiana University|lingua=en}}
* {{cita web|url=http://www.stepanovpapers.com/|urlarchivio=https://web.archive.org/web/20240309092114/http://www.stepanovpapers.com/|titolo=Raccolta delle pubblicazioni di Alexander A. Stepanov|lingua=en}}
{{Controllo di autorità}}
{{Portale|informatica}}
|