Algoritmo concettuale Sintassi Paradigmi di programmazione Linguaggio ad alto e basso livello Linguaggio binario Programma compilatore Conclusioni EXIT Algoritmo concettuale Una volta individuato l'algoritmo, occorre rappresentarlo con un linguaggio formale che consenta di comunicarlo alla macchina che lo deve eseguire. Questo significa trasformare l'algoritmo concettuale in un insieme di istruzioni ben definite e rappresentarle in modo chiaro e non ambiguo. Paradigmi di programmazione 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. Sintassi I linguaggi di programmazione sono definiti da un insieme di regole grammaticali, o sintassi, che consentono di decidere se una istruzione è 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. Linguaggio ad alto e basso livello In un linguaggio ad alto livello (PASCAL), ad esempio, per sommare due grandezze e assegnarne il valore ad una terza, potremmo usare l'istruzione: semiperimetro := base + altezza Nel linguaggio assemblatore, sempre simbolico ma specifico della singola macchina, si potrebbe dire: LOAD x ADD y STORE Z Linguaggio binario 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: 0010000000000100 0100000000000101 0011000000000110 Programma compilatore 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 . Conclusioni 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.