Corso di Progetto di compilatori ed interpreti

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Progetto di compilatori ed interpreti"

Transcript

1 Corso di Progetto di compilatori ed interpreti Corso di Laurea Specialistica in Ingegneria Informatica A.A Requisiti preliminari e obiettivi Requisiti preliminari Conoscenza dei linguaggi di programmazione Conoscenza dei paradigmi di programmazione Conoscenza delle diverse modalita di allocazione della memoria Capacita di sviluppare applicazioni software anche complesse Conoscenza delle principali strutture dati e degli algoritmi per la loro gestione Obiettivi Tecniche di traduzione per i moderni linguaggi di programmazione sia di tipo general purpose che linguaggi per applicazioni specifiche

2 Scheduling Orario delle lezioni Martedì aula CC Giovedi 8-11 aula P5 Chiarimenti e informazioni Orario ricevimento Mercoledì dalle 11 alle 12 Venerdì dalle 10 alle 11 Course Outline Tecniche di implementazione dei linguaggi Traduttori, compilatori e interpreti Struttura di un compilatore Analisi lessicale (scanning) Grammatiche regolari Implementazione di scanner Analisi sintattica (parsing) Context Free Grammars Top-Down Parsing, LL Parsing Bottom-Up Parsing, LR Parsing Analisi Semantica (Contextsensitive Analysis) Syntax-Directed Translation Attribute Definitions Evaluation of Attribute Definitions Rappresentazone intermedia Generazione del codice Tecniche di ottimizzazione del codice Program Representation Dataflow Analysis Static Single Assignment Global Optimization Register Allocation Scheduling Interprocedural Analysis Optimizing Object-Oriented Languages (Alias analysis) Garbace collection Data Dependence Analysis Loop Transformations Scalar Compilers in Practice

3 Modalita di esami Modalità esami elaborato gruppi di 2 4 persone esame orale Prova in itinere Durante il corso sarà svolta una prova in itinere Materiale didattico R. Sebesta "Concept of Programming Language", The Benjamin Cummings Company, Inc. Fischer, Le Blanch, "Crafting a compiler", The Benjamin Cummings Company, Inc Steven Muchnick, Advanced Compiler Design Implementation, Morgan Kaufmann. Robert Morgan, Building an Optimizing Compiler, Digital Press. altro..

4 Perche studiare i compilatori? I compilatori forniscono una interfaccia essenziale fra applicazioni e architettura I compilatori inglobano una vasta gamma di tecniche basate su aspetti teorici ampiamente utilizzati Lo sviluppo dei compilatori consente di acquisire una maggiore abilità nello sviluppo del software Obiettivi dell implementazione di un linguaggio Correttezza Efficenza Time, data space, code space At compile & run-time Supporta l espressività del linguaggio Supporta caratteristiche dell ambiente di programmazione Fast turnaround time Separate compilation Source level debugging

5 Linguaggi intepretati vs. compilati C, C++, Fortran Di norma compilari Lisp, Haskell, PHP, Python Di norma interpretato Perchè? Tecniche di implementazione di un linguaggio Interprete Easy to implement Built-in run-time support Slow Compilatori Significant implementation effort Requires run-time support (e.g., garbage collector) Fast, optimized target code Hybrid Esempi: bytecode interpreters for Perl, Java

6 Compilatore vs. interprete programma sorgente Compilatore dati Programma oggetto errori risultati programma sorgente dati Interprete risultati errori Interpreti È possibile eseguire modifiche ed aggiunte al codice durante l esecuzione, ciò consente un debug interattivo. Tale modifiche possono essere gestite agevolmente se il linguaggio non gestisce blocchi strutturati il tipo di una variabile può variare durante l esecuzione dato che il programma utente e continuamente riesaminato durante l esecuzione migliore diagnostica degli errori indipendenza dalla macchina Sorgente meno compatto generano un grande overhaed: 10-1 linguaggi statici 100-1linguaggi dinamici ogni riferimento ad una variabile richiede un riesame del codice tutte le routine di supporto devono essere costantemente disponibili

7 Cosè un compilatore E un programma che legge una frase di un linguaggio e la traduce in un altro linguaggio Linguaggio sorgente Di norma un programma scritto in un linguaggio di alto livello Compilatore Linguaggio oggetto Di norma il programma equivalente scritto linguaggio macchina (machine code relocatable object file) errori Cosè un compilatore Traduttori di linguaggi di programmazione in linguaggio macchina convertitori di formato silicon compiler

8 Ruolo dei Compilatori Linguaggi di programmazione ad alto livello Incremento la produttività dei programmatori Facilità di maintenance del codice Maggiore portabilità del codice Dettagli dei linguaggi di basso livello Scelta delle istruzioni Metodi di ndirizzamento Pipelines Uso della cache Parallelismo a livello di istruzione I compilatori sono necessari per coprire il gap tra i linguaggi high-level e low-level I calcolatori continuano a cambiare da quando sono stati inventati Cambi nell architettura cambi nei compilatori Nuove caratteristiche significa nuovi problemi Modifiche nei costi Necessità di re-engineer di soluzioni conosciute Significative differenze nelle performance

