I paradigmi di pro­gram­ma­zio­ne sono i principi di base dello sviluppo di software. Vanno pensati come stili di pro­gram­ma­zio­ne fon­da­men­tal­men­te diversi che si traducono in codici software strut­tu­ra­ti in modo diverso.

Il concetto classico è la pro­gram­ma­zio­ne im­pe­ra­ti­va, in cui il codice sorgente definisce chia­ra­men­te quali passi deve compiere un programma, e in quale ordine. I suoi sottotipi sono la pro­gram­ma­zio­ne pro­ce­du­ra­le e la pro­gram­ma­zio­ne orientata agli oggetti. Secondo il principio della pro­gram­ma­zio­ne di­chia­ra­ti­va, invece, viene descritto solo ciò che deve essere fatto da un software (cioè solo il risultato e non i singoli passaggi). I suoi sottotipi sono la pro­gram­ma­zio­ne fun­zio­na­le e la pro­gram­ma­zio­ne logica. Cosa distingue questi paradigmi di software l'uno dal­l'al­tro?

Pro­gram­ma­zio­ne im­pe­ra­ti­va: il paradigma di pro­gram­ma­zio­ne classico

Tra i paradigmi per la pro­gram­ma­zio­ne di software, la pro­gram­ma­zio­ne im­pe­ra­ti­va è un "classico". I primi linguaggi di pro­gram­ma­zio­ne e, di con­se­guen­za, i primi programmi per computer, erano basati in­te­ra­men­te su questo approccio classico, che prevede una sequenza regolata di comandi specifici (dal lat. imperare, "comandare") o di istru­zio­ni operative. Tra le altre cose, questo paradigma di pro­gram­ma­zio­ne è alla base di pietre miliari come Pascal e C, nonché di tutti i linguaggi as­sem­bla­ti­vi. Nella pro­gram­ma­zio­ne im­pe­ra­ti­va, l'at­ten­zio­ne si concentra, tra le altre cose, sul lavoro svolto il più vicino possibile al sistema. Il codice del programma ri­sul­tan­te è quindi facile da capire, ma anche molto vasto.

Con la pro­gram­ma­zio­ne strut­tu­ra­ta, pro­ce­du­ra­le e modulare, al paradigma di pro­gram­ma­zio­ne im­pe­ra­ti­va si associano altri tre im­por­tan­ti approcci di scrittura o strut­tu­ra­zio­ne del codice software.

Consiglio

Maggiori in­for­ma­zio­ni sul paradigma della pro­gram­ma­zio­ne im­pe­ra­ti­va sono fornite nel nostro articolo di ap­pro­fon­di­men­to sul tema.

Pro­gram­ma­zio­ne strut­tu­ra­ta

L'ap­proc­cio di pro­gram­ma­zio­ne strut­tu­ra­ta è una forma sem­pli­fi­ca­ta di pro­gram­ma­zio­ne im­pe­ra­ti­va. La dif­fe­ren­za fon­da­men­ta­le rispetto al principio di base è che invece di istru­zio­ni di salto assolute (istru­zio­ni che portano a non con­ti­nua­re l'e­la­bo­ra­zio­ne con il comando seguente, ma altrove), questo paradigma di pro­gram­ma­zio­ne di software prevede l'uso di cicli o strutture di controllo. Un esempio è l'uso di "do…while" per eseguire au­to­ma­ti­ca­men­te un'i­stru­zio­ne fintanto che una certa con­di­zio­ne è vera (almeno una volta).

Pro­gram­ma­zio­ne pro­ce­du­ra­le

Il paradigma di pro­gram­ma­zio­ne pro­ce­du­ra­le estende l'ap­proc­cio im­pe­ra­ti­vo con la pos­si­bi­li­tà di scomporre gli algoritmi in parti gestibili. Esse sono dette procedure o - a seconda del lin­guag­gio di pro­gram­ma­zio­ne - sot­to­pro­gram­mi, routine o funzioni. Lo scopo di questa sud­di­vi­sio­ne è rendere più chiaro il codice del programma ed evitare inutili ri­pe­ti­zio­ni del codice. In virtù del­l'a­stra­zio­ne degli algoritmi, il paradigma di software pro­ce­du­ra­le rap­pre­sen­ta un passaggio decisivo da semplici linguaggi as­sem­bla­ti­vi a linguaggi di alto livello più complessi.

Pro­gram­ma­zio­ne modulare

Anche la pro­gram­ma­zio­ne modulare è clas­si­fi­ca­ta come sot­to­ca­te­go­ria del paradigma di pro­gram­ma­zio­ne im­pe­ra­ti­va. È so­stan­zial­men­te molto simile al­l'ap­proc­cio pro­ce­du­ra­le e tra­sfe­ri­sce questo stile di pro­gram­ma­zio­ne ai requisiti e alle esigenze di progetti di software più vasti e di grandi di­men­sio­ni. A tale scopo, il codice sorgente è suddiviso in sot­to­bloc­chi logici, re­ci­pro­ca­men­te in­di­pen­den­ti, al fine di fornire maggiore chiarezza e sem­pli­fi­ca­re il processo di debug (ri­so­lu­zio­ne degli errori). I singoli blocchi secondari, chiamati moduli, possono essere testati sin­go­lar­men­te prima di essere suc­ces­si­va­men­te collegati a un'ap­pli­ca­zio­ne com­ples­si­va.

Pro­gram­ma­zio­ne di­chia­ra­ti­va: paradigmi di software recenti

