Implementazione di un linguaggio ad alto livello (con riferimento a Java)

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Traduzione ed Interpretazione
Ambiente Java.
Macchine Astratte (anche dette Macchine Virtuali)
Software di base: Linguaggi di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Dalla scrittura all’esecuzione
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Evoluzione dei linguaggi di programmazione
I linguaggi di programmazione
Definizione e tipi di implementazione
Linguaggi di programmazione
Programmazione e Laboratorio di Programmazione – Luca Tesei1 La Programmazione Cosè la programmazione? Concetti preliminari.
Il Sistema Operativo.
Generazione di Codice Intermedio
Elaboratore e Sistemi Operativo
Algoritmi e Programmazione
Massa Laura Mela Enrica
Programmazione II Docente: Francesca Levi
Generalità Linguaggio e Macchina Astratta
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
Dr. Francesco Fabozzi Corso di Informatica
Strutture dei Sistemi Operativi
Informatica di base A.A. 2003/2004 Algoritmi e programmi
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Terza parte: Programmazione ad oggetti in Java. Cosè Java Linguaggio di programmazione definito dalla Sun Obiettivo: sviluppo di applicazioni sicure,
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Introduzione al linguaggio Java
Heap allocation e garbage collector di Oberon Algoritmo Quick Fit e garbage collector mark and sweep.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
memoria gestita staticamente:
Introduzione a C#.
Ereditarietà e Polimorfismo
Java Contardi Carlo A.S. 2008/09.
Introduzione al linguaggio assembly del microprocessore a parte
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Macchine astratte, linguaggi, interpretazione, compilazione
Sistema Operativo (Software di base)
la traduzione dei programmi
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Relazione sulle strutture dati Svolta da: Buccella Simone Strutture di dati Aree di memoria Puntatore numericibooleani alfabetici Statici dinamici Puntatori.
estensione (con piccole varianti) di quella in
Linguaggi di Programmazione
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
L’esecuzione dei programmi
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Il software Claudia Raibulet
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Informatica e Informatica di Base
1 Tipi di dato modificabili §a livello semantico, riconduciamo la modificabilità alla nozione di variabile l lo stato “modificabile” corrispondente sarà.
Programmazione orientata agli Oggetti Introduzione a Java.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Implementazione di un linguaggio ad alto livello (con riferimento a Java)

Linguaggio e Macchina Astratta L linguaggio M L macchina astratta di L §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

Macchina astratta Interprete Programma Dati op1 op2 …... opn Controllo Operazioni primitive Memoria

Dal linguaggio alla macchina astratta 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 –linterprete di M L è necessariamente diverso dallinterprete di M o

Il componente di controllo una collezione di strutture dati ed algoritmi per –acquisire la prossima istruzione –gestire le chiamate ed i ritorni dai sottoprogrammi –acquisire gli operandi e memorizzare i risultati delle operazioni –mantenere le associazioni fra nomi e valori denotati –gestire dinamicamente la memoria –…...

Linterprete controllo start stop acquisisci la prossima istruzione decodifica acquisisci gli operandi seleziona esegui op1esegui op2esegui opnesegui alt... memorizza il risultato

Implementare un linguaggio implementazione di L 1: interprete (puro) –M L è realizzata su M O in modo interpretativo –scarsa efficienza, soprattutto per colpa dellinterprete (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 –il problema è quello della dimensione del codice prodotto due casi limite che nella realtà non esistono quasi mai

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 –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

Implementazioni miste quando linterprete 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 –per ottenere un codice tradotto più compatto –per facilitare la portabilità su diverse macchine ospiti si deve riimplementare linterprete del linguaggio intermedio non è necessario riimplementare il traduttore

Limplementazione di Java è unimplementazione mista –traduzione dei programmi da Java a byte-code, linguaggio macchina di una macchina intermedia chiamata Java Virtual Machine –i programmi byte-code sono interpretati –linterprete della Java Virtual Machine opera su strutture dati (stack, heap) simili a quelle delle realizzazioni di altri linguaggi la differenza fondamentale è la presenza di una gestione automatica del recupero della memoria a heap (garbage collector) –su una tipica macchina ospite, è più semplice realizzare linterprete di byte-code che linterprete di Java byte-code è più vicino al tipico linguaggio macchina

Implementazioni miste soprattutto può effettuare una volta per tutte (a tempo di traduzione, staticamente) analisi, verifiche e ottimizzazioni che migliorano –laffidabilità dei programmi –lefficienza dellesecuzione varie proprietà interessate –inferenza e controllo dei tipi –controllo sulluso dei nomi e loro risoluzione statica –….

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