840 likes | 995 Views
Introduzione. Programmazione in Perl. Guido Boella Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino guido@di.unito.it http://www.di.unito.it/~guido. Accendo il computer …. Metafora linguistica : parlo al computer
E N D
Introduzione Programmazione in Perl Guido Boella Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino guido@di.unito.it http://www.di.unito.it/~guido
Accendo il computer … Metafora linguistica: parlo al computer dicendogli cosa deve fare ed esso mi parla scrivendomi il risultato della elaborazione (precedente l’introduzione del mouse)
Accendo il computer Metafora visiva: ho a disposizione degli oggetti che posso manipolare (scelgo, prendo, sposto, copio, taglio, incollo, aggiungo, …) (successiva all’introduzione del mouse)
Programmare un computer ? • Un computer è una macchina programmabile, tuttavia esso non è direttamente utilizzabile da parte degli utenti poiché richiederebbe la conoscenza sull’organizzazione fisica della specifica macchina e del suo linguaggio macchina • Ogni machina avrebbe le sue differenti caratteristiche • Il linguaggio macchina è estremamente complicato e non di facile gestione ? Utente ? Linguaggio Macchina
Programmare un computer: astrazione • In altre parole desideriamo astrarci dai dettagli fisici della macchina in oggetto e dal suo specifico linguaggio macchina • L’idea è quella di realizzare al di sopra della macchina reale una macchina virtuale astratta che abbia le funzionalità desiderate e che sia facile da utilizzare per l’utente • L’utente interagisce con la macchina virtuale, ogni comando viene poi tradotto nei corrispondenti comandi sulla macchina fisica • La macchina virtuale è realizzata mediante software (programmi) Utente Software traduzione in LM Linguaggio Macchina Macchina Virtuale
Programmare un computer: astrazione Utente • La macchina virtuale viene realizzata in genere mediante il software di base: • Sistema Operativo: file system, memoria, cpu, risorse ausiliarie, comunicazione • Linguaggi e ambienti di programmazione ad alto livello: interpreti e compilatori • Non vi sono limiti al numero e al tipo di macchine virtuali che possono essere realizzate • In genere nelle macchine moderne sono strutturate su più livelli (struttura a cipolla) Software traduzione Software traduzione Linguaggio Macchina Macchina Virtuale Macchina Virtuale
Programmare un computer: astrazione • Astrarre dall’organizzazione fisica della macchina • Usare nello stesso modo, o comunque in modo molto simile, macchine leggermente diverse dal punto di vista hardware o, al limite, macchine con hardware profondamente diverso • Avere un semplice linguaggio di interazione con la macchina • Avere un linguaggio semplice ed ad alto livello per programmare la macchina • Avere un insiemi di programmi applicativi per svolgere compiti diversi • MACCHINE VIRTUALI
Architettura dei computer • In un computer possiamo distinguere cinque unità funzionali: • l’unitàdi controllo • l’unità aritmetico-logica • la memoria centrale (RAM) • la memoria periferica • i dispositivi di ingresso/uscita Informatica Generale
Unità di uscita Memoria centrale (RAM) Unità di controllo Unità logico aritmetica Memoria periferica Unità di ingresso Struttura di un computer PROCESSORE
Figura 6 Diagramma schematico di un personal computer
Figura 1 Unità centrale di elaborazione
Figura 3 Un disco rigido
Figura 4 Una scheda principale(motherboard)
Il Processore • Il processore è il componente che fornisce la capacità di elaborazione delle informazioni contenute nella memoria centrale • L’elaborazione avviene in accordo a sequenze di istruzioni (istruzioni macchina) Informatica Generale
La memoria centrale • Fornisce la capacità di “memorizzare” le informazioni • Può essere vista come una lunga sequenza di componenti elementari, ognuna delle quali può contenere un’unità di informazione (un bit) • Le componenti elementari sono aggregate tra di loro e formano delle strutture complesse dette celle (otto bit formano un byte) • La memoria può essere vista come una sequenza di celle Informatica Generale
0 1 2 3 4 N La memoria centrale • Ciascuna cella è caratterizzata da un indirizzo • Gli indirizzi corrispondono all’ordinamento delle celle nella sequenza • Gli indirizzi sono numeri interi (partono da 0) Informatica Generale
La memoria centrale • Un altro nome con cui viene indicata la memoria centrale è memoria RAM (Random Access Memory) • Questa definizione indica che il tempo di accesso ad una cella è lo stesso indipendente dalla posizione della cella • Le operazioni che si possono effettuare sulla memoria sono le operazioni di lettura e scrittura di informazioni nelle celle Informatica Generale
La memoria centrale • Le dimensioni della memoria centrale variano a seconda del tipo di computer e vengono espresse mediante le seguenti unità di misura: • 1 Kilobyte (KByte) corrisponde a 1024 byte • 1 Megabyte (MByte) corrisponde a 1024 Kbyte • 1 Gigabyte (GByte) corrisponde a 1024 MByte • 1 Terabyte (TByte) corrisponde a 1024 GByte • Nei computer attuali le dimensioni tipiche della memoria centrale vanno dagli 8 ai 512 Mbyte Informatica Generale
La memoria centrale • Un altro aspetto che caratterizza la memoria è il tempo di accesso (tempo necessario per leggero o scrivere un’informazione in una cella) • Le memorie centrali dei computer attuali sono molto veloci e i loro tempi di accesso sono di pochi nanosecondi (un miliardesimo di secondo) Informatica Generale
La memoria centrale • La memoria centrale perde ogni suo contenuto quando si interrompe l’alimentazione elettrica. Questa caratteristica viene chiamata volatilità • È quindi necessario per conservare le informazioni (programmi e dati) avere altri tipi di memoria che preservano il contenuto anche senza alimentazione elettrica Informatica Generale
La memoria periferica • La memoria centrale non può essere troppo grande a causa del suo costo elevato • Non consente la memorizzazione permanente dei dati (volatilità) • Per questi motivi nell’architettura di un calcolatore sono stati introdotti due tipi di memoria: • Memoria centrale veloce, volatile, di dimensioni relativamente piccole; • Memoria periferica, più lenta e meno costosa, con capacità di memorizzazione maggiore ed in grado di memorizzare i dati in forma permanente Informatica Generale
La memoria periferica • La memoria periferica viene utilizzata per mantenere tutti i programmi e tutti i dati che possono essere utilizzati dal computer • La memoria periferica viene anche detta memoria di massa • Quando si vuole eseguire un certo programma, questo dovrà essere copiato dalla memoria di massa a quella centrale (caricamento) Informatica Generale
La memoria periferica • Il processore non può utilizzare direttamente la memoria di massa per l'elaborazione dei dati • Il programma in esecuzione deve essere in memoria centrale e quindi le informazioni devono essere trasferite dalla memoria periferica a quella centrale ogni volta che servono
La memoria periferica:I dischi magnetici • I dischi magnetici sono i dispositivi di memoria periferica più diffusi • Sono dei supporti di plastica o vinile, su cui è depositato del materiale magnetizzabile • Nel corso delle operazioni i dischi vengono mantenuti in rotazione a velocità costante e le informazioni vengono lette e scritte da testine del tutto simili a quelle utilizzate nelle cassette audio/video • Entrambi i lati di un disco possono essere sfruttati per memorizzare le informazioni Informatica Generale
Le unità di ingresso/uscita • Le unità di ingresso/uscita (anche dette periferiche), permettono di realizzare l'interazione tra l'uomo e la macchina • La loro funzione primaria è quella di consentire l'immissione dei dati all'interno dell'elaboratore (ingresso), o l'uscita dei dati dall'elaboratore (uscita) • Solitamente hanno limitata autonomia rispetto al processore centrale (sono completamente gestiti, controllati e coordinati dal processore) Informatica Generale
Le unità di ingresso/uscita: il video • Dal punto di vista fisico, un video può essere visto come una matrice di punti illuminati con diversa intensità • Ogni punto sullo schermo prende il nome di pixel e un'immagine viene quindi composta accendendo o spegnendo i pixel sullo schermo • Ci sono video in bianco e nero o a colori e inoltre si deve distinguere tra video a carattere, e video grafici Informatica Generale
Le unità di ingresso/uscita: il video • Oggi sono comuni video con un numero di colori che va da 256 fino a 16 milioni • Esistono video a diversi livelli di risoluzione, cioè con diverse densità di pixel; nei personal sono oggi comuni video con risoluzioni che vanno da 640X480 fino a 4096X3300 pixel (altissima risoluzione) • La dimensione di un video viene misurata in pollici e fa riferimento alla lunghezza della diagonale • Ad esempio, quando si parla di un video a 14 pollici, indicati come 14", si intende un video con una diagonale lunga 14 pollici Informatica Generale
Accendo il computer … • Avvio del sistema operativo • Identificazione utente • Attivazione dell’ambiente di lavoro Sistema operativo: software speciale che determina il comportamento del computer, fa funzionare i programmi applicativi, gestisce la memoria, il file system, gli utenti, ... Esempi: Windows98, Linux, Unix, BeOS, MacOS
Il Sistema Operativo • Avviamento dell’elaboratore e creazione dell’ambiente virtuale • Gestione del processore e dei processi (un programma in esecuzione) • Gestione della memoria principale (allocazione) • Gestione della memoria virtuale (visione astratta della memoria, swapping) • Gestione della memoria secondaria (file system, organizzazione logica e gestione fisica dei file) • Gestione delle risorse di input/output (periferiche) • Linguaggio di comandi per l’interazione con l’utente
Gestione della memoria secondaria • Il file system è costituito da un insieme di programmi che devono svolgere due compiti importanti: • fornire all’utente una visione logica dei file e utilizzare lo spazio sui dischi in modo ottimale • nome logico • operazioni per lavorare sui file • accesso alle informazioni contenute nei file • strutturazione • protezione • gestire i file nella memoria di massa • allocazione fisica dei file (contigua vs sparsa, indexata vs linkata)
file • Unità di memoria, agli occhi dell’utente • Può contenere: • Documenti • Programmi • Dati • Le ultime tre lettere (o l’icona) indicano il tipo del file Perché un file Word deve essere aperto con Word e non può essere letto utilizzando un altro applicativo? Non contiene semplicemente dei dati?
ALBERO File e cartelle File: corrispondono ai documenti, possono contenere testi, presentazioni, immagini di vari formati, programmi Cartelle: sono contenitori, servono a organizzare il materiale contenuto in memoria cartelle file
Il sistema operativo:il file system • La struttura gerarchica che i S.O realizzano per organizzare i file è detta ad albero • L’albero ha un’unica directory radice che viene detta root directory (o direttorio radice); viene simbolicamente indicata con il simbolo “\” (slash) • Inoltre, bisogna specificare a quale unità di memoria secondaria si riferisce la struttura ad albero • a: e b: per i floppy disk • c: per l’hard disk • d: oppure e: per il CD-ROM o dischi aggiuntivi
ROOT Il sistema operativo:il file system Applicazioni Elab_imm Photoshop.exe Elab_suoni Premiere.exe Elab_testi Winword.exe libro1 Narrativa-Fra libro2 Floppy a: libro1 Biblioteca libro2 Narrativa-Ing libro3 libro1 Narrativa-Ita libro2 libro3 Bianchi Utenti Pautasso Indice Rossi
Il sistema operativo:il file system • Se non esiste la strutturazione in directory, tutti i file possono essere identificati mediante il loro nome • Nel caso di un’organizzazione gerarchica a più livelli il nome non è più sufficiente ad identificare il file (nell’esempio precedente esistono diversi file con lo stesso nome) • Per individuare un file o una directory in modo univoco si deve allora specificare l'intera sequenza di directory che lo contengono, a partire dalla radice dell'albero
Il sistema operativo:il file system • Ad esempio il file libro1 di narrativa italiana è univocamente identificato dalla sequenza: A:\Biblioteca\Narrativa-Ita\libro1 • La directory Pautasso di Utenti è identificata dalla sequenza: A:\Utenti\Pautasso il carattere “\”viene usato come separatore. • Una sequenza di questo tipo può essere vista come il cammino che si deve compiere per raggiungere un determinato file a partire dalla radice dell'albero, ed è chiamata path
Il sistema operativo:il file system • Si dice path corrente l’indirizzo della cartella (directory) su cui si sta lavorando • Un altro modo di individuare un file (o una directory) è basato sul concetto di posizione • In questo caso per individuare un file o una directory in modo univoco si deve specificare l'intera sequenza di directory che lo contengono, a partire dalla posizione (path) corrente
Il sistema operativo:il file system Applicazioni Elab_imm Photoshop.exe Elab_suoni Premiere.exe Elab_testi Winword.exe libro1 Narrativa-Fra libro2 Floppy a: libro1 Biblioteca libro2 Narrativa-Ing libro3 libro1 Narrativa-Ita libro2 libro3 Bianchi Utenti Pautasso Posizione corrente Indice Rossi
Il sistema operativo:il file system • Se la posizione corrente è A:\Biblioteca, il file libro1 di narrativa italiana è univocamente identificato dalla sequenza: Narrativa-Ita\libro1 • Se la posizione corrente è A:\Utenti, la directory Pautasso è identificata dalla sequenza: Pautasso • Per raggiungere un determinato file a partire dalla posizione corrente si utilizza il path relativo
C Documenti Pagine Web … path crash course crashCourse… desktop.bmp vt100.bmp Path/directory
cartelle Area di lavoro applicativi D E S K T O P
Il sistema operativo:i file • I file sono memorizzati su dispositivi di memoria secondaria (hard disk, floppy, CD) • L’utente deve solo preoccuparsi di dare un nome ad un file (al momento della creazione) ed usarlo per le operazioni da eseguire su di esso • Come dare nomi ai file che si creano?
Il sistema operativo:i file • Il nome è generalmente composto da due parti: • il nome vero e proprio (si possono usare caratteri alfanumerici in numero dipendente dal S.O.) • l’estensione (una sequenza di caratteri che aiuta ad identificare il tipo di contenuto del file) • nome ed estensione sono separati dal carattere punto (.) • Il nome è obbligatorio mentre l’estensione è opzionale (ma fortemente consigliata)
Il sistema operativo:il file system • Per organizzare gerarchicamente i file, il sistema operativo deve fornire all'utente un insieme di operazioni sulle directory, per esempio: • creare una nuova directory • rimuovere una directory • ridenominare una directory • elencare il contenuto (l'insieme di file e sotto-directory) di una directory • copiare o spostare i file da una directory ad un'altra
PROGRAMMA = RICETTA • George Lakoff: “Metaphors we live by” • Per comprendere cio’ che non conosciamo ci si basa su analogie con cio’ che conosciamo meglio.
La prova del cuoco • Programma = elenco di cose da fare per raggiungere il risultato voluto • Come una ricetta di cucina • La prima differenza è il linguaggio:linguaggio naturale, come l’italiano richiede una sorta di senso il senso comune è molto piu' complicato da realizzare in un computer di quanto uno comunemente possa aspettarsi • Per non parlare delle incomprensioni
Istruzione (“buttare la pasta”) = comando • Ogni istruzione viene data in una frase e termina con un punto. (i comandi vanno separati uno dall’altro) • punto di partenza: ingredienti = dati in input • dove metto gli ingredienti? • contenitori per gli ingredienti (pentole, piatti) = variabilile variabili sono dei pezzi di memoria centrale (ram)(per i matematici: “x=y”) • tipi di contenitori per diverse categorie di ingredienti = tipi di dati
Dati, variabili e tipi di dati • problemi quantitativi e qualitativi • un bicchiere non mi basta per contenere un litro d'acqua(tipi di dati omogenei ma di dimensioni diverse) • la pasta la metto in uno scolapasta • ma non posso usare uno scolapasta per metterci dell'acqua(tipi di dati eterogenei richiedono variabili fatte diversamente)
Riempire le variabili • se ho un contenitore l'ingrediente contenuto viene buttato via quando ci metto un altro ingrediente • posso usare un contenitore per contenere solo un ingrediente alla volta: o latte o acqua • se ho un bicchiere di latte e voglio metterci dell'acqua il latte deve essere buttato via. • Quindi se in una variabile metto dentro 1 e poi 2, l’1 viene buttato via se non lo metto prima in un’altra variabile
Le variabili hanno un nome • Se ho una pentola con dentro un tacchino posso dire:“mettere la pentola sul fuoco” • Allo stesso modo posso parlare di una variabile per compiere delle operazioni (“chiamare una procedura”) sul dato che è contenuto nella variabile anziche’ ripetere il dato ogni volta • (quindi una variabile dà un nome ad un pezzo di memoria)