La programmazione generica è un tipo popolare di programmazione per computer scritta in modo tale da creare il codice più efficiente possibile, consentendo al tempo stesso di applicare il codice a quante più situazioni possibili senza richiedere modifiche al codice originale stesso. Una volta che il codice è stato scritto, può eseguire solo le funzioni esatte per cui è stato scritto. Utilizzando la programmazione generica per creare codici che funzionano in una serie di situazioni diverse, pur continuando a svolgere la stessa funzione generale di base, i programmatori possono utilizzare un singolo pezzo di codice in programmi diversi senza mai apportare modifiche all’originale.
Negli anni ‘1970, la programmazione generica ha fatto il suo debutto nei linguaggi di programmazione Ada e CLU. Poco dopo, altri linguaggi di programmazione come Java e C++ hanno iniziato a utilizzare la programmazione generica per semplificare il codice di programmazione consentendo l’utilizzo dello stesso codice in più scenari. Ogni linguaggio di programmazione ha un modo particolare di utilizzare questo codice e termini diversi per descriverlo. “Generici”, “modelli” e “tipi parametrizzati” sono stati tutti utilizzati prima o poi per fare riferimento a istanze di programmazione generica.
Per comprendere questo tipo di programmazione, è importante conoscere i concetti di base del funzionamento di un linguaggio di programmazione. Se, per esempio, Paul vuole scrivere un programma che somma due numeri, digiterà il codice del computer per aggiungere due oggetti. Avrebbe quindi detto al computer che quei due oggetti sono numeri e che anche la risposta finale dovrebbe essere un numero.
Mentre il programma funzionerà finché Paul aggiungerà due numeri, si arresterà in modo anomalo se tenterà di aggiungere qualcos’altro insieme. Se Paul decidesse di mettere insieme le frasi per formare un paragrafo, il programma andrebbe in crash perché troverebbe lettere e non numeri. Paul potrebbe risolvere questo problema, tuttavia, utilizzando la programmazione generica per dire al programma originale di accettare un numero di variabili – sia numeri che lettere – e quindi il programma potrebbe creare frasi o eseguire addizioni.
Non tutti i linguaggi di programmazione necessitano del concetto di programmazione generica per essere efficienti. Quelli che lo usano sono linguaggi tipizzati staticamente. Ciò significa semplicemente che il codice è scolpito nella pietra, per così dire, e non può essere modificato mentre il programma è in esecuzione. Per questo motivo, se un programmatore specificava che l’input dell’utente sarebbe stato sotto forma di lettere e l’utente digitava un numero, il programma non poteva utilizzare l’input. Quindi i programmatori cercano di prevedere tutti i tipi di dati logici che un utente potrebbe inserire, siano essi numeri, lettere o simboli, e creano un programma che può adattarsi di conseguenza.