Programmazione. Andrea Passerini Informatica. Programmazione

Documenti analoghi
Linguaggi di Programmazione

I Linguaggi di Programmazione

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

Il linguaggio di programmazione Python

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

Traduzione e interpretazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Introduzione alla programmazione. Walter Didimo

LINGUAGGI DI ALTO LIVELLO

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

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

Introduzione alla Programmazione. Giselda De Vita

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Programmazione: Sommario

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

la traduzione dei programmi ed introduzione a Java

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

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Linguaggi di alto livello, compilatori e interpreti

Il Software programmabili programma algoritmo

Avviate l interprete Python selezionandolo dal menu dei programmi. Una volta avviato, l interprete presenta un cursore in cui inserire comandi

AMBIENTI DI PROGRAMMAZIONE

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

LINGUAGGI DI ALTO LIVELLO

Unità Didattica 2 I Linguaggi di Programmazione

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

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

Linguaggi di programmazione

Primi passi col linguaggio C

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

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

Linguaggi, compilatori e interpreti

Corso di Architettura degli Elaboratori

Linguaggi di Programmazione

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

La Programmazione. Programmare Macchine Astratte Compilazione / Interpretazione Java. Laboratorio di Programmazione - Luca Tesei

Linguaggi di Programmazione

Introduzione alla programmazione strutturata

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Elementi di programmazione

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

La programmazione in linguaggio C

Il software: dall algoritmo al linguaggio macchina

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Concetti introduttivi

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Linguaggi e traduttori

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

Algoritmi e Linguaggi

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Sorgenti di errore. Laboratorio di Informatica 1

Macchine Astratte. Luca Abeni. February 22, 2017

INTRODUZIONE ALLA PROGRAMMAZIONE. Cosimo Laneve

Elementi di programmazione

Linguaggi di Programmazione

Programmazione I. Linguaggi di programmazione. Traduzione. Fabrizio Messina

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Cos è la programmazione?

Concetti introduttivi

Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Linguaggi di programmazione

Informatica Generale Andrea Corradini I linguaggi di programmazione

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Fondamenti di Programmazione

Concetti base programmazione. Antonio Gallo

INFORMATICA. L informatica comprende:

Macchine astratte, linguaggi, interpretazione, compilazione

Il calcolatore. Architettura di un calcolatore (Hardware)

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi di programmazione

Fondamenti VBA. Che cos è VBA

Macchina Astratta: struttura e realizzazione.

Introduzione al Python

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B

Le basi del linguaggio Java

Introduzione alla programmazione

Corso sul linguaggio Java

Fondamenti di Informatica T. Il Software

Astrazione e Macchine Virtuali. parte 1: in generale

EI è parte della nostra vita quotidiana: es. ricerca di un numero di telefono. Algoritmo. Esecutore. Elenco Telefonico

3. Programmi e algoritmi

COMPILAZIONE. Tarsformazione di linguaggi

Traduzione ed Interpretazione

Fondamenti di Algoritmi

Traduzione ed Interpretazione. Queste sconosciute

Lezione 15 Il Set di Istruzioni (1)

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

Corso di Architettura (Prof. Scarano) 09/04/2002

Introduzione all OOP!

LA CODIFICA DELLE INFORMAZIONI

Dall algoritmo al calcolatore: concetti introduttivi. Fondamenti di Programmazione

Transcript:

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 scrittura di programmi poiché troppo distante dal linguaggio naturale. I linguaggi di programmazione permettono di scrivere programmi più agevolmente mantenendo le caratteristiche di non ambiguità e non ridondanza necessarie. Per poter essere eseguito dal calcolatore, un programma scritto con un linguaggio di programmazione deve essere tradotto in linguaggio macchina.

Classificazione dei linguaggi In base al livello in cui si collocano tra macchina e uomo basso livello E il linguaggio assemblatore (assembly) c è una corrispondenza uno ad uno tra istruzioni in assembly ed istruzioni in linguaggio macchina è specifico per ogni CPU permette di sfruttare appieno le potenzialità della CPU (il suo set di istruzioni) esempio add R01,R02,R03 ; R01 R02 + R03 addi R02,R01,0 ; R02 R01 + 0 bltz R01,-2 ; se (R01 < 0) vai a PC-2

Classificazione dei linguaggi In base al livello in cui si collocano tra macchina e uomo alto livello E svincolato dalla struttura della macchina è più agevole per il programmatore in quanto più simile al linguaggio naturale evita di dover conoscere le caratteristiche specifiche della CPU permette di utilizzare lo stesso programma su CPU diverse (con opportuni traduttori) per ogni CPU deve esistere il relativo traduttore del linguaggio Il traduttore non sempre produce codice ottimizzato

Alto livello Esempi C #include <stdio.h> int main() { printf("hello, World\n"); } Python return 0; print "Hello, World\n"

