Argomento del corso: una trattazione generale dei linguaggi di programmazione Completare le conoscenze acquisite finora: Linguaggi di programmazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Argomento del corso: una trattazione generale dei linguaggi di programmazione Completare le conoscenze acquisite finora: Linguaggi di programmazione"

Transcript

1 Linguaggi di programmazione Introduzione al corso Argomento del corso: una trattazione generale dei linguaggi di programmazione Completare le conoscenze acquisite finora: assembly ARM Scheme Java C Una minuscola parte dei linguaggi disponibili, difficile impararli tutti; ma esistono: regole, principi, caratteristiche comuni ai vari linguaggi di programmazione; argomenti di questo corso. Introduzione al corso Linguaggi di programmazione 1 / 38 Introduzione al corso Linguaggi di programmazione 2 / 38 Presentazione generali di: Obiettivi caratteristiche dei linguaggi programmazione, meccanismi funzionamento (es. identificatori ambiente, gestione della memoria,... ) implementazione: compilatori, interpreti,... Fornire un quadro generale dei linguaggi di programmazione diverse famiglie di linguaggi, similitudi e differenze. Mettere in risalto: gli aspetti comuni dei linguaggi, punti critici della loro comprensione. Introduzione al corso Linguaggi di programmazione 3 / 38 Alcuni obiettivi pratici Rendere più facile l apprendimento di nuove linguaggi: alcuni linguaggi sono piuttosto simili: albero genealogico. i concetti base sono ancora più simili, sono comuni a molti linguaggi: iterazione, ricorsione, astrazione Fare un uso migliore dei linguaggi: capire le caratteristiche complesse: passaggi dei parametri, uso della memoria usare i linguaggi nella loro completezza, comprendere i costi di implementazione: scegliere tra modi alternativi di fare la stessa cosa: ricorsione di coda Capire come implementare features che non supportate esplicitamente: mancanza di strutture di controllo adeguate, ricorsione in Fortran, riscrivere un algoritmo ricorsivo in uno iterativo, eliminazione meccanica Introduzione al corsodella ricorsione Linguaggi di programmazione 4 / 38

2 Libri di testo Pro e contro M. Gabbrielli, S. Martini. Linguaggi di programmazione - Principi e paradigmi. McGraw-Hill articoli e manuali reperibili nella pagina web del corso. Corso e contenuti in gran parte standard. Diversi libri di testo con contenuti e ordine di presentazione sovrapponibili Michael Scott. Programming language pragmatics Elsevier, MK Morgan Kaufmann. Sebasta. Concept in progamming language Pearson Gabbrielli-Martini, semplice, chiaro, senza banalizzare, pregio principale, specie in confronto ad altri libri di testo; astratto: tende a essere formale; mancano: argomenti più complessi; pochi riferimenti ai linguaggi di programmazione più usati, si preferisce usare un pseudo linguaggio, esempi reperibili negli altri libri di testo, a lezione farò qualche riferimento in più. Introduzione al corso Linguaggi di programmazione 5 / 38 Introduzione al corso Linguaggi di programmazione 6 / 38 Pagina web del corso Organizzazione raggiungibile dalla mia home page, copia della pagina disponibile anche su elearning, stabile e abbastanza completa, probabilmente verrà aggiornata, completata nel corso dell anno. periodo didattico: secondo orario modificabile su richiesta Immagini e Multimedialità, mercoledì: spostamenti orario causa consiglio di dipartimento, venerdì: orario di ricevimento mercoledì: 11:30 13:00. Introduzione al corso Linguaggi di programmazione 7 / 38 Introduzione al corso Linguaggi di programmazione 8 / 38