9 Il progetto di compilatori investe numerosi settori della computer science All interno di un compilatore intervengono tutte queste componenti. Inteligenza artificiale Algoritmi Teoria Sistemi Architetture greedy algorithms learning algorithms graph algorithms Union-find network flows dynamic programming dfas for scanning parser generators lattice theory for analysis allocation and naming locality synchronization pipeline management memory hierarchy management instruction set use Progetto di Compilatori I compilatori sono pezzi di software di grandi dimenzioni ed enormemente complessi Lo sviluppo di compilatori richiede conoscenze su programming tools (compilers, debuggers) program generation tools (flex yacc bison) software libraries (sets collections) simulators (spim) La conoscenza della struttura di un compilatore migliora le qualita del progetista del software

10 Cosa richiedere ad un compilatore? Codice corretto Il codice prodotto sia efficiente (output runs fast) Il compilatore sia efficiente (Compiler runs fast) Il tempo di compilazione sia proporzionale alla dimenzione del codice Compilazione separata Accurata diagnosi degli errori sintattici Funzioni adeguatamente con il debugger Accurata diagnosi delle anomalie Cross language calls Ottimizzazione predicibile Altre applicazioni Le tecniche utilizzate per lo sviluppo dei compilatori travano impiego in numerosi problemi della computer science. Le techniche usate in un lexical analyzer possono essere utilizzate in un editor di test(text editors), sistemi di information retrieval, e programma di pattern recognition. Le techniche usate in un parser possono essere utilizzate in sistema di query processing come SQL. Molti software che hanno un front-end complesso possono utilzzare techniche utilizzate nel progetto dei compilatori Un risolutore simbolico di equazioni che prende una equazione in ingresso e esegue il parsing di tale equazione Natural Language Processing (NLP)

11 Struttura di un compilatore Ci sono due fasi fondamentali in un compilatore: Analisi e Sintesi Nella fase di analisi, una rappresentazione intermedia viene creata dal programma sorgente Analizzatore lessicale, Analizzatore Sintattico e Analizzatore Semanticosonopartidi questafase Nella fase di sintesi, il programma target equivalente viene creato dalla rappresentazione intermedia Generatore di codice intermedio, Generatore di Codice e Ottimizzatore sono parti di questa fase Fasi di un compilatore Source Program Lexical Analyzer Syntax Semantic Analyzer Analyzer Intermediate Code Code Generator Optimizer Code Generator Target Program Ogni fase trasforma il prgramma sorgente da una rappresentazione in un altra Durante queste fasi vengono utilizzate Error handlers. Symbol table.

12 Funzionalità di un compilatore Analisi lessicale (scanner) trasforma il codice sorgente in una forma compatta e uniforme (tokens=elementi lessicali) elimina informazioni non necessarie presenti nel codice sorgente (commenti) processa le direttive di compilazione (include, define, etc) scopre eventuali errori nel lessico le espressioni regolari è la notazione che in modo efficace consente di descrivere i tokens Analisi lessicale Un analizzatore lessicale legge il programma sorgente carattere per carattere e ritorna tokens del programma sorgente. Un token descrive un insieme di caratteri che hanno lo stesso significato (come identificatore, operatori, keywords, numeri, delimitatori etc) newval := oldval + 12 => tokens: newval identifier := assignment operator oldval identifier + add operator 12 a number Le informazioni sugli identificatori sono memorizzate nella tabella dei simboli (symbol table).

13 Analisi lessicale Le espressioni regolari sono utilizzate per descrivere I token Un Automa a Stati Finiti Deterministico (Deterministic Finite State Automaton, Deterministic FSA) può essere utilizzato per implementare una analizzatore lessicale Funzionalità di un compilatore Analisi sintattica (parser) cerca errori sintattici si raggruppano i tokens in frasi grammaticali Un Analizzatore Sintattico crea la struttura sintattica (generalmente sotto forma di un albero chiamato parse tree) di un dato programma

14 Syntax Analyzer Un analizzatore sintattico è anche chiamato parser. Un parse tree descrive la struttura sintattica. assgstmt identifier := expression In un parse tree, tutti I terminali sono foglie Tutti gli altri nodi sono non terminali newval expression + expression identifier number oldval 12 Syntax Analyzer (CFG) La sintassi di un linguaggio è specificata per mezzo di una grammatica non contestuale (context free grammar CFG). Le regole di una CFG sono ricorsive Un analizzatore sintattico verifica se un dato programma sodisfa le regole derivate dall CFG o no Se le regole sono soddisfatte l analizzatore sintattico crea un parse tree per il programma dato

15 Syntax Analyzer (CFG) Spesso per specificare una CFG viene utilizzata una BNF (Backus Naur Form) assgstmt -> identifier := expression expression -> identifier expression -> number expression -> expression + expression Syntax Analyzer versus Lexical Analyzer Quali costrutti di un programma devono essere riconosciuti da un the lexical analyzer, e quali da un syntax analyzer? Ambedue fanno le stesse cose; ma il lexical analyzer tratta solo I costrutti del linguaggio non-recursivi. Il syntax analyzer tratta I costrutti del linguaggio recursivi Il lexical analyzer semplifica il lavoro del syntax analyzer. Il lexical analyzer riconosce I componenti più piccoli (tokens) del programma sorgente. Il syntax analyzer lavora sui tokens riconoscendo le strutture del linguaggio

