Compilazione Separata1 Seminario di Implementazione Leone – Magri - Pater.

Slides:



Advertisements
Presentazioni simili
I Linguaggi di programmazione
Advertisements

Traduzione ed Interpretazione
INTRODUZIONE Il framework.NET. Un po di storia Sin dalla prima versione del sistema operativo Windows (1990 circa), nacque la necessità di far comunicare.
Code::Blocks Ambiente di sviluppo.
Costruttori e Distruttori
Informatica Recupero debito quarto anno Terzo incontro.
I linguaggi di programmazione
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Type Checking (1° parte)
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Massa Laura Mela Enrica
Le gerarchie di tipi.
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.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio C++ 5 lezioni
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
Introduzione al linguaggio Java
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
eliana minicozzi linguaggi1a.a lezione2
Derivazione tra classi
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Struttura dei sistemi operativi (panoramica)
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Unità Didattica 2 I Linguaggi di Programmazione
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
Primi Elementi di Programmazione in C++
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
IL CONCETTO DI PACKAGE Una applicazione è spesso composta di molte classi (eventualmente correlate) Un package è un gruppo di classi che costi- tuiscono.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Programmazione in Java
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Introduzione a C#.
Java Contardi Carlo A.S. 2008/09.
Introduzione alla programmazione Object Oriented
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
I nomi in Java F. Bombi 18 novembre novembre 2003.
la traduzione dei programmi
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
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
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
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.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
Eprogram informatica V anno.
28/12/2001package 1 Package Pacchetti e interfacce.
Programmazione orientata agli Oggetti Introduzione a Java.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Compilazione Separata1 Seminario di Implementazione Leone – Magri - Pater

Compilazione Separata2 1.Definizione di compilazione separata 2.Modula-2 3.Differenze con altri linguaggi 4.La compilazione separata in Java 5.C# Vs Java 6.Conclusioni

Compilazione Separata3 Introduzione Concetto fondamentale : il compilatore controlla luso consistente degli oggetti attraverso i moduli a compile time Un programma non e` piu` considerato come un singolo e indivisibile blocco, ma come un grafo orientato. I nodi del grafo sono dipendenti intermodularmente.

Compilazione Separata4 Introduzione (2) Tipicamente la compilazione comprende la descrizione delle diverse interfacce dei moduli. La compilazione separata puo` essere realizzata secondo diversi metodi con diverse interfacce. Tali tecniche compilano le interfacce in codici efficienti di rappresentazione (symbol file).

Compilazione Separata5 I linguaggi che attualmente implementano la compilazione separata derivano sostanzialmente da Modula-2 (1985) Altri linguaggi come: Oberon (92), Ada (83), Ocaml, Mesa hanno sviluppato la compilazione separata in modo parallelo e in parte differente. Introduzione (3)

Compilazione Separata6 Modula-2 Modula-2 (Wirth 1985) e` un linguaggio di programmazione modulare progettato per superare Pascal. Le sue caratteristiche principali sono il concetto di modulo e la compilazione separata con typecheck completo. I moduli sono unita` di compilazione individualmente compatibili, modificabili e rimpiazzabili. Le dipendenze dei moduli sono stabilite attraverso meccanismi di import-export.

Compilazione Separata7 Modula-2 (2) I moduli si suddividono in: definition module e implementation module. Un cambiamento in un definition module influenza tutti i moduli dipendenti direttamente o indirettamente. Un definition module costruisce uno scheletro stabile mentre implementation module costituisce la parte dei programmi locali. Non ci sono conseguenze quando un implementation module viene cambiato. Occorre stabilire una gerarchia tra i moduli.

Compilazione Separata8 Modula-2 (3) 1.In Modula-2 il termine compilazione separata indica che la consistenza con i moduli importati e` eseguita a compile time. 2.Durante la compilazione viene generato un symbol file

Compilazione Separata9 Implementazione Symbol file = descrizione astratta dellinterfaccia. Prima Classificazione: I symbol file comprendono le descrizioni degli oggetti. Si assegna ad un symbol file la classe A se le descrizioni sono ristrette ai propri oggetti dichiarati in corrispondenza del definition module. Si assegna ad un symbol file la classe B se e` self-consistent nel senso che assume informazioni sui propri oggetti come su quelli importati direttamente e indirettamente.

Compilazione Separata10 Implementazione (2) Seconda classificazione: prevede di codificare le informazioni ortogonalmente alla loro quantita`. Classe e` l uso di una sintassi identica o simile a quella originale in Modula-2. Classe e` l uso di metodi che piu` o meno codificano la symbol table del compilatore. La symbol table e` una struttura a compile-time che unisce record descriventi tutti gli oggetti dichiarati.