3 Esame Perché tanti linguaggi di programmazione? Tradizionale: scritto domande di teoria, esercizi, esercizi da svolgere a casa e discutere durante l esame orale, orale obbligatorio per tutti. Più paradigmi di programmazione: Imperativo: von Neumann (Fortran, Pascal, Basic, C) orientato agli oggetti (Smalltalk, Eiffel, C ++?) linguaggi di scripting (Perl, Python, JavaScript, PHP) Dichiarativo: funzionale (Scheme, ML, pure Lisp, FP) logico, basato su vincoli (Prolog, VisiCalc, RPG) Introduzione al corso Linguaggi di programmazione 9 / 38 Introduzione al corso Linguaggi di programmazione 10 / 38 Perché tanti linguaggi di programmazione? evoluzione: nel tempo si scoprono nuove tecniche, principi migliori fattori economici: interessi proprietari, vantaggio commerciale diverse priorità: codice efficiente, pulizia del codice, flessibilità diversi usi: calcolo scientifico (Fortan), analisi dei dati (R), sistemi embedded (C), applicazioni web (JavaScript, PHP),... Cosa rende un linguaggio di successo? buon supporto: librerie, codice preesistente, IDE (tutti i linguaggi più diffusi) supporto da uno sponsor importante (C#, Visual Basic, Objetive C, Switft, Go) ampia diffusione a costi minimi, portabilità (JavaScript, Java, Pascal) espressivo, flessibile, potente (C, Lisp, APL, Perl) possibilità di ottenere codice veloce / compatto (Fortran, C) facile da implementare (BASIC, Forth) Introduzione al corso Linguaggi di programmazione 11 / 38 Introduzione al corso Linguaggi di programmazione 12 / 38

4 Qualità di un linguaggio: Leggibilità chiarezza, naturalità, semplicità: supporto all astrazione: è facile modificare del codice. Scrivibilità è facile passare dagli algoritmi al codice, semplice da imparare: (BASIC, Pascal, Scheme) polimorfismo: stesso codice su dati diversi; ortogonalità: diverse caratteristiche si integrano in modo naturale tra loro, poche eccezione (es. tipi dato e passaggio parametri a procedure) Affidabilità facilità di verifica, Costo Introduzione efficienza al corso Linguaggi di programmazione 13 / 38 Aspetti di un linguaggio di programmazione sintassi: quali sequenze di caratteri costituiscono programmi, la loro struttura, semantica: come si comporta un programma, l effetto della loro esecuzione, pragmatica: utilizzo pratico; come scrivere buon codice; convenzioni, stili nello scrivere i programmi, implementazione: come il codice viene convertito in istruzioni macchina, eseguito, librerie: codice fornito con il linguaggio per implementare funzionalità base, tools: per editing, debugging, gestione del codice. Nel corso consideriamo principalmente i primi 4 aspetti, gli ultimi due importanti ma molto variabili. Introduzione al corso Linguaggi di programmazione 14 / 38 Macchina astratta. Sistema di calcolo diviso in un gerarchia di macchine virtuali (astratte) M i. Ciascuna costruita sulla precedente, a partire dal livello hardware. Ciascuna caratterizzata da un linguaggio, L i, con cui scrivere codice. Esecuzioni del codice Come eseguire un programma, per esempio, scritto in L Java, quindi relativo alla macchina astratta M Java (macchina Java) si sfrutta uno dei livelli di macchina sottostanti, per esempio una M JVM (Java Virtual Machine) che qualcuno ha già implementato, si esegue una traduzione nel linguaggio relativo L JVM (Java ByteCode) Introduzione al corso Linguaggi di programmazione 15 / 38 Introduzione al corso Linguaggi di programmazione 16 / 38

5 Compilazione vs. Interpretazione Compilazione pura: Il compilatore traduce il programma sorgente di alto livello in un programma di destinazione equivalente (tipicamente in linguaggio macchina), Programma sorgente e compilatore non necessari durante l esecuzione del codice. Interpretazione pura L interprete riceve programma sorgente e dati, e traduce, passo passo, le singole istruzione che vengono eseguite immediatamente. L interprete, programma sorgente, sono presenti durante l esecuzione del programma. L interprete è il luogo del controllo durante l esecuzione. Introduzione al corso Linguaggi di programmazione 17 / 38 Introduzione al corso Linguaggi di programmazione 18 / 38 Compilazione Compilazione vs. Interpretazione Migliori prestazioni: si evitano traduzioni e controlli a tempo di esecuzione sono possibili controlli prima dell esecuzione (type-checking statico) Interpretazione: maggiore flessibilità (Scheme), più semplice da implementare, esecuzione diretta del codice, più semplice il debugging. Compilazione vs. Interpretazione Nei casi reali, traduzione in codice macchina, avviene con più passi di traduzione, la maggior parte delle implementazioni prevedono una combinazione tra compilazione e interpretazione linguaggi interpretati pre-processing seguita dall interpretazione linguaggi compilati generazione codice intermedio esempi: Pascal P-code, Java bytecode, Microsoft COM + Introduzione al corso Linguaggi di programmazione 19 / 38 Introduzione al corso Linguaggi di programmazione 20 / 38

6 Preprocessing vs. Compilazione schema precedente può descrivere un pre-processing (semplice elaborazione dell input) in questo caso caso parliamo di linguaggi interpretati, compilazione traduzione da una lingua all altra, prevede un analisi complessiva del dell input compilazione implica una comprensione semantica di ciò che viene elaborato; il preprocessing no un pre-processore non garantisce assenza di errori nel tradotto Supporto a run-time: raramente compilatore produce solo codice macchina, anche istruzioni virtuali chiamate al sistema operativo chiamate a funzioni di libreria es. funzioni matematiche (sin, cos, log, ecc.), input-output traduzione a livello di sistema operativo o a livello di libreria un programma linker unisce codice library subroutine Introduzione al corso Linguaggi di programmazione 21 / 38 Introduzione al corso Linguaggi di programmazione 22 / 38 Assemblaggio post-compilazione Il compilatore produce assembly (non codice macchina) Traduzioni da linguaggio a linguaggio (C++) prime implementazioni C++ generano un programma intermedio in C: facilita il debugging (assembly più leggibile) isola il compilatore da modifiche nel formato delle istruzioni (solo l assemblatore, condiviso tra molti compilatori, deve essere modificato) Introduzione al corso Linguaggi di programmazione 23 / 38 Introduzione al corso Linguaggi di programmazione 24 / 38

7 Bootstrap: sollevarsi tirando i lacci dei propri stivali (Barone Munchausen) Implementare il compilatore scrivo un nuovo compilatore per C, come programma in C. circolo vizioso evitato usando versioni differenti Pascal e P-code Meccanismo per semplificare la creazioni di compilatori, semplifica la diffusione di un linguaggio. P-code: codice intermedio, Pascal fornisce: Compilatore Pascal, scritto in Pascal: CPascal Pascal PCode, Compilatore Pascal, scritto in P-Code: CPCode Pascal PCode (traduzione del predente) Interprete PCode, scritto in Pascal: IPascal PCode A mano costruisco: Interprete PCode, scritto nel mio linguaggio macchina: I PCode LM Introduzione al corso Linguaggi di programmazione 25 / 38 Introduzione al corso Linguaggi di programmazione 26 / 38 Interprete Pascal Compilatore Pascal Preso un programma Pascal PrPa posso: ottenere la sua traduzione in PCode: PrPC = ILM PCode (CPCode Pascal PCode, PrPa) eseguire la traduzione: ILM PCode (PrPC, Dati) Se, a mano, trasformo il C Pascal PCode Pascal CPCode Pascal LM. CLM Pascal LM = I PCode LM = I PCode LM in CPascal Pascal LM, posso: (CPCode Pascal PCode, CPascal Pascal LM ) (CPCode Pascal LM, CPascal Pascal LM ) e ottengo un compilatore da Pascal in linguaggio macchina, scritto in linguaggio macchina. Introduzione al corso Linguaggi di programmazione 27 / 38 Introduzione al corso Linguaggi di programmazione 28 / 38

8 Compilatore Pascal Compilazione dinamica, just-in-time si ritarda la compilazione fino all ultimo momento. implementazioni efficienti di Java (JVM) analogamente compilatore C# produce.net Common Intermediate Language (CIL), tradotto in codice macchina immediatamente prima dell esecuzione. Lisp o Prolog invocano il compilatori just-in-time, per tradurre il nuovo sorgente creato in linguaggio macchina o per ottimizzare il codice per un particolare set di input. Introduzione al corso Linguaggi di programmazione 29 / 38 Introduzione al corso Linguaggi di programmazione 30 / 38 Firmware, microcodice, Una panoramica della compilazione Compilazione divisa in più fasi. Le istruzioni a livello macchina non sono implementate direttamente nell hardware; circuiti di controllo del processore microprogramma, funziona con un interprete, Introduzione al corso Linguaggi di programmazione 31 / 38 Introduzione al corso Linguaggi di programmazione 32 / 38

9 Analisi lessicale - Scansione: Analisi sintattica - Parsing divide il programma in token, le unità più piccole e significative scanner: lavoro è semplice, semplifica le fasi successive possibile progettare un parser che esamina caratteri anziché token come input, ma inefficiente la scansione è il riconoscimento di una linguaggio regolare, si analizza l intero programma, definendo la sua struttura programmi definiti a linguaggi liberi dal contesto, riconosciuti tramite PDA alternativamente grammatica definita da diagrammi sintattici (vedi cerchi e le frecce in manuale Pascal) riconosciuto tramite DFA Introduzione al corso Linguaggi di programmazione 33 / 38 Introduzione al corso Linguaggi di programmazione 34 / 38 L analisi semantica Modulo intermedio costruisce l albero della sintassi astratta esegue controlli sul codice statici (es type checking) non implementabili dal parser (contex free grammar) altri controlli (ad esempio, indice di matrice fuori limite) eseguibili sola a tempo di esecuzione (dinamici) Si produce codice intermedio codice intermedio: indipendente dal processore, facilità di ottimizzazione o compattezza (richieste contrastanti) codice intermedio assomiglia spesso a codice macchina per qualche macchina astratta; per esempio. una macchina stack o una macchina con molti registri Introduzione al corso Linguaggi di programmazione 35 / 38 Introduzione al corso Linguaggi di programmazione 36 / 38

10 L ottimizzazione Tabella dei simboli prende un programma a codice intermedio e ne produce un altro che fa la stessa cosa più velocemente o con meno memoria il termine è improprio; si migliora il codice: fase facoltativa La fase di generazione del codice produce linguaggio assembly o linguaggio macchina rilocabile (a volte) Alcune ottimizzazioni specifiche della macchina (uso di istruzioni speciali o modalità di indirizzamento, ecc.) Possono essere eseguite durante o dopo la generazione del codice target tutte le fasi si basano su una tabella dei simboli tiene traccia di tutti gli identificatori nel programma e di ciò che il compilatore sa di loro può essere mantenuta (in qualche modo) per essere utilizzata da un debugger, anche dopo che la compilazione è stata completata Introduzione al corso Linguaggi di programmazione 37 / 38 Introduzione al corso Linguaggi di programmazione 38 / 38

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Introduzione al corso Introduzione al corso Linguaggi di programmazione 1 / 1 Una presentazione generale dei linguaggi di programmazione: Completare le conoscenze acquisite

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada

Dettagli

Traduzione ed Interpretazione. Queste sconosciute

Traduzione ed Interpretazione. Queste sconosciute Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L M 0 Macchina astratta di L Macchina ospite Implementazione interpretativa di L Simulazione software di M L su M 0

Dettagli

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione Informatica 3 LEZIONE 1: Introduzione Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Informatica 3 Lezione 1- Modulo 1 Introduzione al corso Introduzione Corso di Informatica 3

Dettagli

Traduzione ed Interpretazione

Traduzione ed Interpretazione Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L Macchina astratta di L M 0 Macchina ospite Implementazione interpretativa di L Implementazione compilativa di L Simulazione

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

Programmazione II. Lezione 2. Daniele Sgandurra 22/10/2010.

Programmazione II. Lezione 2. Daniele Sgandurra 22/10/2010. Programmazione II Lezione 2 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 22/10/2010 1/40 Programmazione II Lezione 2 22/10/2010 Sommario 1 2/40 Programmazione II Lezione 2 22/10/2010 Parte I 3/40 Programmazione

Dettagli

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic

Dettagli

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione Informatica 3 Informatica 3 LEZIONE 1: Introduzione Lezione 1- Modulo 1 Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Introduzione al corso Politecnico di Milano - Prof. Sara Comai

Dettagli

Traduzione e interpretazione

Traduzione e interpretazione Traduzione e interpretazione Parte dei lucidi sono stati gentilmente forniti dal Prof. Salza VII.1 Linguaggi di programmazione Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore

Dettagli

I Linguaggi di Programmazione

I Linguaggi di Programmazione I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2)

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2) Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio (1) Linguaggio (2) Insieme di sequenze di simboli,

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Concetti Introduttivi

