LINGUAGGI DI PROGRAMMAZIONEUn linguaggio di programmazione è un linguaggio formale, dotato di un lessico, di una sintassi ...
•   COMPILATO               (linguaggio di alto livello – compilato – assemblatore – collegato)Un esempio di linguaggio co...
PIATTAFORMA JAVA E .NETUna soluzione intermedia fra compilazione e interpretazione è quella adottata dai linguaggi Java e ...
Architettura Java“Write Once, Run Anywhere” è il motto che la Sun utilizza per identificare Java.Già da questa si intuisce...
Architettura .NetIl prodotto Microsoft parte da un presupposto diverso, invece di puntare sulla portabilità del codice (an...
ConfrontoDal punto di vista architetturale i due framework sono molto simili, Java ha enfatizzato l’indipendenza dallamacc...
Riferimenti:          •    Spiegazioni in classe          •    http://it.wikipedia.org/wiki/Piattaforma_Java          •   ...
Upcoming SlideShare
Loading in …5
×

Linguaggi di programmazione

501 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
501
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Linguaggi di programmazione

  1. 1. LINGUAGGI DI PROGRAMMAZIONEUn linguaggio di programmazione è un linguaggio formale, dotato di un lessico, di una sintassi e diuna semantica ben definiti, utilizzabile per il controllo del comportamento di una macchina formale o di unaimplementazione di essa (tipicamente, un computer) ovvero per la programmazione di questa attraverso lascrittura di un programma sotto forma di codice.Si distinguono linguaggi di basso livello (orientati al linguaggio macchina, assembler) e di alto livello(orientati all’uomo).Quindi si possono ottenere dei programmi in modo: • DIRETTO il programma viene scritto in binario • ASSEMBLATO (assembly + assemblatore + linker)ASSEMBLATORE: è un programma che riceve un intero programma sorgente (file in ascii) in input erestituisce in output il programma oggetto (in binario).LINKER (o collegatore) :- risolve i riferimenti esterni (es: le Librerie)- predispone i segmenti permettendo all’utente di ottenere un programma rilocabile- crea il file eseguibile .exe
  2. 2. • COMPILATO (linguaggio di alto livello – compilato – assemblatore – collegato)Un esempio di linguaggio compilato è il Pascal, il programma viene scritto utilizzando quellinguaggio e successivamente compilato cioè tradotto in un file.asm (compatibile con il processoreutilizzato ) che poi per diventare eseguibile seguirà gli stessi passaggi descritti nella modalitàassemblata.Compilazione e assemblaggio attualmente avvengono spesso in un passaggio unico per evitaretappe inutili. • INTERPRETATO il programma è interpretato linea per linea, quindi non esistono il file.asm e il file.obj e i cicli non possono essere implementati visto la particolare modalità di traduzione. Un esempio di linguaggio interpretato è il BASIC dove l’unico controllo esistente è il “go to”. Esso è stato utilizzato per molti anni nonostante lo svantaggio dei cicli perché l’interprete richiedeva 16K di ram e con i pc IBM dotati di 64K di ram era la soluzione più comoda (contro circa 600K utilizzati dai compilatori Pascal).Il maggior vantaggio della interpretazione è senz’altro l’essere svincolati da una piattaforma(combinazione di architettura hardware e sistema operativo) particolare, al prezzo di una minoreefficienza rispetto alla compilazione che è sicuramente più veloce, ma risulta scomoda per l’assenzadi un’intercompatibilità. • PIATTAFORMA e LINGUAGGIO JAVAIl programma sorgente scritto in java viene compilato in un linguaggio intermedio ibrido chiamatobyte code e poi interpretato dalla Java Virtual Machine, ossia un’interprete di basso livello che emulauna CPU.In questo modo il programma diventa eseguibile da qualsiasi computer avente la propria JVMinstallata. • PIATTAFORMA .NETAnalogamente alla piattaforma java il programma sorgente viene compilato in un linguaggiointermedio chiamato Portable Executable FIle e interpretato dalla Common Language Runtime checoncettualmente è molto simile a una virtual machine.Questo componente deve essere eseguito prima di poter lanciare i programmi .Net, una volta inmemoria si preoccupa di richiamare i moduli di cui si ha bisogno e li compila con il JIT.
  3. 3. PIATTAFORMA JAVA E .NETUna soluzione intermedia fra compilazione e interpretazione è quella adottata dai linguaggi Java e Python,con il byte code e in Visual Basic e.NET di Microsoft con il P-code.In tutti e due questi casi il codice sorgente dei programmi non viene compilato in linguaggio macchina, ma inun codice intermedio "ibrido" destinato a venire interpretato al momento dellesecuzione del programma: ilmotivo di questo doppio passaggio è di avere la portabilità dei linguaggi interpretati ma anche, grazie allapre-compilazione, un interprete più semplice e quindi più veloce.Tuttavia il codice intermedio è più facile sia da interpretare che da compilare: per questo motivo sia per Javache per i linguaggi .NET sono stati sviluppati i compilatori JIT (Just In Time), che al momento del lancio di unprogramma Java, VB o .NET compilano “al volo” (cioè durante l’esecuzione del programma stesso) il codiceintermedio e mandano in esecuzione un normale codice macchina nativo, eliminando completamente lanecessità dellinterprete e rendendo i programmi scritti in questi linguaggi veloci quasi quanto i normaliprogrammi compilati.IN BREVE..Il Programma sorgente viene compilato in un linguaggio intermedio ibrido (es: byte code) una volta per tutteIl linguaggio intermedio viene interpretato da una Virtual Machine (VM) ossia un interprete di basso livelloche emula una CPULa portabilità su una CPU diversa è garantita dall’esistenza della VM per quella specifica CPU
  4. 4. Architettura Java“Write Once, Run Anywhere” è il motto che la Sun utilizza per identificare Java.Già da questa si intuisce l’obiettivo di questo linguaggio: rendere il codice scritto indipendente dallapiattaforma. In Java è possibile scrivere un programma in ambiente Linux ed eseguirlo in ambienteWindows, senza apportare alcuna modifica al codice sorgente.Per ottenere questa indipendenza viene utilizzata la seguente architettura:Quindi l’utente scrive il proprio codice in Java e il file prodotto viene compilato, in questa maniera vienecreato un codice intermedio indipendente dalla macchina denominato byte code.La “virtual machine”, il componente fondamentale della struttura che è differente per ogni sistemaoperativo, si occupa di rendere effettivamente portabile il codice. Quando un programma viene eseguito,prima viene caricata la “virtual machine” la quale chiama ed esegue il byte code di cui si ha bisogno edutilizzando una compilazione Just In Time (JIT) si preoccupa di tradurre in linguaggio macchina le istruzionidel programma. Per eseguire il medesimo programma su di un sistema operativo diverso basta assicurarsi che sullamacchina di destinazione sia presente una “virtual machine” appropriata, copiare sulla macchina il bytecode del programma ed eseguirlo. In questa semplice maniere viene mantenuta la portabilità del codice.
  5. 5. Architettura .NetIl prodotto Microsoft parte da un presupposto diverso, invece di puntare sulla portabilità del codice (anchese non è esclusa questa possibilità) punta sulla possibilità di lasciare la libertà al programmatore di usare illinguaggio di programmazione da lui preferito. Questa scelta secondo Microsoft permette di creareprogrammi molto velocemente perché per utilizzare questa piattaforma non è necessario imparare alcunnuovo linguaggio. Altri, invece, vedono questa libertà come una nota negativa che a lungo porta a scriverecodice più confuso, più difficile da leggere e da mantenere.Il sistema è il seguente:Si scrive il proprio codice nel linguaggio preferito, il file così generato deve essere compilato con uncompilatore per il linguaggio prescelto che sia compatibile con le specifiche .Net. Questa compilazionegenera un codice intermedio molto simile al byte code di Java che in questo caso viene chiamato “portableexecutable file”, la creazione di questo codice intermedio permette quindi di nascondere il tipo dilinguaggio utilizzato. Nel caso della programmazione ad oggetti si può anche passare come argomento di unmetodo oggetti scritti in altri linguaggi. Questa interoperabilità tra linguaggi è possibile proprio perché tuttii compilatori generano codice coerente tra loro. Quando viene richiamato dal nostro programma unmetodo esterno non si ha la necessità di sapere in che linguaggio è stato scritto poiché sappiamo chesicuramente è stato compilato seguendo delle regole comuni, di conseguenza tutto il codice .Net èutilizzabile da tutti i linguaggi .Net.Una volta compilato il proprio programma, per poterlo eseguire, bisogna utilizzare il “common languageruntime” che concettualmente è molto simile alla “virtual machine”.Questo componente deve essere eseguito prima di poter lanciare i programmi .Net, una volta in memoria sipreoccupa di richiamare i moduli di cui si ha bisogno e li compila con il JIT.
  6. 6. ConfrontoDal punto di vista architetturale i due framework sono molto simili, Java ha enfatizzato l’indipendenza dallamacchina mentre .Net ha enfatizzato l’indipendenza dal linguaggio.Con piccole aggiunte queste due caratteristiche sono ottenibili da entrambi i concorrenti; infatti, nel casodi Java esistono dei progetti funzionanti che permettono l’indipendenza dal linguaggio e dal punto di vistadi .Net è possibile ottenere l’indipendenza dalla piattaforma.
  7. 7. Riferimenti: • Spiegazioni in classe • http://it.wikipedia.org/wiki/Piattaforma_Java • http://it.wikipedia.org/wiki/Microsoft_.NET • https://docs.google.com/viewer? a=v&q=cache:mO_2CMAmlNEJ:microservo.altervista.org/Collaborazioni/Confronto %2520java %2520net.doc+principio+di+funzionamento+.net+java&hl=it&gl=it&pid=bl&srcid=ADGEESh tRgLhhRk0SllNRKLCPpPbvaqAHehK9SsvEXeNGE7x0tOmGhNDkwvrzTIuqhcuwbrmu3KJXt2P Qqv1qLzBb7STLyF0lhFrbprkm7ryde7nC1Z- r5BcRbDdEvoLrEfcOXmIGroU&sig=AHIEtbSJPxSodPkx0Sc1wmJ8Mwv9EOugcw Martina De Stefani III E

×