16 Tecniche di Parsing In relazione a come viene creato il parse tree ci sono differenti tecniche che possono essere divise in due gruppi: Top-Down Parsing, Bottom-Up Parsing Top-Down Parsing: La costruzione del parse tree inizia dalla radice e procede verso le foglie. Efficienti parser top-down possono facilmente essere costruiti a mano. Recursive Predictive Parsing, Non-Recursive Predictive Parsing (LL Parsing). Bottom-Up Parsing: La costruzione del parse tree inizia dallefogliee procedeverso la radice. Di norma efficienti parser bottom-up parsers sono creati con l ausilio di tool software I parser Bottom-up è anche conosciuto con il nome di shift-reduce parsing. Operator-Precedence Parsing facili da implementare LR Parsing molte forme di shift-reduce parsing, LR, SLR, LALR Funzionalità di un compilatore Analisi semantica cerca errori semantici informazioni sui tipi - type checking Ottimizzazione cerca di migliorare il codice per limitare il tempo di esecuzione e la memoria necessaria (questa fase può essere molto complessa) Generazione del codice

17 Analizzatore Semantico Un semantic analyzer cerca nel programma sorgente errori semantici e raccoglie informazioni necessarie per la generazione del codice Type-checking è un importante parte dell analisi semantica Di norma le informazioni semantiche non possono essere rappresentate con un context-free language Context-free grammars sono integrate con attributi (regole semantiche) Il risultato e una traduzione syntax-directed, Grammatiche ad attributi Esempio: newval := oldval + 12 Il tipo dell identificatore newval deve corrispondere (match) con il tipo dell espressione (oldval+12) Generazione di codice intermedio Un compilatore può produrre una rappresentazione intermedia esplicita del codice intermedio. Questo codice intermedio e generalmente indipendente dall architecture. Il livello del codice intermedio è generalmente vicino a quello del codice macchina. Esempio: newval := oldval * fact + 1 id1 := id2 * id3 + 1 MULT ADD MOV id2,id3,temp1 temp1,#1,temp2 temp2,,id1

18 Ottimizzatore di codice (per codice intermedio) Ottimizzatore di codice ottimizza il codice intermedio in termini di tempo e spazio Esempio: MULT id2,id3,temp1 ADD temp1,#1,id1 Generatore di codice Produce il linguaggio target per una specifica architettura IL programma target è normalmente un codice oggetto rilocabile contenente codice macchina. Esempio: ( simpponendo che noi abbiamo un architettura per cui al più un operando è un registro) MOVE MULT ADD MOVE id2,r1 id3,r1 #1,R1 R1,id1

19 Classificazione dei compilatori Numero di passi compilatori a singolo passo - compilatori a più passi con numero di passi si intende il numero di volte che viene letto il codice sorgente durante la compilazione Ottimizzazione nessuna ottimizzazione ottimizzazione in spazio ottimizzazione in tempo Classificazione dei compilatori: Linguaggio oggetto prodotto pure machine code i compilatori generano codice per un particolare set di istruzioni macchina non assumendo l esistenza di alcun sistema operativo o libreria di funzioni questo approccio è raro ed è utilizzato per compilatori di linguaggi per l implementazione di sistemi augmented machine code i compilatori generano codice per un particolare set di istruzioni macchina arricchito con routine di sistema operativo o di supporto. Per eseguire un tale codice oggetto sulla macchina devono esistere un sistema operativo e una collezione di routine di supporto (I/O, allocazione di memoria) che vanno lincate al codice oggetto il grado di corrispondenza fra codice virtuale e hardware può variare moltissimo

20 Classificazione dei compilatori: Linguaggio oggetto prodotto Virtual machine code i compilatori generano codice composto esclusivamente da codice virtuale. Questo approccio è attraente perché permette di generare codice eseguibile indipendente dall hardware questo approccio penalizza la velocità di esecuzione Struttura di un compilatore: singolo passo analizzatore lessicale generatore del codice analizzatore sintattico - semantico

21 Struttura di un compilatore: due passi Front-end Back-end Linguaggio sorgente Linguaggio intermedio Linguaggio oggetto Front-end O(n) o O(nlogn) errori Back-end NPC Compilazione a due passi Front end : dipendenza da linguaggio sorgente - indip. da macchina (analisi e generazione codice intermedio...) Back end : indipendenza da linguaggio sorgente - dip. da macchina (ottimiz. e generazione codice) Front e back end si possono riutilizzare separatamente per nuovi compilatori Passate una singola passata può bastare per più fasi (interfogliate durante la passata) (es: analisi e generazione codice intermedio in una sola passata "guidata" da analiz. sintattico) Ridurre il numero di passate diminuisce tempo - aumenta memoria richiesta tecnica del backpatching per raggruppare generazione di codice intermedio e oggettosi lasciano "vuoti" gli indirizzi non deducibili una lista collega tutti i "buchi" relativi alla stessa entry nella symbol table i "buchi" si riempiono quando si arriva ad avere le informazioni necessarie

22 Struttura di un compilatore: due passi Linguaggio intermedio di alto livello: gli operatori del linguaggio sorgente sono ancora presenti nel linguaggio Linguaggio intermedio di basso livello: gli operatori sorgenti sono tradotti in altri più semplici o specializzati if cond then ramo1 else ramo2 Ifop cond ramo1 ramo2 Jump iffalse cond etich2 ramo1 jump etich_uscita etich2: ramo2 etich_uscita Implicazione della compilazione a due passi Utilizzo di una rappresentazione intermedia (IL = intermediate language) il front-end traduce il codice corretto in IL il back-and traduce il codice in formato IL nel target code rende più semplice la costruzione di un compilatore per un nuovo processore (retargeting) consente di progettare compilatori con multipli front-end