Concetti Introduttivi Concetti Introduttivi Linguaggi di Programmazione http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Linguaggi di Programmazione Impartiscono

Dettagli

Linguaggi e traduttori

Linguaggi e traduttori Operatore giuridico d impresa Informatica Giuridica A.A 2004/2005 I Semestre Linguaggi e traduttori Lezione 3 prof. Monica Palmirani Produzione del Software il software si genera trasformando l algoritmo

Dettagli

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016 Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione

Dettagli

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio. Messaggio

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio. Messaggio Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio Messaggio Insieme di sequenze di simboli, le parole,

Dettagli

Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione

Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio (1) Linguaggio (2) Insieme di sequenze di simboli,

Dettagli

la traduzione dei programmi ed introduzione a Java

la traduzione dei programmi ed introduzione a Java la traduzione dei programmi ed introduzione a Java programmi descrizioni di algoritmi effettuate tramite linguaggi di programmazione lo stesso algoritmo, fissato un linguaggio di programmazione, può essere

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 28 Linguaggi 2 / 28 Linguaggi 3 / 28 Linguaggi di alto livello Si basano su una macchina

Dettagli

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione Unità di apprendimento 6 Il software: dal linguaggio alla applicazione Unità di apprendimento 6 Lezione 2 Conosciamo i linguaggi di programmazione In questa lezione impareremo: che cos è un linguaggio