Classificazione dei linguaggi In base alla struttura che devono avere i programmi strutturata si attiene ai concetti di diagrammi strutturati per gli algoritmi (Teorema di Böhm-Jacopini) introduce il concetto di visibilità di una variabile (scope) (variabili locali ad un blocco). permette maggiore riusabilità, leggibilità e manutenzione dei programmi. Esempi: Pascal, Ada, C, Python

strutturata Esempi: C uint max(uint[] V, uint size) { uint max = 0; uint i; for(i = 0; i < size; i++) if(v[i] > max) max = V[i]; return max; } int main() { uint[] V = {0,1,2,3,4,5}; uint size = 6; uint max = max(v, size); } printf("%d\n",max);

strutturata Esempi: Python def max(v): max = 0 for i in V: if(v[i] > max): max = V[i] return max V = range(6) max = max(v) print max

Classificazione dei linguaggi In base alla struttura che devono avere i programmi orientata agli oggetti presuppone di raggruppare dati e procedure che operano su di essi in entità (classi) una classe è dotata di attributi (i dati) e metodi (le procedure) per accedere ed operare sugli attributi un oggetto è un istanza di una determinata classe, con specifici valori per i suoi attributi (che possono variare durante l esecuzione) E il paradigma di programmazione più usato attualmente Esempi: C++, Java, Smalltalk, Python

orientata agli oggetti Esempi: C++ #include <stdio.h> int main() { class Vector{ int V[] = {0,1,2,3,4,5}; int size = 6; int* V; int size; public: } Vector(int V_[], int size_){ size = size_; V = new int[size]; int i; for(i = 0; i < size; i++) V[i] = V_[i]; } Vector(){ delete[] V; } int getmax(){ int max = 0; int i; for(i = 0; i < size; i++) if(v[i] > max) max = V[i]; return max; } }; Vector Vec(V,6); printf("%d\n", Vec.getMax());

orientata agli oggetti Esempi: Python class Vector: def init (self, V_): self.v = V_[:] def getmax(self): max = 0 for i in self.v: if(self.v[i] > max): max = self.v[i] return max V = range(6) Vec = Vector(V) max = Vec.getMax() print max

Traduzione X T Y Dati: una sequenza di istruzioni X descritte in un linguaggio sorgente (e.g. C). un traduttore T in linguaggio macchina per una certa CPU C L esecuzione di T con ingresso X produce in uscita una sequenza di istruzioni Y descritte in linguaggio eseguibile da C.

Traduzione Esistono due possibili approcci alla traduzione Compilazione Il programma sorgente viene compilato nel suo rispettivo eseguibile una volta per tutte. La versione eseguibile viene utilizzata ogni volta si debba eseguire il programma. Esempi di linguaggi compilati: Pascal, C Esempio: C Compilazione del file max.c nell eseguibile max: gcc -o max max.c Esecuzione dell eseguibile max./max

Traduzione Interpretazione La traduzione in instruzioni in linguaggio macchina avviene solo al momento dell esecuzione del programma. Il programma non viene eseguito direttamente dalla CPU ma tramite un interprete che traduce e manda in esecuzione le istruzioni del programma una per una. Esempi di linguaggi interpretati: Perl, PHP, Python, bash

Traduzione Esempio: Python Esecuzione del programma max.py tramite l interprete python: python max.py Esecuzione dell interprete python in modalità interattiva: > python Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 Type "help", "copyright", "credits" or [...] >>> >>> print "Hello, world\n" Hello, world >>>

Compilatori vs Interpreti tempi di esecuzione L interprete deve tradurre al volo ogni singola istruzione (impiegando tempo) e non può ottimizzare il codice qualità della traduzione il compilatore, eseguendo la traduzione al di fuori dell esecuzione del programma, ha tutto il tempo di ottimizzare la traduzione realizzando codice più efficiente portabilità del codice un programma eseguibile non può funzionare su una CPU diversa da quella per cui è stato compilato

Compilatori vs Interpreti modificabilità del codice un programma eseguibile non può essere modificato, e recuperare il sorgente a partire dall eseguibile è estremamente difficile (reverse code engineering) scrittura dei programmi la scrittura di software tipicamente comporta modifiche successive al codice sorgente via via che viene scritto. In un linguaggio compilato qualunque modifica al programma comporta la ricompilazione del tutto. interattività nello sviluppo un interprete può eseguire codice in maniera interattiva, facilitando notevolmente la programmazione.

Compilatore + Virtual Machine è una soluzione ibrida tra compilazione ed intepretazione Il codice sorgente viene compilato in un linguaggio intermedio (bytecode) (una volta per tutte) il bytecode viene interpretato da una virtual machine (VM) ossia un interprete di basso livello che emula una CPU. vantaggi Le ottimizzazioni più onerose vengono fatte durante la prima compilazione Il bytecode è non modificabile Lo stesso bytecode può essere eseguito su tutte le CPU per cui esiste un implementazione della VM E più facile scrivere VM per CPU diverse che compilatori svantaggi Il bytecode deve comunque essere convertito in codice macchina a runtime più lento di eseguire direttamente codice macchina