23 Struttura di un compilatore: due passi Codice PASCAL Codice PASCAL Codice PASCAL Codice PASCAL Front-end Compilatore per PASCAL per il processore Back-end P1per PASCAL processore P1 Compilatore PASCAL per il processore P2 Front-end per PASCAL Front-end Compilatore per PASCAL per il processore Back-end P3 per PASCAL processore P3 Compilatore PASCAL per il processore P4 Front-end per PASCAL Back-end per processore P2 Back-end per processore P4 Oggetto per P1 Oggetto per P2 Oggetto per P3 Oggetto per P4 Struttura di un compilatore: due passi Codice PASCAL Codice C Front-end per PASCAL Front-end per C Back-end per processore P1 Back-end per processore P2 Codice ADA Front-end per ADA Back-end per processore P3 3 front-end + 4 back-end = 12 compilatori Back-end per processore P4

24 Struttura di un compilatore: un compilatore a sei passi Codice sorgente ANALISI LESSICALE L1 ANALISI SINTATTICA L2 L4 ANALISI DELLE DICHIARAZIONI L3 ANALISI DEI NOMI ANALISI DEI CORPI L5 SELEZIONE DEI CODICI OPER. L7 Codice oggetto ASSEMBLAGGIO CODICE Analisi lessicale: elimina spazi, commenti e transcodifica gli identificatori in interi Analisi sintattica: esegue una analisi sintattica e produce una rappresentazione intermedia tramite un albero sintattico linearizzato nella postfissa Analisi dei nomi: sostituisce alla codifica dei nomi un preciso riferimento alla dichiarazione dello stesso risolvendo le omonimie Analisi delle dichiarazioni: assegna un indirizzo virtuale ad ogni variabile e analizza le strutture dati. Le informazioni raccolte sono distribuite nel testo e non raccolte in apposite tabelle dei simboli Analisi dei corpi: verifica la compatibilità dei tipi degli operandi, degli operatori e specifica ulteriormente la codifica degli operatori Selezione dei codici operativi: calcola l occupazione di memoria per le istruzioni generate da un blocco e raccoglie le etichette in una tabella con accanto gli indirizzi

25 Scanner Parser Symbol Table Semantic checker Intermediate code generator Error Handler Optimizer Code generator Optimizer

26 Tool per il progetto di compilatori tool di software development general- purpose + tool specializzati Tool per il progetto automatico di parti di compilatori parser generators: producono analizzatori sintattici scanner generators: producono analizzatori lessicali syntax- directed translator engines: producono collezioni di routine che visitanoil parse tree e generano il codice intermedio ogni nodo una o più traduzioni... automatic code generators: prendono regole per tradurre da ling. intermedio in ling. Macchina soluzioni alternative gestite con "template matching data-flow engines: analisi data- flow per ottimizzare il codice fornisce info su come si propagano i dati da una parte all'altra del programma - intervento dell'utente Formalismi di interesse Analisi lessicale Regular Grammars Finite State Automata Regular Expressions Analisi sintattica Grammatiche non contestuali (Context-Free Grammars CFGs) Generalmente i parser CFG hanno una complessita O(n 3 ) Non ogni elemento linguistico in un linguaggio di programmazione puo essere trattato come grammatica non contestuale

27 Formalismi di interesse Analisi semantica Traduzione diretta alla sintassi (Syntax-directed translation) Grammatiche ad attributi (Attribute grammars) Altri approcci piu sofisticati Code generation: Pattern matching Euristica Soluzioni ad-hoc Tabella dei simboli

Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012. Linguaggi Formali e Compilatori. Compilatori. Giacomo PISCITELLI

Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012. Linguaggi Formali e Compilatori. Compilatori. Giacomo PISCITELLI Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Compilatori Giacomo PISCITELLI I traduttori Genericamente, i programmi responsabili della traduzione

Dettagli

Corso di Laurea Magistrale in Ingegneria Informatica

Corso di Laurea Magistrale in Ingegneria Informatica Corso di Laurea Magistrale in Ingegneria Informatica CFU 9 A.A. 2012-2013 Requisiti preliminari Conoscenza dei linguaggi di programmazione Conoscenza dei paradigmi di programmazione Conoscenza delle diverse

Dettagli

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO Linguaggio macchina Uno per ogni processore o famiglia di processori Linguaggio assembler Versione simbolica di quello macchina. LINGUAGGI DI ALTO

Dettagli

Principi dell ingegneria del software Relazioni fra

Principi dell ingegneria del software Relazioni fra Sommario Principi dell ingegneria del software Leggere Cap. 3 Ghezzi et al. Principi dell ingegneria del software Relazioni fra Principi Metodi e tecniche Metodologie Strumenti Descrizione dei principi

Dettagli

Linguaggi e Traduttori: Introduzione al corso

Linguaggi e Traduttori: Introduzione al corso Linguaggi e Traduttori: Introduzione al corso Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-Lab) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

Fondamenti di Informatica 7. Linguaggi di programmazione