Dettagli

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Cosa è un programma. Informatica di Base -- R.Gaeta 18 Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer

Dettagli

Linguaggi di Programmazione

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

Dettagli

Macchina Astratta: struttura e realizzazione.

Macchina Astratta: struttura e realizzazione. Macchina Astratta: struttura e realizzazione. Sommario Macchina Astratta e l interprete di Macchina Hight e Low Level Languages Implementazione di un Linguaggio Macchina Intermedia Gerarchia di Macchine

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2

Dettagli

Corso di Linguaggi di Programmazione + Laboratorio

Corso di Linguaggi di Programmazione + Laboratorio Corso di inguaggi di Programmazione + aboratorio Capitolo 1 - Introduzione Si ringrazia il Dott. Marco de Gemmis per la collaborazione nella predisposizione del materiale didattico Apprendimento di un

Dettagli

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI Fortran Cobol

Dettagli

Cos'e un linguaggio di programmazione?

Cos'e un linguaggio di programmazione? Linguaggi di Programmazione Corso di Laurea in Informatica Introduzione ai linguaggi di Valeria Carofiglio a.a. 2016-2017 (questo materiale è una rivisitazione del materiale prodotto da Nicola Fanizzi)

Dettagli

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di

Dettagli

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia Informatica Dipartimento di Economia Ing. Cristiano Gregnanin Corso di laurea in Economia 20 ottobre 2016 1 / 19 Linguaggi 2 / 19 Linguaggi 3 / 19 Linguaggi di alto livello Si basano su una macchina virtuale

