Linguaggi di alto livello, compilatori e interpreti Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin
Limiti del linguaggio assembler Esempio: gestione e ordinamento di una rubrica telefonica istruzioni dati MEMORIA 0101011110011001 1101011110011111 0111000000011001 1101011100011101 0110011110011001 0101000111011000 1010011110011001 0101111110000000 0101010010011001 0111000000011001 0101000111011000 0101111110000000 0101000111011000 0101110111011000 Ciclo: add $r1, $r1, $r1 sub $r1, $r1, 1 beq $r1, $zero, ciclo Programma monolitico (no funzioni/moduli) Strutture di controllo: solo salti (condiz/incond) Dati elementari (numeri interi / virgola mobile) Elementi di Informatica e Programmazione Università di Brescia 2
Linguaggi di programmazione di alto livello Permettono di specificare gli algoritmi con un linguaggio: - sempre preciso (termini linguistici di significato preciso e univoco) - però più astratto rispetto al linguaggio macchina ciascuna istruzione di un linguaggio di alto livello corrisponde a più istruzioni macchina Vantaggi principali: - consentono lo sviluppo di sistemi complessi - gli errori commessi sono inferiori - il codice è più facile da mantenere - indipendenza dalla macchina Sviluppo storico: da specializzazione a orientamento alla metodologia Elementi di Informatica e Programmazione Università di Brescia 3
PARADIGMI DI PROGRAMMAZIONE L insieme delle caratteristiche che determina il modo di affrontare il progetto e la codifica di un programma, lo stile di programmazione Imperativo Pascal, Cobol, C - Ad oggetti C++, Java, VisualBasic, Funzionale Lisp, APL, Haskell CLOS Logico Prolog Prolog++ Elementi di Informatica e Programmazione Università di Brescia 4
IL PARADIGMA IMPERATIVO (1) Ruolo e dimensioni dell astrazione: Astrazione sui dati Tipi di dati predefiniti e definiti dal programmatore (vs. codici binari) Astrazione sul controllo Condizionali e cicli (vs. istruz di salto condiz/incondiz) Astrazione procedurale Funzioni (in C) (scarso supporto da ling. macchina) Elementi di Informatica e Programmazione Università di Brescia 5
IL PARADIGMA IMPERATIVO (2) Tre tipologie di istruzioni: Istruzioni di ingresso/uscita Istruzioni aritmetico-logiche Ruolo centrale: assegnamento Istruzioni di controllo NB: le stesse del linguaggio macchina! Idea di base: esecuzione sequenza di istruzioni una per una Istruzione 1 Istruzione 2 Effetto sulle variabili I/O flusso Istruzione 3 Elementi di Informatica e Programmazione Università di Brescia 6
ALTRI PARADIGMI (cenni) Imperativo Pascal, Cobol, C - Ad oggetti C++, Java, VisualBasic, Funzionale Lisp, APL, Haskell CLOS Logico Prolog Prolog++ Elementi di Informatica e Programmazione Università di Brescia 7
PROBLEMA: IL CALCOLATORE NON E IN GRADO DI COMPRENDERE DIRETTAMENTE UN LINGUAGGIO AD ALTO LIVELLO Un programma scritto in linguaggio di alto livello per essere eseguito deve essere tradotto in linguaggio macchina Due modi: mediante un compilatore mediante un interprete Elementi di Informatica e Programmazione Università di Brescia 8
COMPILATORE E INTERPRETE NB: sottintesi preprocessore e linker programma sorgente P linguaggio di alto livello L Compilatore P comp segnalazione di errori Programma eseguibile linguaggio macchina programma sorgente P dati linguaggio di alto livello L Interprete P int segnalazione di errori risultati Elementi di Informatica e Programmazione Università di Brescia 9
Spiegazione lucido precedente (1): eseguire un programma scritto in un linguaggio compilato Il programma P scritto in linguaggio L viene dato in ingresso a un programma P Comp P Comp è il programma compilatore del linguaggio L (ad esempio il programma compilatore del C) L esecuzione da parte di un calcolatore di P Comp su P (dove P è il dato di ingresso) produce P exe è PRIMA FASE L esecuzione da parte di un calcolatore di P exe su dei dati iniziali produce dei risultati finali è SECONDA FASE Elementi di Informatica e Programmazione Università di Brescia 10
Spiegazione lucido precedente (2): eseguire un programma scritto in un linguaggio interpretato Il programma P scritto in linguaggio L viene dato in ingresso a un programma P Int P Int è il programma interprete del linguaggio L (ad esempio il programma interprete del Basic) L esecuzione da parte di un calcolatore di P Int su P con i dati in ingresso di P produce i risultati finali Elementi di Informatica e Programmazione Università di Brescia 11
ESEMPIO: C e ASSEMBLER V B C * D C C * 2 A = B F main() /* C */ { int A, B, C, D; if (A = = B) { B = C * D; C = C * 2; } } // A, B, C, D costanti // $r0 è 0 lw $r1, $r0, A lw $r2, $r0, B lw $r3, $r0, C lw $r4, $r0, D bne $r1, $r2, CONT mul $r2, $r3, $r4 sw $r2, $r0, B add $r3, $r3, $r3 sw $r3, $r0, C CONT: Elementi di Informatica e Programmazione Università di Brescia 12
Confronto fra compilatori e interpreti PRO COMPILATORI: VELOCITA DI ESECUZIONE - nella compilazione: processi di ottimizzazione dell eseguibile PRO INTERPRETI: MESSA A PUNTO DEL PROGRAMMA - gli interpreti permettono di correggere gli errori non appena scoperti, senza necessità di ricompilare il programma - possono anche dare indicazioni più precise sugli errori PRO INTERPRETI: PORTABILITA Elementi di Informatica e Programmazione Università di Brescia 13
Compilatore, sistema operativo, hardware programma sorgente Dati COMPILATORE P exe chiamate di sistema SISTEMA OPERATIVO instruction set HARDWARE Elementi di Informatica e Programmazione Università di Brescia 14
Interprete, sistema operativo, hardware programma sorgente Dati INTERPRETE chiamate di sistema SISTEMA OPERATIVO instruction set HARDWARE Elementi di Informatica e Programmazione Università di Brescia 15
Portabilità Portabilità: possibilità di utilizzare un programma su piattaforme hardware/software diverse da quella dove è stato sviluppato Tre modalità: portabilità del file eseguibile: richiede calcolatori con hardware e sistema operativo dello stesso tipo per il quale è stato compilato. Semplice ma restrittivo. COMPIL. INTERP. portabilità tramite ricompilazione: richiede l esistenza di un compilatore e di librerie per la nuova piattaforma e lo svolgimento della ricompilazione. Non fattibile dall utente medio. portabilità tramite interpretazione: richiede l esistenza di un interprete per la nuova piattaforma. Semplice (purché l interprete sia già installato) e non restrittivo. Elementi di Informatica e Programmazione Università di Brescia 16