Fondamenti di Informatica 7. Linguaggi di programmazione I linguaggi di alto livello Fondamenti di Informatica 7. Linguaggi di programmazione Introduzione alla programmazione Caratteristiche dei linguaggi di programmazione I linguaggi di programmazione di alto

Dettagli

Trattamento degli errori

Trattamento degli errori Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Trattamento degli errori Giacomo PISCITELLI Trattamento degli errori Comunemente gli errori di programmazione

Dettagli

Cinc. Linguaggio ed Implementazione. Claudia Strazzari. Fabio G. Strozzi. Matteo Benevelli. http://www.cs.unibo.it/ fstrozzi/cinc.

Cinc. Linguaggio ed Implementazione. Claudia Strazzari. Fabio G. Strozzi. Matteo Benevelli. http://www.cs.unibo.it/ fstrozzi/cinc. Cinc Linguaggio ed Implementazione Claudia Strazzari Fabio G. Strozzi Matteo Benevelli http://www.cs.unibo.it/ fstrozzi/cinc.html 1 Prefazione Cinc è un linguaggio di programmazione imperativo, fortemente

Dettagli

E una notazione per descrivere gli algoritmi.

E una notazione per descrivere gli algoritmi. Linguaggio di Programmazione E una notazione per descrivere gli algoritmi. Programma:: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni linguaggio

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Il software di base Software

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505

con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 tesi di laurea con ANTLR Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 Obiettivo Analisi statica di codice sorgente, realizzato in javascript,

Dettagli

Contenuti del corso. Parsing: esempio. Cosa aggiungiamo in questo corso. Parsing. Data una grammatica: E T T + E

Contenuti del corso. Parsing: esempio. Cosa aggiungiamo in questo corso. Parsing. Data una grammatica: E T T + E Continuazione del corso di linguaggi. Nuovi paradigmi di computazione logico: Prolog logic - funzionale: Curry Teoria base dei compilatori parsing grammatiche ad attributi type checking generazione codice

Dettagli

Analisi e Verifica di Programmi Laboratorio di AVP

Analisi e Verifica di Programmi Laboratorio di AVP Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA 2004-05 Tino Cortesi Analisi e Verifica Cosa Individuare proprietà interessanti dei nostri programmi: Valori prodotti,

Dettagli

Linguaggi e tecnologie per il Web

Linguaggi e tecnologie per il Web Sapienza Università di Roma Corso di Laurea in Ingegneria Informatica e Automatica Linguaggi e tecnologie per il Web a.a. 2015/2016 Riccardo Rosati Dipartimento di ingegneria informatica, automatica e

Dettagli

Quali sono i programmi più eseguiti e meno DENTRO LA SCATOLA. La compilazione: concetti e sviluppi tecnologici. Rubrica a cura di Fabio A.

Quali sono i programmi più eseguiti e meno DENTRO LA SCATOLA. La compilazione: concetti e sviluppi tecnologici. Rubrica a cura di Fabio A. DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Dopo aver affrontato negli scorsi anni due argomenti fondanti dell Informatica il modo di codificare l informazione digitale e la concreta possibilità

Dettagli

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE Relatore: prof. Michele Moro Laureando: Marco Beggio Corso di laurea in Ingegneria Informatica Anno Accademico 2006-2007

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Contenuti del Corso Riferimenti Regole del Corso Materiale Didattico Scheduling Esami Strumenti Software 16/01/2013 2 Contenuti

Dettagli

La macchina programmata Instruction Set Architecture (1)

La macchina programmata Instruction Set Architecture (1) Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione Istruzioni macchina Outline Componenti di un

Dettagli

Programmazione ad Oggetti. Java Parte I

Programmazione ad Oggetti. Java Parte I Programmazione ad Oggetti Java Parte I Overview Caratteristiche generali 1 Caratteristiche generali Un moderno linguaggio orientato agli oggetti Pensato per lo sviluppo di applicazioni che devono essere

Dettagli

Il Software... A.A. 2013-14 Informatica 96

Il Software... A.A. 2013-14 Informatica 96 Il Software... A.A. 2013-14 Informatica 96 Il software L hardware non è direttamente utilizzabile Sono necessari dei programmi per far svolgere delle funzioni all insieme di circuiti Informatica 97 Il

Dettagli

Sistema Operativo Compilatore

Sistema Operativo Compilatore MASTER Information Technology Excellence Road (I.T.E.R.) Sistema Operativo Compilatore Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il Sistema

Dettagli

2008/2009. Pierpaolo Corvese Costante Luca [COMPILATORI]

2008/2009. Pierpaolo Corvese Costante Luca [COMPILATORI] 2008/2009 Pierpaolo Corvese Costante Luca [COMPILATORI] Sommario LEZIONE 1 - INTRODUZIONE... 4 PROCESSO DI TRADUZIONE... 4 LEZIONE 2 IL COMPILATORE... 7 LEZIONE 3 ANALISI LESSICALE (1 PARTE)... 12 LEZIONE

Dettagli

Compiti del S.O. Lezione 2: Gestione dei processi. La struttura e funzioni dei Sistemi Operativi

Compiti del S.O. Lezione 2: Gestione dei processi. La struttura e funzioni dei Sistemi Operativi Lezione 2: Compiti del S.O. La struttura e funzioni dei Sistemi Operativi Un S.O. ha il compito di rendere semplice (all utente), l utilizzo del calcolatore componenti di un sistema operativo servizi dei