Dettagli

28/02/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI

28/02/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Architettura di un linguaggio dinamico

Architettura di un linguaggio dinamico Parte 3 Architettura di un linguaggio dinamico 1 Compilatori ed interpreti Gli strumenti per la generazione di codice eseguibile sono classificabili in due categorie distinte: Compilatori Interpreti Compilatore:

Dettagli

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori Programma del corso o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori o Elementi di Programmazione Algoritmi e programmi o Algoritmo

Dettagli

Introduzione alla Programmazione. Giselda De Vita

Introduzione alla Programmazione. Giselda De Vita Introduzione alla Programmazione Giselda De Vita - 2015 1 Sulla base dell ambito in cui si colloca il problema da risolvere, è opportuno adottare un linguaggio piuttosto che un altro: ² Calcolo scientifico:

Dettagli

PROBLEMI E ALGORITMI

PROBLEMI E ALGORITMI 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

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1 ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica

Dettagli

Introduzione ai linguaggi di programmazione

Introduzione ai linguaggi di programmazione Università degli Studi di Milano Laurea Specialistica in Genomica Funzionale e Bioinformatica Corso di Linguaggi di Programmazione per la Bioinformatica Introduzione ai linguaggi di programmazione Giorgio

Dettagli

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi INTRODUZIONE AI LINGUAGGI DI PROGRAMMAZIONE Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi I LINGUAGGI DI PRIMA GENERAZIONE rientrano in questa categoria i vari linguaggi macchina proprietari, decisamente