Compilazione Separata11 Implementazione (3) La classe e` piu` difficile da implementare tramite algoritmi. La classe e` piu` facile da implementare tramite algoritmi (avvalendosi della symbol table). Il metodo B e` migliore perche` genera symbol file piu` corti ed e stato utilizzato da Wirth per Modula-2.

Compilazione Separata12 Implementazione (4) Unita` di oggetti componenti e strutture sono registrati nel symbol file nella forma di blocchi descrittori. Sia gli oggetti che le strutture possono riferirsi ad ulteriori strutture attraverso reference number. Alle strutture standard sono assegnati i numeri piu` bassi che non sono registrati nel symbol file. Secondo la definizione di classe B, il symbol file dovrebbe contenere tutti i propri oggetti e quelli importati direttamente e indirettamente.

Compilazione Separata13 Implementazione (5) Importazione di un modulo : IMPORT Documents, Texts, etc. ( gli oggetti devono essere qualificati tipo documento.modo,etc). FROM Texts IMPORT Mode, Text, buffer, etc (gli oggetti qui possono non essere qualificati).

Compilazione Separata14 Implementazione (6) La base del meccanismo di compilazione separata in Modula-2 e` quello di creare un symbol file da una symbol table e viceversa. Possono essere inseriti nuovi tipi di oggetti senza invalidare i symbol file gia` costruiti. I symbol file non sono specifici di un determinato linguaggio di programmazione, ma servono per dare un interfaccia a tutti i linguaggi. Da un punto di vista dell ingegneria del software, questo modo di operare e` sicuro ed efficente. I symbol file vengono caricati come un unico blocco.

Compilazione Separata15 Differenze con altri linguaggi In C il controllo di consistenza non viene eseguito a compile time (secondo Gutknecht). Il metodo degli include non e molto distante dall uso dei moduli in Modula-2 (IMPORT,FROM IMPORT). Un modulo e compilato tramite il definition module, che in Oberon e unito allimplementation module. In un definition module non e ammissibile una parte privata al contrario del package in Ada.

Compilazione Separata16 Differenze con altri linguaggi (2) La rigorosa corrispondenza di valore univoco fra i definition e implementation module non si trova in MESA, dove parecchi moduli possono contribuire all'implementazione di un singolo modulo di interfaccia. Per questa caratteristica, in Modula-2 e quasi possibile ricostruire da un symbol file il codice sorgente originale.

Compilazione Separata17 Java e la compilazione separata Typecheck separato del frammento di sorgente che include la generazione di codice binario (ad es. il bytecode di Java). Un frammento non puo' essere compilato da solo, ma puo' essere compilato in un ambiente dove l'informazione sul tipo adeguato di frammento mancante è disponibile.

Compilazione Separata18 Java e la compilazione separata(2) Questa tecnica viene praticata con: 1.interfacce ad-hoc scritte dal programmatore (Modula-2, Ada) 2.estraendo o ottenendo informazioni dal frammento di codice posto a typecheck e/o da altri frammenti Questo ultimo processo è anche chiamato intra-checking, per sottolineare che solo i controlli relativi alla coerenza interna del singolo frammento sono eseguiti, secondo le ipotesi sugli altri.

Compilazione Separata19 Un singolo frammento di codice ottenuto dalla compilazione separata è generalmente incompleto e non puo' essere eseguito da solo. Al fine di ottenere una collezione di frammenti sufficienti per venire linkati insieme, un interchecking deve essere eseguito. Interchecking : strumento che effettua il controllo che farebbe un linker statico ma senza assembly del codice. Nei linguaggi fortemente tipati che supportano il linking statico, l'interchecking è effettivamente svolto dal linker, e include anche la generazione di un programma eseguibile a partire dai singoli frammenti di codice. Java e la compilazione separata(3)