Dettagli

CALCOLATORI ELETTRONICI

CALCOLATORI ELETTRONICI CALCOLATORI ELETTRONICI Giuseppe Coldani Tel. 0382 985678 e-mail: giuseppe.coldani@unipv.it giuseppe.coldani@tin.it orario delle lezioni: Mercoledì 14.00-18.00 orario di ricevimento: su appuntamento 1

Dettagli

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Linguaggi per COMUNICARE Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Sintassi e semantica dei linguaggi Un informazione può : Essere

Dettagli

Laurea Triennale in Informatica (F004) a.a. 2011/12. Insegnamenti complementari

Laurea Triennale in Informatica (F004) a.a. 2011/12. Insegnamenti complementari Laurea Triennale in Informatica (F004) a.a. 2011/12 Insegnamenti complementari Attivazioni e programmi Gli insegnamenti complementari del corso di laurea sono di norma erogati ad anni alterni. L effettiva

Dettagli

Richiami di informatica e programmazione

Richiami di informatica e programmazione Richiami di informatica e programmazione Il calcolatore E una macchina usata per Analizzare Elaborare Collezionare precisamente e velocemente una grande quantità di informazioni. Non è creativo Occorre

Dettagli

CPU pipeline 4: le CPU moderne

CPU pipeline 4: le CPU moderne Architettura degli Elaboratori e delle Reti Lezione 25 CPU pipeline 4: le CPU moderne Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 25 1/16

Dettagli

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) Gli elaboratori utilizzano memoria per Dati da elaborare Istruzioni eseguite dall elaboratore software differenti risoluzione problemi differenti Algoritmo

Dettagli

POLITECNICO DI BARI FACOLTA DI INGEGNERIA CORSO DI LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA PHP2C

POLITECNICO DI BARI FACOLTA DI INGEGNERIA CORSO DI LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA PHP2C POLITECNICO DI BARI FACOLTA DI INGEGNERIA CORSO DI LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA PROGETTO DI LINGUAGGI FORMALI E COMPILATORI Docente Prof. Giacomo Piscitelli Bavaro Gianvito Capurso Domenico

Dettagli

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Fondamenti di Informatica Modulo 1 Programma dell'a.a. 2003/2004 Luigi Romano Dipartimento di Informatica

Dettagli

Introduzione alla Progettazione per Componenti

Introduzione alla Progettazione per Componenti Introduzione alla Progettazione per Componenti Alessandro Martinelli 6 ottobre 2014 Obiettivo del Corso Il Progetto Software Reale Il Componente Software La Programmazione Ad Oggetti Fondamenti di Informatica

Dettagli

INFORMATICA E COMPUTER : INTRODUZIONE

