Linguaggi di programmazione: un tuffo nella storia dell’informatica
Con linguaggio di programmazione si intende esprimere un processo con il quale, mediante un programma, un processore ha la possibilità di eseguire un algoritmo o più semplicemente di risolvere un problema.
I linguaggi di programmazione riconosciuti sono solo quelli computazionalmente completi. Per linguaggi computazionalmente completi intendiamo un linguaggio equivalente in potere espressivo al linguaggio macchina di Turing e che non riesce ad esprimere anche programmi di cui non è decidibile la terminazione. Per esempio SQL non è un linguaggio completo perché si può sempre dire quando termina il programma. Quindi per definizione si definisce completo un linguaggio in grado di simulare arbitrarie macchine di Turing.
I linguaggi di programmazione
Nella “recente” storia dell’informatica possiamo annoverare centinaia o forse migliaia di linguaggi di programmazione. Sebbene molti di essi siano caduti in disuso, siano stati dimenticati o siano addirittura esoterici, hanno comunque influenzato o avuto un peso nella nascita di quelli moderni. Orientarsi in questo mare magnum di linguaggi non è semplice; riconoscerne somiglianze e differenze e afferrarne il language design ancora più complicato. Presentando alcuni di quelli che possiamo considerare i progenitori dei linguaggi di oggi, si possono riconoscere e capire alcuni dei più importanti concetti che hanno introdotto.
Alcuni linguaggi e caratteristiche
Di seguito alcuni linguaggi storici e le loro caratteristiche principali:
- Fortran: pensato per la manipolazione algebrica ha introdotto, tra le altre cose, variabili, concetto di tipo, subroutine, go to, iterazioni e statement condizionali;
- Cobol: ha una sintassi english like abbastanza verbosa, infatti ci si era iniziati a porre il problema di come rendere i linguaggi più facili da usare;
- Lisp: è stato il primo vero linguaggio di manipolazione simbolica. Paradigma funzionale, nella prima versione essenzialmente non tipata;
- Prolog: è stato molto innovativo ed è il principale liguaggio di programmazione a paradigma logico. Essenzialmente non tipato;
- Pascal: programmazione strutturata, tipi di dato definiti da utente, ricchezza di strutture dati. Ma ancora niente encapsulation: per questa si dovrà aspettare Modula.
Paradigmi computazionali
I paradigmi computazionali sono degli stili di programmazione che classificano i linguaggi. In un certo modo con un paradigma si definisce il modo in cui il programmatore concepisce e identifica il programma. Esistono diversi paradigmi di programmazione: funzionale, a oggetti, procedurale, ecc… Il paradigma non è il solo e unico aspetto determinante in un linguaggio, ma è certo che la scelta di un determinato paradigma computazionale influenzi in gran modo la maniera in cui si risolve un problema.