Compilazione Separata20 L interchecking dovrebbe garantire che il programma finale non sollevi mai errori di collegamento a run-time. Nei linguaggi che supportano il link dinamico ( Java ) non cè questo assembly di codice binario prima dell'esecuzione. L interchecking è svolto, garantendo così un esecuzione sicura. Java e la compilazione separata(4)

Compilazione Separata21 Es:Consideriamo frammenti di codice (.java) contenenti esattamente una dichiarazione di classe o interfaccia. Chiamiamo il compilatore su una sola classe, diciamo C. 1.Le classi C1,...Cn sulle quali C dipende devono essere rappresentate al meno in forma binaria 2.Se qualcuna delle C1,...Cn sono solo disponibili in forma di sorgente,allora il compilatore Java fa anche rispettare la loro compilazione. Quindi il comportamento di un compilatore Java standard quando viene invocato su C non consiste semplicemente nellintra-checking di C. Java e la compilazione separata(5)

Compilazione Separata22 Un compilatore standard Java puo' giocare il doppio ruolo di meccanismo di compilazione separata e di interchecking Perché Java non supporta la vera Compilazione Separata? 1.Compilazione Separata e interchecking sono fusi insieme 2.Le interfacce di frammenti non sono definite nella definizione della classe. Java e la compilazione separata(6)

Compilazione Separata23 C# vs Java C# è un ibrido tra C e C++ e fa parte dell'iniziativa.NET di Microsoft Definito come il primo linguaggio component-oriented nella famiglia C/C++ C# vanta type-safety, garbage collection, dichiarazioni di tipo semplificate, e altre caratteristiche che dovrebbero facilitare lo sviluppo del software. Particolarmente orientato ai servizi Web e COM+.

Compilazione Separata24 Java ha pochi tipi di dato primitivi: byte, char, int, long, float, double. Tali primitive sono le più piccola "unità" di Java. Mentre tutti gli oggetti in Java si estendono da java.lang.Object, le primitive non si estendono da niente. qualunque classe che opera su oggetti non funzionerà con le primitive. C# vs Java: tipi di dato

Compilazione Separata25 C# vs Java: tipi di dato Le primitive devono essere mappate nel modello dell'oggetto per essere utilizzate. C# usa il sistema object/type di.NET in modo che i programmi C# possano comunicare con altri linguaggi di.NET senza avere confusione sui tipi. Per esempio, il tipo int è un alias per System.Int32 che a sua volta estende System.Object. Ciò significa che ogni primitiva funziona come qualunque altro oggetto.

Compilazione Separata26 La differenza fra le parole chiavi 'import' in Java e 'using' in C# è che Java ha un concetto dei package, mentre la C# usa i namespace come quelli di C++. La keyword 'using' rende tutti i nomi nel dato namespace accessibili ad un modulo. Così, listruzione using System lascia accedere al.NET runtime namespace System. Tale namespace contiene il metodo globale statico System.Console.WriteLine(), che è accessibile come Console.WriteLine() senza specificare il namespace System. In Java, System è una classe definita in java.lang, che è importato implicitamente in ogni file sorgente di Java. C# vs Java: statement

Compilazione Separata27 C# vs Java: oggetti Tutte le classi in C# derivano dalla classe System.Object In Java derivano dalla classe java.lang.Object. In C# si scrive a differenza della keyword extends di Java class A : B{ } Le interfacce si implementano nello stesso modo (usando i due punti ). Per creare una classe che ne estende una e implementa altre interfacce il compilatore richiede solo che la classe da estendere sia la prima della lista dopo i due punti. class D : B, C {}

Compilazione Separata28 C# vs Java: access modifier C# possiede cinque modificatori di accesso Public Protected Internal Protected internal Private

Compilazione Separata29 Conclusioni I nuovi linguaggi di programmazione( Java, C#) hanno importato tecniche gia presenti in altri linguaggi (Modula- 2, Ada). Tutti implementano il paradigma ad oggetti direttamente e indirettamente. La compilazione separata ha introdotto un miglioramento nello sviluppo del codice e nella portabilita. C# porta allestremo tale concetto tanto da essere definito component e non object oriented

Compilazione Separata30 Bibliografia GUTKNECHT, J Separate compilation in Modula-2: An approach to efficient symbol files. IEEE Software. True Separate Compilation of Java Classes (D. Ancona G. Lagorio E.Zucca)