Pa­ral­le­la­men­te al continuo sviluppo di hardware e software, l'ap­proc­cio di­chia­ra­ti­vo ha svi­lup­pa­to un paradigma al­ter­na­ti­vo per la pro­gram­ma­zio­ne del codice. Il principio di base della pro­gram­ma­zio­ne di­chia­ra­ti­va è la de­scri­zio­ne del risultato finale de­si­de­ra­to. Quindi in primo piano c'è il "cosa" del risultato e non il "come" delle fasi della soluzione, come nel caso della pro­gram­ma­zio­ne im­pe­ra­ti­va. Ciò significa che il codice derivante dalla pro­gram­ma­zio­ne di­chia­ra­ti­va è più difficile da capire a causa dell'elevato livello di astra­zio­ne, ma è molto breve e preciso.

Tra le sot­to­ca­te­go­rie del paradigma di pro­gram­ma­zio­ne di­chia­ra­ti­va vi sono maggiori dif­fe­ren­ze rispetto a quanto avviene nello stile im­pe­ra­ti­vo. Inoltre, l'esatta de­fi­ni­zio­ne o di­stin­zio­ne tra l'una e l'altra non è sempre chiara. I due approcci più im­por­tan­ti del paradigma di pro­gram­ma­zio­ne di­chia­ra­ti­va sono la pro­gram­ma­zio­ne fun­zio­na­le e quella logica.

Consiglio

Maggiori in­for­ma­zio­ni sul paradigma della pro­gram­ma­zio­ne di­chia­ra­ti­va sono fornite nel­l'ar­ti­co­lo di ap­pro­fon­di­men­to sul tema.

Pro­gram­ma­zio­ne fun­zio­na­le

Le funzioni sono presenti in ogni lin­guag­gio di pro­gram­ma­zio­ne superiore. Tuttavia, l'ap­proc­cio fun­zio­na­le nello sviluppo di software considera le funzioni in modo par­ti­co­la­re:

un programma ri­sul­tan­te dalla pro­gram­ma­zio­ne fun­zio­na­le consiste nel­l'e­se­cu­zio­ne di funzioni suc­ces­si­ve, per cui ogni parte del programma può essere compresa come una funzione. Le funzioni possono assumere "forme" diverse al­l'in­ter­no della pro­gram­ma­zio­ne fun­zio­na­le. Ad esempio, possono essere collegate tra loro come dati o possono essere uti­liz­za­te sotto forma di parametri. Inoltre, possono essere riu­ti­liz­za­te come risultati fun­zio­na­li. D'altra parte, questo paradigma implica che non vi sono as­se­gna­zio­ni in­di­pen­den­ti di valori.

Questa sot­to­ca­te­go­ria della pro­gram­ma­zio­ne di­chia­ra­ti­va è molto im­por­tan­te per l'in­for­ma­ti­ca in generale, e allo stesso tempo può essere uti­liz­za­ta in molti modi diversi. La gestione par­ti­co­la­re delle funzioni consente ai pro­gram­ma­to­ri che lavorano in modo fun­zio­na­le di ricavare dalle funzioni e applicare nuove regole di calcolo di vasta portata.

Consiglio

Maggiori in­for­ma­zio­ni sul metodo della pro­gram­ma­zio­ne fun­zio­na­le sono fornite nel­l'ar­ti­co­lo di ap­pro­fon­di­men­to sul tema.

Pro­gram­ma­zio­ne logica

Il paradigma di software logico, noto anche come pro­gram­ma­zio­ne pre­dit­ti­va, si basa sulla logica ma­te­ma­ti­ca. Invece di una serie di istru­zio­ni, il software pro­gram­ma­to secondo questo principio contiene una serie di principi che possono essere visti come una raccolta di fatti e ipotesi. Tutte le richieste al programma vengono elaborate dal­l'in­ter­pre­te basandosi su questi principi e ap­pli­can­do regole pre­ce­den­te­men­te definite al fine di ottenere il risultato de­si­de­ra­to.

Consiglio

Maggiori in­for­ma­zio­ni sul metodo della pro­gram­ma­zio­ne logica sono fornite nel­l'ar­ti­co­lo di ap­pro­fon­di­men­to sul tema.

Paradigmi di pro­gram­ma­zio­ne a confronto: pro­gram­ma­zio­ne di­chia­ra­ti­va e im­pe­ra­ti­va

Paradigma di pro­gram­ma­zio­ne im­pe­ra­ti­va Paradigma di pro­gram­ma­zio­ne di­chia­ra­ti­va
Come? Cosa?
Classico Nuova corrente
Un programma basato su questo paradigma consiste in istru­zio­ni suc­ces­si­ve che dicono al computer cosa fare e in quale ordine. Un programma secondo questo paradigma consiste in istru­zio­ni su come il programma deve com­por­tar­si con un input. I calcoli vengono eseguiti ma­ni­po­lan­do i valori, la procedura è con­trol­la­ta dal processo di ri­cor­sio­ne.
Il nome deriva da "imperare", parola latina che significa "comandare" Il nome deriva da "declarare", parola latina per "di­chia­ra­re".
È spe­ci­fi­ca­ta la strada ri­so­lu­ti­va de­si­de­ra­ta È spe­ci­fi­ca­to il risultato de­si­de­ra­to.
Linguaggi di pro­gram­ma­zio­ne tipici sono C, Pascal, Fortran, ALGOL e tutti i co­sid­det­ti linguaggi as­sem­bla­ti­vi Linguaggi di pro­gram­ma­zio­ne tipici sono Lisp, ML, Haskell, F #, Prolog e Oz
Vai al menu prin­ci­pa­le