Dettagli

Introduzione allo Studio dei Linguaggi di Programmazione. Corso di Linguaggi di Programmazione Informatica e Tecnologie Produzione Software

Introduzione allo Studio dei Linguaggi di Programmazione. Corso di Linguaggi di Programmazione Informatica e Tecnologie Produzione Software Introduzione allo Studio dei Linguaggi di Programmazione Corso di Linguaggi di Programmazione Informatica e Tecnologie Produzione Software Argomenti 2 Studiare i Linguaggi di Programmazione Domini Applicativi

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Lezione 4 Chiara Braghin braghin@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 6 Marzo 2007 Regole della grammatica di un linguaggio

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

permette di utilizzare lo stesso programma su CPU diverse (con opportuni traduttori)

permette di utilizzare lo stesso programma su CPU diverse (con opportuni traduttori) Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla scrittura di programmi poiché troppo distante dal linguaggio

Dettagli

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli

Dettagli

Elementi di programmazione

Elementi di programmazione Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università

Dettagli

Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave)

Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave) ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione!paradigmi linguistici, costrutti!semantica!implementazione, strutture a tempo di esecuzione 1 Linguaggi di programmazione e astrazione! i linguaggi di programmazione ad alto

Dettagli

Tecnologie dell'informazione e della comunicazione

Tecnologie dell'informazione e della comunicazione Tecnologie dell'informazione e della comunicazione Introduzione al corso e Linguaggi di programmazione ad alto livello Prof. Mauro Gaspari: gaspari@cs.unibo.it Tutor: Elisa Del Bianco: elisadelbianco@gmail.com

Dettagli

COMPILAZIONE. Tarsformazione di linguaggi

COMPILAZIONE. Tarsformazione di linguaggi COMPILAZIONE Tarsformazione di linguaggi Le fasi della compilazione File sorgente Compilazione File sorgente File sorgente File sorgente Compilazione Compilazione Compilazione Libreria di run-time File

