1 Macchine astratte, linguaggi, interpretazione, compilazione.

Slides:



Advertisements
Similar presentations
Uguaglianza equals() e clone(). Fondamenti di Java Uguali o identici?
Advertisements

XML Schema Laurea Magistrale in Informatica Chapter 04 Modulo del corso Thecnologies for Innovation.
Interfacce. Un interface è una collezione di firme di metodi (senza implementazione). Una interfaccia può dichiarare costanti.
Laboratorio di Linguaggi lezione X Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione di ripasso costrutti Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Laboratorio di Linguaggi lezione VI: istruzioni di controllo di flusso Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
7878 1,3 8 1,3 4 1,3 4,6 1,3 7,8 1,3 4,5 6 4,5 6 7,8 7 4,6 5,6 7,8 5,6 4 I cicli grigio e verdino sono semplici, quello bianco no Ogni operazione è assegnata.
Think …….. Pensiamo……... Have you got the habit of hoarding useless objects, thinking that one day, who knows when, you may need them ? Abbiamo labitudine.
Imagine wave JOHN LENNON ( ) The Beatles Imagine Alzare il volume – avanzamento automatico – traduzione & adjust by r g.
Imagine wave IN RICORDO JOHN LENNON ( ), cantante e compositore, membro del gruppo The Beatles è una delle figure più importanti del XX secolo.
Test del Software, con elementi di Verifica e Validazione, Qualità del Prodotto Software G. Berio.
JDBC. Eseguire una query String query = "SELECT * FROM COFFEES"; Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); while.
Progettazione Dettagliata delle Componenti. Tipologie di Componente Componenti convenzionali (funzioni, procedure, programmi…) Componenti OO (classi,
Giuseppe Francesco De Luca Le caratteristiche di dualità, interoperabilità, espandibilità, multi- missione e multi-sensore (IEM) di Cosmo Skymed 08/maggio/2014SAMURAI2.
Come with us to visit Sirolo! Venite con noi a visitare Sirolo!
Seif Faten CHILDREN Traduzione: CS TSUNAMi ~ OnDaNoMala ~
Lesson n 5 LINGUA COMUNITARIA PROF.SSA BARBARA DEIANA.
PRIME PROBLEMS OF RECOGNITION IN MAKING ERASMUS Tony Filoni – PRIME Team Padova, 16 Marzo Problems of Recognition in Making Erasmus |
Una didattica inclusiva Alunni stranieri ad alto potenziale cognitivo (GATE, febbraio 2015)
THE DURATION FORM.
SUMMARY Other converters RIEPILOGO Altri convertitori RIEPILOGO Altri convertitori.
La Genetica La scienza dell’ereditarietà. La Genetica In che modo il patrimonio genetico è trasmesso alle nuove cellule che devono sostituire quelle che.
Il FUTURO.
1 File system Casi di studio (2). 2 Struttura del File System in Windows 2000 (1) La master file table di NTFS.
27 novembre 2009 La psicologia morale di Iris Murdoch Seminario Etica, metaetica, etica applicata.
WWW XML \ SGML Fabio Vitali. WWW Fabio Vitali - IUM 1999/20002 Introduzione Qui esaminiamo in breve tutti gli aspetti di XML che non sono derivati da.
Lezione 11 Ricerca: Tabelle hash.
Esempi domande secondo compitino Claudia Raibulet
Gli schema W3C Tipi semplici, tipi complessi, tipi anonimi.
Illustrazione di: modalità di accesso alla piattaforma di e-learning modalità di accesso al sistema per la trasparenza della didattica (TETIS) Master di.
Meccanica - I moti 2. Il moto uniformemente accelerato (I)
1 Il protocollo http. 2 Web Una pagina web è formata da oggetti. Una pagina web è formata da oggetti. Gli oggetti possono essere file HTML, immagini (JPEG,
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 - Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
WWW XML-Namespace Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u L’esigenza e il funzionamento dei Namespace in XML.
1 Astrazioni polimorfe. 2 Perché il polimorfismo 4 Abbiamo visto come si definiscono insiemi di stringhe, insiemi di interi, insiemi di caratteri, etc.
Le tecnologie della lingua e la Società dell’Informazione.
LM 66 Lauree Magistrali in Sicurezza Informatica
MEMBRANA PLASMATICA - MEMBRANE DEGLI ORGANELLI COMPOSIZIONE: bistrato fosfolipidico contenente enzimi, recettori, antigeni; proteine integrali ed estrinseche.
IL DISCORSO INDIRETTO. Il Discorso indiretto si usa per riportare ciò che è stato detto o pensato da altri. Di solito è introdotto da verbi dichiarativi.
I enjoy myself at school and I learn……my school life. A scuola mi diverto ed imparo …..la mia vita scolastica.
1 Attività materiali IAS 16, 23 e 40 1 Prof. Fabrizio Di Lazzaro Ordinario di Economia Aziendale Università “Luiss Guido Carli” LUISS Guido Carli AA 2012/2013.
COME REALIZZARE. Una mappa serve per orientarsi in un percorso (mappa del tesoro, mappa di un parco, mappa di una città,...) Anche per studiare è utile.
Presenta – #wpc15it1 Exchange Server 2016 Preferred Architecture Gabriele Tansini Partner Technical.
Gli insiemi N e Z I numeri naturali sono quelli che formano l’elenco illimitato e a tutti noto I numeri naturali ….. L’insieme N si può.
Allineamenti Multipli Problema Durante l’evoluzione i residui importanti per il mantenimento della struttura e della funzione sono conservati. Come riconoscere.
© 2016 Giorgio Porcu - Aggiornamennto 19/04/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concetti di Base.
Lezione n° 4 - Problemi di Programmazione Matematica - Problemi Lineari e Problemi Lineari Interi - Forma Canonica. Forma Standard Prof. Cerulli – Dott.
Elementi di logica matematica. Prof. Ugo Morra Programma Operativo Nazionale Scuola “Competenze per lo sviluppo” Fondo sociale europeo 2009/2010 Liceo.
1 Studente: Lafronza Luciano Tutor aziendale: Lumini Rossella RICERCA E SINTESI SENTENZE.
Presentazione dati “Questionario mobilità Bologna" 02/02/201 6.
Identità ed equazioni DEFINIZIONE. Si dice identità un’uguaglianza di due espressioni (di cui almeno una letterale) che è verificata da qualunque valore.
LA POLITICA DELLA CONCORRENZA. Che cos’è? La politica della concorrenza rappresenta la politica comunitaria volta a realizzare nel mercato comune una.
FUTURI FUTURO PRESENT CONTINUOUS TO BE GOING TO WILL SIMPLE PRESENT.
Chi siamo noi? Se siete alla ricerca di un medico per togliere i denti, mettere i tappi e riempire le spine, non c'è bisogno di cercare di più i medici.
Regno unito. i confini Est dal mare del nord Ovest è bagnata dall’oceano atlantico Il mare d’Irlanda bagna le coste Tra Bretagna e Irlanda L’Irlanda del.
Quiz
Generali Roadmap to a Data Driven Enterprise
Comparative and superlative adjectives
Sogg. + will/ ’ll + forma base del verbo She will come to the party
I denti del cavallo: determinazione dell'età e necessità delle cure
Il Tasto Chiama. Guida sul Tasto di Chiamata sul sito web da mobile
Working with SQL Server using .NET Standard 2.0
VIA RAGAZZI DEL 99 VIALE TRIESTE VIA G.B.QUADRI VIALE TRIESTE.
Magnificat Poveri e degli umili dei 1/2/2019 6:32 AM
JOHN LENNON ( ) THE BEATLES
Comunicazione e Didattica (Communicating and teaching activities)
INTERCULTURA QUESTIONARIO PER RAPPRESENTANTI DI CLASSE
Workshop conclusivo (LIFE14 ENV/IT/000113)
Presentation transcript:

1 Macchine astratte, linguaggi, interpretazione, compilazione

Macchina astratta §con il termine macchina ci riferiamo ad un calcolatore §hardware---macchina fisica §hardware--software §In ogni caso e’ una macchina astratta che esegue programmi di un linguaggio di programmazione

Linguaggio macchina §programmi: costituiti a partire da istruzioni di un linguaggio §una macchina astratta esegue programmi di un linguaggio L §chiamiamo L il linguaggio macchina della macchina astratta

4 Macchine astratte §una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi §componenti della macchina astratta l interprete l memoria (dati e programmi) l controllo l operazioni “primitive” Interprete Programma Dati op1 op2 …... opn Controllo Operazioni primitive Memoria

5 Il componente di controllo §una collezione di strutture dati ed algoritmi per l acquisire la prossima istruzione (gestendo cicli, loop) l gestire le chiamate ed i ritorni dai sottoprogrammi l acquisire gli operandi e memorizzare i risultati delle operazioni l mantenere le associazioni fra nomi e valori denotati l gestire dinamicamente la memoria l …...

6 La memoria §contiene sia i dati che i programmi che devono essere eseguiti §la gestione della memoria dipende dal tipo di linguaggio § per i linguaggi ad alto livello e’ complicata, istruzionche allocano e deallocano in memoria §necessarie strutture dati tipo stack, heap

7 L’interprete controllo operazioni start stop acquisisci la prossima istruzione decodifica acquisisci gli operandi seleziona esegui op1esegui op2esegui opnesegui alt... memorizza il risultato

8 Il linguaggio macchina  M macchina astratta  L M linguaggio macchina di M è il linguaggio che ha come stringhe legali tutti i programmi interpretabili dall’interprete di M §i programmi sono particolari dati su cui opera l’interprete  ai componenti di M corrispondono componenti di L M l tipi di dato primitivi l costrutti di controllo per controllare l’ordine di esecuzione per controllare acquisizione e trasferimento dati

9 Macchine Astratte implementare un linguaggio L vuol dire realizzare la macchina astratta che ha L come linguaggio macchina tipicamente, la macchina astratta la dovremo realizzare su una macchina gia’ esistente, macchina ospite la macchina ospite avra’ un suo linguaggio macchina

10 Macchine astratte: implementazione  M macchina astratta  i componenti di M sono realizzati mediante strutture dati ed algoritmi implementati nel linguaggio macchina di una macchina ospite M O, già esistente (implementata) §il lingaggio della macchina ospite potrebbe essere di basso o alto livello

11 Dal linguaggio alla macchina astratta  M macchina astratta L M linguaggio macchina di M  L linguaggio M L macchina astratta di L  implementazione di L = realizzazione di M L su una macchina ospite M O  se L è un linguaggio ad alto livello ed M O è una macchina “fisica” l’interprete di M L è necessariamente diverso dall’interprete di M O M L è realizzata su M O in modo interpretativo l’implementazione di L si chiama interprete esiste una soluzione alternativa basata su tecniche di traduzione (compilatore?)

12 Implementare un linguaggio  L linguaggio ad alto livello  M L macchina astratta di L  M O macchina ospite  implementazione di L 1: interprete (puro) M L è realizzata su M O in modo interpretativo l scarsa efficienza, soprattutto per colpa dell’interprete (ciclo di decodifica)  implementazione di L 2: compilatore (puro) i programmi di L sono tradotti in programmi funzionalmente equivalenti nel linguaggio macchina di M O i programmi tradotti sono eseguiti direttamente su M O M L non viene realizzata l il problema è quello della dimensione del codice prodotto §due casi limite che nella realtà non esistono quasi mai

13 La macchina intermedia  L linguaggio ad alto livello  M L macchina astratta di L  M I macchina intermedia  L M I linguaggio intermedio  M O macchina ospite  traduzione dei programmi da L al linguaggio intermedio L M I + realizzazione della macchina intermedia M I su M O MLML MIMI MOMO Programma in LProgramma in L M I realizzazione traduzione

14 Interpretazione e traduzione pura  M L = M I interpretazione pura  M O = M I traduzione pura possibile solo se la differenza fra M O e M L è molto limitata L linguaggio assembler di M O l in tutti gli altri casi, c’è sempre una macchina intermedia che estende eventualmente la macchina ospite in alcuni componenti MLML MIMI MOMO Programma in LProgramma in L M I realizzazione traduzione

15 Il compilatore  quando l’interprete della macchina intermedia M I coincide con quello della macchina ospite M O  che differenza c’è tra M I e M O ? l il supporto a tempo di esecuzione (rts) collezione di strutture dati e sottoprogrammi che devono essere caricati su M O (estensione) per permettere l’esecuzione del codice prodotto dal traduttore (compilatore) M I = M O + rts  il linguaggio L M I è il linguaggio macchina di M O esteso con chiamate al supporto a tempo di esecuzione

16 Il caso del compilatore C §il supporto a tempo di esecuzione contiene l varie strutture dati la pila dei records di attivazione –ambiente, memoria, sottoprogrammi, … la memoria a heap –puntatori,... l i sottoprogrammi che realizzano le operazioni necessarie su tali strutture dati §il codice prodotto è scritto in linguaggio macchina esteso con chiamate al rts

17 Implementazioni miste  quando l’interprete della macchina intermedia M I non coincide con quello della macchina ospite M O  esiste un ciclo di interpretazione del linguaggio intermedio L M I realizzato su M O l per ottenere un codice tradotto più compatto l per facilitare la portabilità su diverse macchine ospiti si deve riimplementare l’interprete del linguaggio intermedio non è necessario riimplementare il traduttore

18 Compilatore o implementazione mista? §nel compilatore non c’è di mezzo un livello di interpretazione del linguaggio intermedio l sorgente di inefficienza la decodifica di una istruzione nel linguaggio intermedio (e la sua trasformazione nelle azioni semantiche corrispondenti) viene effettuata ogni volta che si incontra l’istruzione §se il linguaggio intermedio è progettato bene, il codice prodotto da una implementazione mista ha dimensioni inferiori a quelle del codice prodotto da un compilatore §un’implementazione mista è più portabile di un compilatore §il supporto a tempo di esecuzione di un compilatore si ritrova quasi uguale nelle strutture dati e routines utilizzate dall’interprete del linguaggio intermedio

19 L’implementazione di Java §è un’implementazione mista l traduzione dei programmi da Java a byte-code, linguaggio macchina di una macchina intermedia chiamata Java Virtual Machine l i programmi byte-code sono interpretati l l’interprete della Java Virtual Machine opera su strutture dati (stack, heap) simili a quelle del rts del compilatore C la differenza fondamentale è la presenza di una gestione automatica del recupero della memoria a heap (garbage collector) l su una tipica macchina ospite, è più semplice realizzare l’interprete di byte-code che l’interprete di Java byte-code è più “vicino” al tipico linguaggio macchina

20 Tre famiglie di implementazioni §interprete puro M L = M I interprete di L realizzato su M O l alcune implementazioni (vecchie!) di linguaggi logici e funzionali LISP §compilatore macchina intermedia M I realizzata per estensione sulla macchina ospite M O (rts, nessun interprete) C, C++, PASCAL §implementazione mista traduzione dei programmi da L a L M I i programmi L M I sono interpretati su M O Java i “compilatori” per linguaggi funzionali e logici (ML)

21 Implementazioni miste e interpreti puri §la traduzione genera codice in un linguaggio più facile da interpretare su una tipica macchina ospite §ma soprattutto può effettuare una volta per tutte (a tempo di traduzione, staticamente) analisi, verifiche e ottimizzazioni che migliorano l l’affidabilità dei programmi l l’efficienza dell’esecuzione §varie proprietà interessate l inferenza e controllo dei tipi l controllo sull’uso dei nomi e loro risoluzione “statica” l ….

22 Analisi statica §dipende dalla semantica del linguaggio §certi linguaggi (LISP) non permettono praticamente nessun tipo di analisi statica §altri linguaggi funzionali più moderni (ML) permettono di inferire e verificare molte proprietà (tipi, nomi, …) durante la traduzione, permettendo di l localizzare errori l eliminare controlli a tempo di esecuzione type-checking dinamico nelle operazioni l semplificare certe operazioni a tempo di esecuzione come trovare il valore denotato da un nome

23 Analisi statica in Java §Java è fortemente tipato l il type checking può essere in gran parte effettuato dal traduttore e sparire quindi dal byte-code generato §le relazioni di subtyping permettono che una entità abbia un tipo vero (actual type) diverso da quello apparente (apparent type) l tipo apparente noto a tempo di traduzione l tipo vero noto solo a tempo di esecuzione l è garantito che il tipo apparente sia un supertype di quello vero §di conseguenza, alcune questioni legate ai tipi possono solo essere risolte a tempo di esecuzione l scelta del più specifico fra diversi metodi overloaded l casting (tentativo di forzare il tipo apparente ad un suo possibile sottotipo) l dispatching dei metodi (scelta del metodo secondo il tipo vero) §controlli e simulazioni a tempo di esecuzione

24 Semantica formale e supporto a run time §questo corso si interessa di linguaggi, concentrandosi su due aspetti l semantica formale sempre in forma eseguibile, implementazione ad altissimo livello l implementazioni o macchine astratte interpreti e supporto a tempo di esecuzione §perché la semantica formale? l definizione precisa del linguaggio indipendente dall’implementazione il progettista la definisce l’implementatore la utilizza come specifica il programmatore la utilizza per ragionare sul significato dei propri programmi §perché le macchine astratte? il progettista deve tener conto delle caratteristche possibili dell’implementazione l’implementatore la realizza il programmatore la deve conoscere per utilizzare al meglio il linguaggio

25 E il compilatore? §la maggior parte dei corsi e dei libri sui linguaggi si occupano di compilatori §perché noi no? l il punto d vista dei compilatori verrà mostrato in un corso fondamentale della laurea magistrale l delle cose tradizionalmente trattate con il punto di vista del compilatore, poche sono quelle che realmente ci interessano §per capire meglio, guardiamo la struttura di un tipico compilatore

26 Struttura di un compilatore Analisi lessicale Analisi sintattica Analisi semantica Ottimizzazione 1 Generazione codice Ottimizzazione 2 Supporto a run time non ci interessano: aspetti sintattici