paradigma
Indice
Lessico
sm. (pl. -i) [sec. XIX; dal latino tardo paradigma, dal greco parádeigma, propr., dimostrazione, esempio]. In grammatica, modello di flessione di un verbo o di un sostantivo; anche prospetto delle principali forme di un verbo, da cui derivano tutte le altre. Per estensione, modello, esempio in genere. § In informatica, si intende per paradigma di programmazione il modello astratto di computazione in base a cui si definisce un linguaggio di programmazione, e che si traduce nella messa a disposizione del programmatore di particolari costrutti sintattici e nell'orientamento verso un particolare stile di programmazione.
Informatica
I primi linguaggi di programmazione ad alto livello, come FORTRAN e ALGOL, erano basati sul cosiddetto paradigma imperativo, in cui il calcolo è considerato come l'esecuzione di una sequenza di istruzioni che agiscono su un insieme di variabili. Questo stile di programmazione è derivato dalla modalità con cui si programmava originariamente nel linguaggio macchina, così che ogni istruzione in un linguaggio imperativo corrisponde a una precisa sequenza di istruzioni al livello del linguaggio macchina. In generale, programmare secondo un certo paradigma corrisponde a nascondere determinati aspetti dell'esecuzione concreta del calcolo. In contrasto con il paradigma imperativo, quelli dichiarativi, per esempio logico o relazionale, considerano i programmi come specifica di proprietà che una computazione deve soddisfare, senza tener conto dell'esecuzione. Il programmatore può perciò vedere il processo di calcolo in modo non deterministico. Il paradigma della programmazione a oggetti considera che lo stato di un sistema di calcolo sia distribuito fra diverse entità, gli oggetti appunto, che mantengono ognuna il controllo di un diverso insieme di variabili e che comunicano fra loro scambiando messaggi. Nel paradigma funzionale, invece, il calcolo si modella come la valutazione di una funzione. Il flusso di controllo dell'esecuzione, anziché mediante comandi è descritto dalla sequenza di chiamate di sottofunzioni che realizzano la computazione complessiva. Alcuni linguaggi di programmazione implementano in forma pura un paradigma di calcolo, come nel caso di small talk per il paradigma a oggetti, e di Haskell per quello funzionale. Spesso, in realtà, i linguaggi di programmazione presentano aspetti ibridi. Per esempio Java permette la definizione di oggetti e messaggi, ma realizza i metodi secondo un modello imperativo; PROLOG utilizza la logica del primo ordine per esprimere programmi in forma dichiarativa, ma impiega costrutti che consentono al programmatore di orientare il processo di calcolo. Alcuni linguaggi sono esplicitamente progettati per supportare diversi paradigmi di programmazione. In generale, è sempre possibile emulare, definendo le opportune strutture dati, le caratteristiche di un paradigma usando un linguaggio proprio di un altro paradigma, purché il linguaggio utilizzato permetta di definire qualsiasi computazione (sia cioè dotato di capacità di computazione universale).