Dettagli

Calcolo numerico e programmazione Programmazione

Calcolo numerico e programmazione Programmazione Calcolo numerico e programmazione Programmazione Tullio Facchinetti 11 maggio 2012 14:05 http://robot.unipv.it/toolleeo La programmazione la programmazione è l insieme delle

Dettagli

Programmazione. Andrea Passerini Informatica. Programmazione

Programmazione. Andrea Passerini Informatica. Programmazione Andrea Passerini passerini@disi.unitn.it Informatica Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia talia@deis.unical.it A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte! una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi! componenti della macchina astratta

Dettagli

Elementi di programmazione

Elementi di programmazione Fondamenti di Informatica per la Sicurezza a.a. 2008/09 Elementi di programmazione Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi di alto livello, compilatori e interpreti Linguaggi di alto livello, compilatori e interpreti Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Limiti del linguaggio assembler Esempio: gestione

Dettagli

Macchine Astratte. Luca Abeni. February 22, 2017

Macchine Astratte. Luca Abeni. February 22, 2017 Macchine Astratte February 22, 2017 Architettura dei Calcolatori - 1 Un computer è composto almeno da: Un processore (CPU) Esegue le istruzioni macchina Per fare questo, può muovere dati da/verso la memoria

Dettagli

Programmazione. Andrea Passerini Informatica. Programmazione

Programmazione. Andrea Passerini Informatica. Programmazione Andrea Passerini passerini@disi.unitn.it Informatica Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla

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

Unità Didattica 2 I Linguaggi di Programmazione

Unità Didattica 2 I Linguaggi di Programmazione Unità Didattica 2 I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche

Dettagli

Linguaggi e Ambienti di Programmazione

Linguaggi e Ambienti di Programmazione Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Parte 2 Linguaggi di programmazione Livello di Astrazione per la Codifica di un Algoritmo Si può risolvere un problema senza prima fissare un insieme di azioni, di mosse elementari possibili per l elaboratore?

Dettagli

Introduzione al corso. Obiettivo del corso

Introduzione al corso. Obiettivo del corso Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Introduzione al corso Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio

Dettagli

Linguaggi di programmazione. Paradigmi di programmazione

Linguaggi di programmazione. Paradigmi di programmazione Linguaggi di programmazione Paradigmi di programmazione Linguaggi: un po di storia Albori: Macchine a programma memorizzato, Programmi come dati Linguaggio Macchina Assemblatore FORTRAN (calcolo scientifico)

Dettagli

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione Principali informazioni sull insegnamento Titolo insegnamento Linguaggi di Programmazione Corso di studio Informatica e Comunicazione Digitale Crediti formativi 9 Denominazione inglese Programming Languages

Dettagli

Linguaggi di programmazione e astrazione

Linguaggi di programmazione e astrazione Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo

Dettagli

Fasi di un Compilatore

Fasi di un Compilatore Dipartimento di Matematica e Informatica Università di Camerino Un implementazione compilativa di un linguaggio di programmazione viene realizzata tramite un programma che prende il nome di compilatore

Dettagli

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Calcolatori Elettronici Parte VIII: linguaggi assemblativi Anno Accademico 2013/2014 Calcolatori Elettronici Parte VIII: linguaggi assemblativi Prof. Riccardo Torlone Universita di Roma Tre Linguaggi di Programmazione Linguaggi ad alto livello Maggiore espressività

Dettagli

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

Dettagli

Iniziare a programmare in C++

Iniziare a programmare in C++ Iniziare a programmare in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli

Dettagli

Introduzione alla programmazione. Walter Didimo

Introduzione alla programmazione. Walter Didimo Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione Corso di Informatica Linguaggi di Programmazione Anno Accademico 2011/2012 Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un

Dettagli

Introduzione al Linguaggio C ed all IDE DEV-C++

