JavaScript Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni Linguaggio naturale • Il linguaggio è un meccanismo di comunicazione il cui tramite è il testo o il discorso. • La comunicazione tra uomini avviene tramite il Linguaggio Naturale • Le caratteristiche del Linguaggio Naturale: – Vantaggi • Ricchezza espressiva – Svantaggi • Ambiguità (la stessa frase ha più significati) • Ridondanza (inutili ripetizioni di termini e concetti) Linguaggio macchina • L’hardware di un calcolatore esegue programmi scritti nel (proprio) Linguaggio Macchina • Le caratteristiche del Linguaggio Macchina: – Vantaggi • Molto elementare (usa l’alfabeto binario: 0 e 1) • legato alla struttura fisica dell’elaboratore • Potente e veloce – Svantaggi • Programmi lunghi e di difficile scrittura • Difficile gestione da parte del programmatore Linguaggi di programmazione • Un linguaggi di programmazione è un linguaggio intermedio fra il linguaggio macchina e il linguaggio naturale • Descrive gli algoritmi con una ricchezza espressiva comparabile con quella dei linguaggi naturali • Descrive gli algoritmi in modo rigoroso (è un linguaggio formale dotato di una sintassi ben definita). Linguaggi di programmazione Algoritmi • L’algoritmo è una sequenza logica di istruzioni elementari (univocamente interpretabili) che, eseguite in un ordine stabilito, permettono la soluzione di un problema in un numero finito di passi • Il termine algoritmo nasce in contesti matematici (è una deformazione del nome del matematico persiano del IX secolo Al-Kuwarizmi) ed è stata più recentemente introdotto in informatica. Algoritmi • Dalla definizione di algoritmo si evincono le quattro proprietà fondamentali dell'algoritmo: – la sequenza di istruzioni deve essere finita (numero finito di passi); – essa deve portare ad un risultato (permettono la soluzione di un problema); – le istruzioni devono essere eseguibili materialmente (una sequenza logica di istruzioni elementari eseguite); – le istruzioni devono essere espresse in modo non ambiguo (univocamente interpretabili) . Linguaggi di alto livello e basso livello • Dal modo in cui le istruzioni di un linguaggio di programmazione sono codificate, vi è una prima distinzione tra linguaggi di programmazione: – linguaggi non evoluti o di basso livello (linguaggio macchina, linguaggi assemblativi) linguaggi più vicini al funzionamento fisico del processore – linguaggi evoluti o di alto livello linguaggi ‘più vicini’ al linguaggio naturale, orientati alle soluzioni dei problemi e svincolati dal processore. Uso dei linguaggi di programmazione Traduttori • Il linguaggio macchina è l’unico linguaggio compreso dall’elaboratore • Qualsiasi altro linguaggio di programmazione ha bisogno di un traduttore (non è possibile progettare un traduttore per i linguaggi naturali) • I linguaggi di programmazione sono comprensibili sia dalla macchina (attraverso un traduttore) che dall’uomo. Compilare, interpretare • I programmi scritti in un linguaggio ad alto livello consistono in istruzioni scritte in un file di testo (detto programma sorgente) • Per essere eseguiti dal calcolatore, i programmi debbono essere tradotti in programmi in linguaggio macchina (programma oggetto) • A fare questo, in modo automatico, ci pensa un altro programma, detto compilatore o interprete • Con questa idea (anni ‘50) i linguaggi di programmazione ad alto livello diventarono sempre più "facili" da utilizzare per il programmatore umano Schema della compilazione • Il compilatore riceve il programma sorgente e produce il file oggetto. • Il programma linker collega più moduli oggetto (librerie) prodotti dal compilatore in un unico programma eseguibile (file exe) Schema di un interprete •Il programma interprete legge una singola frase (istruzione) in linguaggio sorgente, la trasforma in una sequenza di istruzioni macchina e le manda in esecuzione •Traduzione e esecuzione sono contestuali.