Trovato l'algoritmo occorre rappresentarlo in un sistema formale che consenta di comunicarlo alla macchina che lo deve eseguire o ad altre persone. Questo significa trasformare l'algoritmo concettuale in un insieme di istruzioni ben definite e rappresentarle in modo chiaro e non ambiguo. Nel caso dei computer, il sistema formale che consente di descrivere l'algoritmo è rappresentato dal linguaggio di programmazione che fornisce una varietà di approcci, noti come paradigmi di programmazione, per affrontare l'atto e il processo della programmazione, ovvero la traduzione nel linguaggio adottato dell'algoritmo. I linguaggi di programmazione sono definiti da un insieme di regole grammaticali, o sintassi, che consentono di decidere se una istruzione è ben formata, ovvero scritta correttamente. I linguaggi di programmazione sono stati introdotti per facilitare il compito di scrittura dei programmi ai programmatori; sono linguaggi simbolici che si sono evoluti sempre più verso sistemi di codici complessi e potenti, orientati più all'uomo che alla macchina. Ad esempio in un linguaggio ad alto livello (come ad esempio PASCAL)
per sommare due grandezze e assegnarne il valore ad una terza, potremmo
usare l'istruzione: Nel linguaggio assemblatore, sempre simbolico
ma specifico della singola macchina, si potrebbe dire: Infine nel linguaggio binario usato dalla macchina questa
stessa istruzione potrebbe essere tradotta nella sequenza di 0 e 1, totalmente
illeggibile per l'uomo, ma perfettamente non ambigua per la macchina:
Il concetto che ha permesso questa evoluzione è stata l'idea di traduzione di un programma nel linguaggio nativo della macchina, l'unico che tiene conto della sua architettura. Questo ha consentito di scrivere programmi che possono essere eseguiti su diverse macchine, perchè basta predisporre una volta per tutte un traduttore, il programma compilatore. Si può facilmente comprendere che per predisporre un compilatore, occorre che le regole grammaticali del linguaggio siano espresse in modo non ambiguo. Sono stati definiti allo scopo numerosi strumenti formali per la descrizione sintattica dei linguaggi: tavole sintattiche, grammatiche, notazione di Backus. Il compito di un compilatore è quello di ricevere un programma sorgente, scritto dal programmatore, e di produrre un linguaggio oggetto, eseguibile da una macchina. Nei 50 anni circa della storia dell'informatica sono stati scritti centinaia di linguaggi. Tracciamo una breve sintesi della loro evoluzione:
La differenza di espressività dei diversi linguaggi o la loro somiglianza, può apparire dall'analisi diei seguenti programmi scritti in linguaggi diversi per risolvere lo stesso semplice problema:
|
![]() |
Lezione 1. I linguaggi di programmazione Copyright © 2002. Alberti. DSI, Università degli Studi di Milano. |
![]() |
![]() |