INFORMATICA E COMPUTER : INTRODUZIONE INFORMATICA E COMPUTER : INTRODUZIONE! Informatica: dal francese, informatique informat(ion) (automat)ique [termine coniato dall'ingegnere francese Philippe Dreyfus nel 1962] è la scienza che studia i

Dettagli

Realizzazione di un applicazione per la visualizzazione grafica didattica e di debug per algoritmi in Java

Realizzazione di un applicazione per la visualizzazione grafica didattica e di debug per algoritmi in Java La Sapienza Università di Roma Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Anno Accedemico 2008-2009 Relazione finale su progetto interno Realizzazione di un applicazione per la visualizzazione

Dettagli

Logic Lab. un progetto italiano. www.axelsw.it. soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE

Logic Lab. un progetto italiano. www.axelsw.it. soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE Logic Lab soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE un progetto italiano www.axelsw.it Logic Lab La garanzia e l economia degli standard più diffusi sul mercato LogicLab è un ambiente di sviluppo

Dettagli

LICEO DELLE SCIENZE APPLICATE

LICEO DELLE SCIENZE APPLICATE LICEO DELLE SCIENZE APPLICATE San Benedetto PIANO DI LAVORO Docente Stefano Maggi Disciplina INFORMATICA Libro di testo INFORMATICA 2 di Gallo Sirsi ed. Minerva Scuola Classe/Sezione Terza Anno scolastico

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente:

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente: Il.NET Framework By Dario Maggiari L architettura del.net Framework è riassunta, nel complesso, nella figura seguente: Il cuore del.net Framework è costituito dal CLR (Common Language Runtime) che, secondo

Dettagli

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

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica

Dettagli

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma La Sapienza WARNING Questo canale è solo per studenti di Fisica il cui cognome inizia con le lettere A-D Laboratorio

Dettagli

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso 4 Introduzione alla programmazione in linguaggio C Indice 1. Sviluppo del software 2. Sistema operativo 3. Linguaggi di basso livello

Dettagli

Esercitazioni di Programmazione I canale A-D. Alessio Malizia malizia@di.uniroma1.it

Esercitazioni di Programmazione I canale A-D. Alessio Malizia malizia@di.uniroma1.it Esercitazioni di Programmazione I canale A-D Alessio Malizia malizia@di.uniroma1.it I docenti Docente: T. Calamoneri Esercitatore: A. Malizia calamo@di.uniroma1.it Ricevimento: lun. 14.00-15.30 (mandando

Dettagli

Linguaggi 2 e laboratorio

Linguaggi 2 e laboratorio Linguaggi 2 e laboratorio Docente: Leonardo Badia Contatti: leonardo.badia@gmail.com Pagina web del corso: www.unife.it/scienze/informatica/ insegnamenti/linguaggi-2-laboratorio Argomenti del corso: Java

Dettagli

Il DBMS Oracle. Express Edition. Donatella Gubiani e Angelo Montanari

Il DBMS Oracle. Express Edition. Donatella Gubiani e Angelo Montanari Gubiani & Montanari Il DBMS Oracle 1 Il DBMS Oracle Express Edition Donatella Gubiani e Angelo Montanari Il DBMS Oracle Il DBMS Oracle Oracle 10g Express Edition Il DBMS Oracle (nelle sue versioni più

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Lezione 6 a.a. 2010/2011 Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono: diversi

Dettagli

La Macchina Virtuale

La Macchina Virtuale Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Anno Accademico 2008/2009 Docente: ing. Salvatore

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Linguaggi di Programmazione Michele Tomaiuolo Linguaggi macchina I

Dettagli

Ingegneria del Software UML - Unified Modeling Language

Ingegneria del Software UML - Unified Modeling Language Ingegneria del Software UML - Unified Modeling Language Obiettivi. Presentare un approccio visuale alla progettazione. Illustrare i vantaggi dell utilizzo di diagrammi nella fase di progettazione. Rispondere

Dettagli

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM Davide Barbieri Contatti skype: davbar86 mail: davide.barbieri@ghostshark.it Panoramica corso Introduzione al mondo delle GPU Modello GPGPU Nvidia

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

10. Interfaccia del File System

10. Interfaccia del File System 10. Interfaccia del File System 10.1 Il concetto di File 10.2 Metodi di accesso 10.3 Struttura delle Directory 10.4 Protezione (Leggere) 10.5 Semantica della Consistenza (Leggere) Un File System consiste

Dettagli

Strumenti per la programmazione

Strumenti per la programmazione Editing del programma Il programma deve essere memorizzato in uno o più files di testo editing codice sorgente 25 Traduzione del programma Compilazione: è la traduzione effettuata da un compilatore Un

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008 Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008 Dott. Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 30/11/07 Sommario Concetti fondamentali

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione Lezione 4 La Struttura dei Sistemi Operativi Introduzione Funzionamento di un SO La Struttura di un SO Sistemi Operativi con Struttura Monolitica Progettazione a Livelli di un SO 4.2 1 Introduzione (cont.)

Dettagli

lcosmo@dsi.unive.it Computer Vision, in particolare Nonrigid Matching.

lcosmo@dsi.unive.it Computer Vision, in particolare Nonrigid Matching. F ORMATO EUROPEO PER IL CURRICULUM VITAE INFORMAZIONI PERSONALI Nome COSMO LUCA Indirizzo 6, VIA ACHILLE GRANDI, 31038 PAESE, TREVISO, ITALIA Telefono +39 349 1580861 E-mail lcosmo@dsi.unive.it Nazionalità

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Sommario Introduzione Definizione di WCET Importanza del WCET Panoramica dei classici metodi per calcolare il WCET [1] Utilizzo di

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Sistemi Operativi. Funzioni e strategie di progettazione: dai kernel monolitici alle macchine virtuali

Sistemi Operativi. Funzioni e strategie di progettazione: dai kernel monolitici alle macchine virtuali Modulo di Sistemi Operativi per il corso di Master RISS: Ricerca e Innovazione nelle Scienze della Salute Unisa, 17-26 Luglio 2012 Sistemi Operativi Funzioni e strategie di progettazione: dai kernel monolitici

Dettagli

Basi di Dati. Introduzione ai sistemi di basi di dati. K.Donno - Introduzione ai sistemi di basi di dati

Basi di Dati. Introduzione ai sistemi di basi di dati. K.Donno - Introduzione ai sistemi di basi di dati Basi di Dati Introduzione ai sistemi di basi di dati Introduzione ai sistemi di basi di dati Gestione dei Dati Una prospettiva storica File system verso DBSM Vantaggi di un DBMS Modelli dei dati Utenti

Dettagli

Architettura di un computer

Architettura di un computer Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su

Dettagli

Dettaglio dei corsi in aula

Dettaglio dei corsi in aula L offerta formativa Dettaglio dei corsi in aula Software Engineering Object Oriented Analysis and Design: fondamenti e principi dell object orientation. Dall analisi alla progettazione. I Design Pattern.

Dettagli

Progetto ATLAS. Traduzione Automatica dall italiano alla lingua dei segni italiana. 1. Introduzione

Progetto ATLAS. Traduzione Automatica dall italiano alla lingua dei segni italiana. 1. Introduzione Progetto ATLAS Traduzione Automatica dall italiano alla lingua dei segni italiana Mauro Rossini, Carmen Marino, Andrea Del Principe, Michele Visintin, Roberto Borgotallo Rai - Centro Ricerche e Innovazione

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Il software Dipartimento di Ingegneria dell Informazione Universitàdegli Studi di Parma SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono

Dettagli

Elementi del calcolatore: CPU

Elementi del calcolatore: CPU Elementi del calcolatore: CPU Elementi del calcolatore: Memoria Elementi del calcolatore: Memoria Elementi del calcolatore: Hard Disk Antefatto Sistema Operativo Come il computer appare Il calcolatore

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A.

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A. Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Introduzione Michele Tomaiuolo Ingegneria del software L ingegneria

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

Realizzazione di un tool di instrumentazione automatica a supporto della failure analysis

Realizzazione di un tool di instrumentazione automatica a supporto della failure analysis tesi di laurea Realizzazione di un tool di instrumentazione automatica a supporto della failure analysis Anno Accademico 2011/2012 relatore Ch.mo prof. Domenico Cotroneo correlatore Ing. Antonio Pecchia

Dettagli

Hardware di un Computer

Hardware di un Computer Hardware di un Computer Monitor Mouse Tastiera Printer Disk CPU Graphics Adapter USB Controller Parallel Port Disk Controller BUS Memoria RAM Memoria ROM (BIOS) DMA CPU esegue istruzioni, effettua calcoli,

Dettagli

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000 AXO Achitettura dei Calcolatori e Sistema Operativo Instruction Set Architecture (ISA) e 68000 introduzione a ISA ISA - Instruction Set Architecture insieme delle istruzioni (instruction set) che possono

Dettagli

Introduzione ai sistemi operativi

Introduzione ai sistemi operativi Introduzione ai sistemi operativi Che cos è un S.O.? Shell Utente Utente 1 2 Utente N Window Compilatori Assembler Editor.. DB SOFTWARE APPLICATIVO System calls SISTEMA OPERATIVO HARDWARE Funzioni di un

Dettagli

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare Minicorso tematico: Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare Dott. Francesco Ricca Dipartimento Di Matematica Università della Calabria ricca@mat.unical.it Presentiamoci

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il Sistema Operativo Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Cos

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

Metodologie di progettazione

Metodologie di progettazione Metodologie di progettazione 1 Metodologie di progettazione Una procedura per progettare un sistema Il flusso di progettazione può essere parzialmente o totalmente automatizzato. Un insieme di tool possono

Dettagli

SOMMARIO ESECUZIONE DI UN PROGRAMMA ESECUZIONE DI UN PROGRAMMA COMPILATORE

SOMMARIO ESECUZIONE DI UN PROGRAMMA ESECUZIONE DI UN PROGRAMMA COMPILATORE SOMMARIO Sviluppo ed esecuzione di un programma: Compilatore. Interprete. Compilatore e interprete. Sviluppo di un progetto. Ambiente integrato di programmazione: Visual Studio. ESECUZIONE DI UN PROGRAMMA

Dettagli

Il supporto al Sistema Operativo

Il supporto al Sistema Operativo Il supporto al Sistema Operativo Obiettivi e funzioni del S.O. Il Sistema Operativo è il software che controlla l esecuzione dei programmi e amministra le risorse del sistema. Ha due obiettivi principali:

Dettagli

Introduzione ai sistemi di basi di dati

Introduzione ai sistemi di basi di dati Basi di Dati Introduzione ai sistemi di basi di dati Alessandro.bardine@gmail.com alessandro.bardine@iet.unipi.it Introduzione ai sistemi di basi di dati Gestione dei Dati Una prospettiva storica File

Dettagli

Esempi di errori/difetti. algoritmi sintassi calcolo e precisione documento stress capacità ricovery sistema hardware e software standard e procedure

Esempi di errori/difetti. algoritmi sintassi calcolo e precisione documento stress capacità ricovery sistema hardware e software standard e procedure COLLAUDO Esempi di errori/difetti algoritmi sintassi calcolo e precisione documento stress capacità ricovery sistema hardware e software standard e procedure Verifica e Validazione Validazione Requisiti

Dettagli

Sistema di protezione

Sistema di protezione Sistema di protezione - Un processo potrebbe tentare di modificare il programma o i dati di un altro processo o di parte del S.O. stesso. - Protezione: politiche (cosa) e meccanismi (come) per controllare

Dettagli

LINGUAGGI COMPILATI ESECUZIONE DI UN PROGRAMMA LINGUAGGI COMPILATI LINGUAGGI COMPILATI

LINGUAGGI COMPILATI ESECUZIONE DI UN PROGRAMMA LINGUAGGI COMPILATI LINGUAGGI COMPILATI ESECUZIONE DI UN PROGRAMMA Il codice sorgente non è eseguibile dalla CPU, è necessario tradurlo in linguaggio macchina: un file binario contenente microistruzioni gestibili dalla CPU Diverse architetture

Dettagli

Informatica Documentale

Informatica Documentale Informatica Documentale Ivan Scagnetto (scagnett@dimi.uniud.it) Stanza 3, Nodo Sud Dipartimento di Matematica e Informatica Via delle Scienze, n. 206 33100 Udine Tel. 0432 558451 Ricevimento: giovedì,

Dettagli

Problemi, Algoritmi e Programmi

Problemi, Algoritmi e Programmi MASTER Information Technology Excellence Road (I.T.E.R.) Problemi, Algoritmi e Programmi Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Introduzione

Dettagli

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini La memoria Architetture Avanzate dei Calcolatori Valeria Cardellini Nelle lezioni precedenti { Memoria La gerarchia di memorie Registri Istruzioni, operandi L Cache Blocchi L2 Cache Blocchi Memoria Pagine

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 1: Le Architetture Distribuite Vittorio Scarano Algoritmi e Strutture Dati: Algoritmi Distribuiti Corso di Laurea in Informatica Università di Salerno Le architetture distribuite

Dettagli