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.