Introduzione al Linguaggio C ed all IDE DEV-C++ Microsoft Windows e Dev-C++ Introduzione al Linguaggio C ed all IDE DEV-C++ Le Esercitazioni in Laboratorio Laboratorio M1 + MLAB1/2: Edificio Via Valotti, primo piano e piano interrato Orario: Mercoledì

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi di alto livello, compilatori e interpreti Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI

Dettagli

A. Ferrari. informatica. introduzione a Java. Alberto Ferrari Informatica

A. Ferrari. informatica. introduzione a Java. Alberto Ferrari Informatica informatica introduzione a Java La nascita di Java 1991 - James Gosling lavora al Green Project (SUN) per studiare la convergenza tra dispositivi di elettronica di consumo e computer 1992 il Green Project

Dettagli

Linguaggi di Programmazione + Lab. A.A Docente: Marco de Gemmis. Presentazione dell insegnamento

Linguaggi di Programmazione + Lab. A.A Docente: Marco de Gemmis. Presentazione dell insegnamento Linguaggi di Programmazione + Lab. A.A. 2014-2015 Docente: Marco de Gemmis Presentazione dell insegnamento Informazioni generali Insegnamento: Docente: Marco de Gemmis - Ricercatore Lezioni: 2 marzo 2015-3

Dettagli

ASTRAZIONE ASTRAZIONE

ASTRAZIONE ASTRAZIONE ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica

Dettagli

Sommario FONDAMENTI DI INFORMATICA. Definizione formale di algoritmo. Informatica e algoritmi. ALGORITMI E LINGUAGGIO PYTHON Introduzione

Sommario FONDAMENTI DI INFORMATICA. Definizione formale di algoritmo. Informatica e algoritmi. ALGORITMI E LINGUAGGIO PYTHON Introduzione Università degli Studi di Cagliari Corsi di Laurea in Ingegneria Chimica e Ingegneria Meccanica FONDAMENTI DI INFORMATICA http://www.diee.unica.it/~marcialis/fi A.A. 2017/2018 Sommario Algoritmi, linguaggi

Dettagli

Informatica triennale (L31) sede di Bari Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Informatica triennale (L31) sede di Bari Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione Principali informazioni sull insegnamento Titolo insegnamento Linguaggi di Programmazione Corso di studio Informatica triennale (L31) sede di Bari Crediti formativi 9 Denominazione inglese Programming

Dettagli

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente

Dettagli

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1 Data: 12-10-2016 Pag: 8 10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1 1. Definizioni a) Linguaggi Naturali = i linguaggi degli esseri umani Lessico = le parole che si usano Sintassi = le regole con cui si

Dettagli

Informatica 3. LEZIONE 0: Panoramica dei linguaggi di programmazione. Politecnico di Milano - Prof. Sara Comai 1

Informatica 3. LEZIONE 0: Panoramica dei linguaggi di programmazione. Politecnico di Milano - Prof. Sara Comai 1 Informatica 3 LEZIONE 0: Panoramica dei linguaggi di Politecnico di Milano - Prof. Sara Comai 1 Linguaggi di Un linguaggio di è una notazione formale caratterizzata da due componenti: Sintassi: insieme

Dettagli

Il Software programmabili programma algoritmo

Il Software programmabili programma algoritmo Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia talia@deis.unical.it A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica

Dettagli

Java: un linguaggio per applicazioni di rete

Java: un linguaggio per applicazioni di rete Java: un linguaggio per applicazioni di rete Moreno Falaschi Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena March 3, 2014 1 Caratteristiche di Java (SUN) Linguaggio

Dettagli

I linguaggi. Informatica

I linguaggi. Informatica I linguaggi Informatica Comunicazione La comunicazione è un processo che consente di scambiare informazioni e coinvolge un mittente, un destinatario, un messaggio ed un canale comunicativo. Affinché la

Dettagli

Programmazione C Massimo Callisto De Donato

Programmazione C Massimo Callisto De Donato Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli