Programmazione generica

paradigma di programmazione in cui gli algoritmi accettano come parametri i tipi di dati da trattare oltre ai dati veri e propri
Versione del 28 mar 2024 alle 00:25 di Giuseppe Masino (discussione | contributi) (Tradotta sezione iniziale di en:Generic programming)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

In informatica, la programmazione generica è un paradigma di programmazione in cui gli algoritmi accettano come parametri le tipologie di dati da trattare, oltre ai dati veri e propri. Questo approccio, introdotto nel linguaggio ML nel 1973,[1][2] 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.

La programmazione generica venne introdotta al pubblico generale con la sua implementazione in Ada nel 1977. Con l'introduzione dei template in C++, le tecniche di programmazione generica sono diventate parte del repertorio professionale dei progettisti di librerie. Queste tecniche vennero ulteriormente sviluppate e i "tipi parametrizzati" vennero introdotti nell'influente libro Design Patterns del 1994.[3]

Nuove tecniche vennero introdotte da Andrei Alexandrescu nel suo libro Modern C++ Design: Generic Programming and Design Patterns Applied del 2001. Successivamente il linguaggio D implementò le stesse idee.

Le funzionalità di programmazione generica sono conosciute come generics in Ada, C#, Delphi, Eiffel, Java, Nim, Python, Go, Rust, Swift, TypeScript, e Visual Basic .NET. Sono conosciute come "polimorfismo parametrico" in ML, Scala, Julia e Haskell.

Il termine "programmazione generica" fu coniato originariamente da David Musser e Alexander Stepanov[4] in un senso più specifico di quello descritto sopra, per descrivere un paradigma di programmazione in cui i requisiti fondamentali sui tipi sono astratti dagli esempi concreti di algoritmi e strutture dati, e formalizzati come "concetti", con funzioni generiche implementate in termini di questi concetti, tipicamente utilizzando i meccanismi di generalizzazione dei linguaggi come descritti sopra.

Note

  1. ^ (EN) Kent D. Lee, Programming Languages: An Active Learning Approach, Springer Science & Business Media, 15 dicembre 2008, pp. 9–10, ISBN 978-0-387-79422-8.
  2. ^ (EN) R. Milner, L. Morris e M. Newey, A Logic for Computable Functions with Reflexive and Polymorphic Types, 1975.
  3. ^ GoF 1994.
  4. ^ Musser & Stepanov 1989.

Bibliografia

Voci correlate

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica