Linguaggi di alto livello, compilatori e interpreti

Documenti analoghi
Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Introduzione alla programmazione. Walter Didimo

Il linguaggio di programmazione Python

Linguaggi di programmazione

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Programmazione C Massimo Callisto De Donato

Introduzione alla Programmazione. Giselda De Vita

Linguaggi, compilatori e interpreti

Linguaggio Assembly e linguaggio macchina

Preprocessore, linker e libreria standard

Linguaggi di Programmazione

Lezione 16. Il Software di base

Linguaggio Assembly e linguaggio macchina

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Linguaggi di programmazione e astrazione

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Primi passi col linguaggio C

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

COMPILAZIONE. Tarsformazione di linguaggi

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

FONDAMENTI DI INFORMATICA

Funzioni, Stack e Visibilità delle Variabili in C

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

Il concetto di calcolatore e di algoritmo

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Introduzione al Linguaggio C ed all IDE DEV-C++

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Linguaggio C: le funzioni. Introduzione e sintassi

Informatica Generale Andrea Corradini I linguaggi di programmazione

Il calcolatore. Architettura di un calcolatore (Hardware)

Architettura dei calcolatori e Software di sistema

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

Algoritmi e Linguaggi

Sorgenti di errore. Laboratorio di Informatica 1

Linguaggio C: le funzioni. Introduzione e sintassi

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Fondamenti di Informatica T. Il Software

Definizione di metodi in Java

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Il Processore. Informatica di Base -- R.Gaeta 27

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Indice. Prefazione. 3 Oggetti e Java 53

Linguaggio C: Introduzione ad ambienti di sviluppo integrati (IDE) e a Dev-C++ Università degli Studi di Brescia

Il linguaggio Assembly

Fondamenti VBA. Che cos è VBA

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Linguaggi di Programmazione

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Linguaggi di programmazione

Linguaggio C++ Linguaggi di terza generazione

Introduzione al funzionamento di un calcolatore elettronico

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Transcript:

Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin

Il punto della situazione STATO DATI sottosistema di ingresso-uscita sottosistema unità centrale-memoria periferica periferica interfaccia di ingresso-uscita interfaccia di ingresso-uscita unità centrale memoria centrale bus di sistema Elementi di Informatica e Programmazione Università di Brescia 2

Limiti del linguaggio assembler Esempio: gestione e ordinamento di una rubrica telefonica: sarebbe poco praticabile ricorrere al linguaggio assembler istruzioni dati 0101011110011001 1101011110011111 0111000000011001 1101011100011101 0110011110011001 0101000111011000 1010011110011001 0101111110000000 0101010010011001 0111000000011001 0101000111011000 0101111110000000 0101000111011000 0101110111011000 MEMORIA Ciclo: add $r1, $r1, $r1 sub $r1, $r1, 1 beq $r1, $zero, ciclo Strutture di controllo: solo salti (condiz/incond) Dati troppo elementari (numeri con segno / virgola mobile) Programma monolitico (no moduli) Elementi di Informatica e Programmazione Università di Brescia 3

Linguaggi di programmaz. 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 4

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 Funzionale Logico Lisp, APL, Haskell Prolog - Pascal, Cobol, C Ad oggetti C++, Java, VisualBasic, CLOS Prolog++ Elementi di Informatica e Programmazione Università di Brescia 5

IL PARADIGMA IMPERATIVO Tre tipologie di istruzioni: Istruzioni di ingresso/uscita Istruzioni aritmetico-logiche Ruolo centrale: assegnamento Istruzioni di controllo NB: le stesse del linguaggio macchina! 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 (scarso supporto da ling. macchina) Elementi di Informatica e Programmazione Università di Brescia 6

ASTRAZIONE PROCEDURALE Soluzione di problemi complessi (eventualmente lavoro di più persone in modo coordinato): è utile scomporre un programma in moduli più semplici, detti procedure Facilitano leggibilità, controllo correttezza, produttività, manutenzione del programma Definizione di una procedura (nome + corpo istruzioni): nome_procedura(<parametri formali>) { istruzioni } Parametri formali: sono gli argomenti della procedura (passati dalla procedura o dal programma chiamante): variabili utilizzate dalla procedura al suo interno Elementi di Informatica e Programmazione Università di Brescia 7

Chiamata di una procedura nel programma: nome_procedura (<parametri attuali>) Parametri attuali: variabili o espressioni il cui valore è attribuito ai parametri formali (passaggio dei parametri) I tipi dei parametri attuali devono corrispondere ai parametri formali Effetto della chiamata: - passaggio dei parametri - controllo passato alla procedura, le cui istruzioni vengono eseguite (poi il controllo ritorna all istruzione successiva alla chiamata) NB: è come se il linguaggio si arricchisse di nuove istruzioni ogni nuova istruzione è la chiamata di una procedura e quindi corrisponde all esecuzione di un sottoprogramma Elementi di Informatica e Programmazione Università di Brescia 8

Alcuni linguaggi prevedono due modalità di passaggio dei parametri: - per valore: i parametri attuali sono copiati nelle variabili della procedura corrispondenti ai suoi parametri formali, la procedura quindi non li modifica - per indirizzo: la zona di memoria del parametro formale non contiene il valore, ma l indirizzo del parametro attuale; tutte le operazioni sul parametro formale sono in realtà effettuate sul parametro attuale NB: in C è disponibile solo il passaggio per valore Elementi di Informatica e Programmazione Università di Brescia 9

PARAMETRI ATTUALI modulo chiamante PARAMETRI FORMALI modulo chiamato per valore CHIAMATA indirizzo per indirizzo per valore AGGIORNAMENTI per indirizzo Elementi di Informatica e Programmazione Università di Brescia 10

Esempio (in C++) void fattoriale(int& fatt, int w){ fatt=1; while (w>0){ fatt = fatt * w; w = w 1; } } int fatt1; fattoriale (fatt1, 5); Elementi di Informatica e Programmazione Università di Brescia 11

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 12

Compilatore e interprete programma sorgente P linguaggio di alto livello L Compilatore P comp segnalazione di errori programma oggetto 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 13

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 14

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 15

ESEMPIO: C e ASSEMBLER // A, B, C, D costanti 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; } } 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 16

Domanda Quali proprietà fondamentali distinguono un compilatore (o un interprete) da un altro? Il linguaggio di alto livello L insieme delle istruzioni macchina (ISA) (semplificando, il tipo di processore) Il sistema operativo Elementi di Informatica e Programmazione Università di Brescia 17

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 18

Interprete, sistema operativo, hardware programma sorgente Dati INTERPRETE chiamate di sistema SISTEMA OPERATIVO instruction set HARDWARE Elementi di Informatica e Programmazione Università di Brescia 19

Confronto fra compilatori e interpreti Velocità di esecuzione: i programmi compilati hanno in genere prestazioni migliori (nella compilazione si possono attuare processi di ottimizzazione dell eseguibile) Messa a punto del programma: gli interpreti permettono di correggere gli errori non appena vengono scoperti, senza bisogno di ricompilare interamente il programma Elementi di Informatica e Programmazione Università di Brescia 20

Confronto fra compilatori e interpreti: portabilità Si definisce portabilità la 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. 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 21

Compilatore e linker I compilatori consentono tipicamente la compilazione separata di parti di programmi (moduli) I diversi moduli possono essere progettati, costruiti e messi a punto separatamente, e archiviati in opportune librerie Nel momento in cui un programma deve essere eseguito, un programma apposito, detto linker, si occupa di ritrovare e collegare opportunamente fra loro i moduli oggetto Il risultato del linker è un unico modulo, detto modulo eseguibile, pronto per il caricamento in memoria e l esecuzione Elementi di Informatica e Programmazione Università di Brescia 22

Il ruolo del linker Libreria di moduli oggetto modulo oggetto modulo oggetto modulo oggetto modulo oggetto modulo oggetto modulo oggetto modulo oggetto linker modulo eseguibile Elementi di Informatica e Programmazione Università di Brescia 23

editor Alcuni ambienti di sviluppo includono gli strumenti di creazione, traduzione ed esecuzione dei programmi programma sorgente CalcoloMedia.c (programma in C) compilatore programma oggetto CalcoloMedia.obj librerie linker programma eseguibile CalcoloMedia.exe Elementi di Informatica e Programmazione Università di Brescia 24