• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introduzione all’informatica
 

Introduzione all’informatica

on

  • 530 views

Slide presentate nel corso del seminario "Introduzione all'informatica" - Università di Mlano Bicocca - Settembre 2013

Slide presentate nel corso del seminario "Introduzione all'informatica" - Università di Mlano Bicocca - Settembre 2013

Statistics

Views

Total Views
530
Views on SlideShare
530
Embed Views
0

Actions

Likes
0
Downloads
26
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introduzione all’informatica Introduzione all’informatica Presentation Transcript

    • INTRODUZIONE AL‟INFORMATICA Seminario introduttivo - Settembre 2013
    • Indice  Introduzione  Algoritmi  Come è fatto un computer  Reti di computer  Internet 
    • Calcolare a macchina  C‟è qualcosa nel calcolo di evidentemente meccanico  Sembra ragionevole poter costruire “macchine per calcolare”
    • Macchine per calcolare (1)  A – Due righelli permettono di fare le somme  B – Un pallottoliere permette di fare le somme
    • Macchine per calcolare (2)  A: è di tipo analogico  Funziona sulla base dell‟”analogia” della somma delle lunghezze  I limiti del calcolo sono legati solo alla precisione della misura  B: è di tipo digitale  Da “digit” (cifra)  E‟ perfettamente preciso entro il limite delle cifre che rappresenta
    • Limitazioni  A e B sono in grado di fare un‟unica operazione: la somma  Sono state costruite macchine più versatili, in grado di compiere somme, ma non solo...
    • Un esempio: la “Pascaline”  Inventata da Blaise Pascal (1623 – 1662), più noto come filosofo e matematico  Permetteva di effettuare diverse operazioni aritmetiche e matematiche
    • Un altro esempio: il regolo calcolatore  E‟ analogico: funziona come i righelli  Usando scale logaritmiche, permette di fare moltiplicazioni anziché addizioni
    • Alan Turing e la macchina algoritmica  Pioniere dell‟informatica moderna  Una macchina di Turing è una macchina che non “sa” calcolare, ma “sa come” calcolare  La macchina di Turing non fornisce il risultato di un calcolo, ma compie le operazioni necessarie per raggiungere tale risultato (computer agoritmico)
    • Indice  Introduzione  Algoritmi  Come è fatto un computer  Reti di computer  Internet 
    • Algoritmo  Procedimento finito che permette di raggiungere un certo risultato  Il “focus” non è sul risultato, ma su come ottenerlo  Il termine viene da “algoritmus”, parola latina medievale a sua volta derivante dal nome del matematico arabo Al-Khwarizmi (780 – 850 d.C.)
    • Esempio di algoritmo  Per preparare il riso “pilaf” occorre mettere insieme tre parti di riso e sette parti di acqua (o brodo) in volume  Algoritmo: 1. Prendi una tazzina 2. Riempila per tre volte di riso, in modo che sia colma 3. Riempila per sette volte di brodo, in modo che sia colma 4. Metti insieme acqua e riso in una pentola
    • Note (1)  L‟algoritmo “trasforma” le cose  All‟inizio ho una confezione di riso e una pentola di brodo  Alla fine ho la corretta miscela per il riso pilaf  Questo è vero (in generale) per qualsiasi algoritmo:  Confezione di riso + Pentola di brodo = input  Miscela finale = Output
    • Proprietà degli algoritmi  Non tutte le possibili sequenze di operazioni definiscono un algoritmo  Per essere definito correttamente, un algoritmo deve godere di alcune proprietà
    • Generalità  Un algoritmo deve descrivere un procedimento generale:  Non importa se uso brodo o acqua  Non importa se il brodo è di carne o di verdure  Non importa se il riso è Carnaroli o Arborio  L‟algoritmo definisce uno schema operativo che, applicato a un certo input, produce un certo output  NB: Fissato l‟input, l‟output è sempre il medesimo (determinismo)
    • Finitezza (1)  Un algoritmo è composto da un numero finito di istruzioni, e deve comportare un numero finito di passi per essere completato  Consideriamo il seguente esempio: 1. Nello sviluppo decimale di π trova la prima occorrenza della cifra 7 2. Sposta la cifra successiva a sinistra di una posizione 3. Ripeti il passo 2. fino al completamento delle cifre
    • Finitezza (2)  Dato che le cifre di π sono infinite, il passo 2) non può essere completato 1) 3,14159265358979323846... 2) 3,1415926535899323846... 3) 3,141592653589323846...
    • Non ambiguità  Un algoritmo deve essere espresso in modo non ambiguo  Il risultato non deve dipendere da situazioni contingenti (non specificate nell‟algoritmo stesso)  Esempio: 1. Prendi una tazzina 2. Riempila per tre volte di riso, in modo che sia colma 3. Riempila per sette volte di brodo, in modo che sia colma 4. Se ti va, aggiungi sale
    • Riepilogando  Ogni algoritmo è descritto da un numero finito di istruzioni  La sua esecuzione deve comportare un numero finito di operazioni  i due concetti non sono identici: v. esempio di π  In linea di principio, un algoritmo riceve dei dati in ingresso (input) e produce dei dati in uscita (output)  Ogni algoritmo è deterministico  il risultato dipende solo dai dati forniti in ingresso; dato un certo input si ottiene sempre lo stesso output
    • Un esempio numerico (1)  Insegnare a un bambino a sommare due numeri  Scrivi i due numeri in colonna  Somma le cifre a partire da destra  Se il risultato è minore di dieci scrivilo, altrimenti scrivi solo le unità, e tieni a mente il riporto  E‟ scritto bene?  Come devo incolonnare i numeri?  Che cos‟è il riporto?  Dove devo scrivere i risultati?
    • Un esempio numerico (2)  Sommare due numeri 1. Scrivi il primo numero 2. Scrivi il secondo numero sotto il primo, in modo che le cifre siano allineate a destra 3. Parti dalla prima cifra a destra 4. Tieni a mente 0 5. Muoviti verso sinistra 6. Se incontri la prima cifra a sinistra vai al passo 12, altrimenti procedi con il passo 7
    • Un esempio numerico (3) 7. Somma la cifra superiore con la cifra inferiore 8. Somma al risultato quello che stai tenendo a mente 9. Se il totale è minore di 10, scrivilo e tieni a mente 0 10. altrimenti, scrivi la cifra delle unità del totale, e tieni a mente la cifra delle decine 11. Torna al passo 5 12. Se il numero che stai tenendo a mente è diverso da 0, scrivilo 13. Fine
    • Il punto fondamentale  La definizione di algoritmo prescinde completamente dal fatto che l‟esecutore sia un essere umano  Si tratta di una sequenza di passi meccanici  In linea di principio, anche una macchina (opportunamente costruita) potrebbe eseguirli
    • Reticoli operativi  Nell‟esempio della somma, il passo 6. comporta un “salto”  Non è detto che un algoritmo sia necessariamente una successione lineare di operazioni  In generale, anzi, la struttura di un algoritmo è reticolare  Come possiamo rappresentarla?
    • Diagrammi a blocchi  Un diagramma a blocchi è un grafo che rappresenta un algoritmo  (Il concetto è generale; i diagrammi a blocchi sono usati anche in altri contesti)  Si usa anche il termine “diagramma di flusso” o “flow chart”  Le singole istruzioni vengono scritte all‟interno di blocchi  I blocchi sono connessi da frecce, che specificano l‟ordine di esecuzione
    • Un esempio – Trovare il massimo tra a e b
    • Simbologia standard dei blocchi Inizio / Fine dell‟algoritmo Azione Input o output (I/O) Controllo del flusso operativo
    • Condizioni di validità  Ciascun blocco azione, lettura/scrittura ha una sola freccia entrante e una sola freccia uscente  Ciascun blocco di controllo ha una sola freccia entrante e due uscenti  Ciascuna freccia entra in un blocco o si innesta su una altra freccia  Ciascun blocco è raggiungibile dal blocco iniziale  Il blocco finale è raggiungibile da qualsiasi altro blocco
    • Il “linguaggio” degli algoritmi  Non esiste uno standard  Azioni (e controlli) sono espressi da termini della lingua parlata, purché comprensibili  Vedremo poi come questo cambia nell‟uso informatico, dove è necessario standardizzare i linguaggi
    • Schemi di flusso  Sono per così dire tipologie “base” di grafi che possono essere presenti all‟interno di un diagramma di flusso  Ne esistono tre di basilare importanza:  Sequenza  Selezione  Iterazione
    • Sequenza  Una successione lineare di azioni e/o di operazioni di I/O Azione 1 Azione 2 Azione 3 Azione 4 Ingresso Uscita
    • Selezione (1)  Un blocco di controllo permette di decidere se eseguire o no una certa parte del diagramma E‟ vero che...? Azione 1 Azione 2 Azione 3 Azione 4 Azione 5 No Sì Ingresso Uscita
    • Selezione (2)  Un blocco di controllo permette di decidere se saltare una certa parte del diagramma E‟ vero che...? Azione 4 Azione 5 No Sì Ingresso Uscita
    • Iterazione  Un certo insieme di operazioni viene eseguito più volte; un blocco di controllo permette di decidere quando terminare il ciclo Il ciclo è finito? Azione 1 Azione 2 No Sì Ingresso Uscita
    • Considerazione fondamentale  Tutte e tre gli schemi (sequenza, selezione e iterazione) hanno un unico punto di ingresso e un unico punto di uscita  Quindi si comportano come blocchi strutturati  In un diagramma a blocchi possiamo inserire box che rappresentano interi schemi, non soltanto operazioni “elementari”
    • Teorema di Bohm - Jacopini  Qualsiasi diagramma di flusso può essere trasformato in un diagramma equivalente che utilizza soltanto sequenze, selezioni e iterazioni  Due diagrammi a blocchi sono “equivalenti” se conducono agli stessi risultati partendo dagli stessi dati di input  Questo teorema permette la costruzione di diagrammi a blocchi strutturati
    • Diagrammi strutturati  Strutturare uno schema a blocchi significa individuare dei “macro blocchi”, che a loro volta potranno essere sviluppati come “blocchi di dettaglio”  Il processo è iterativo
    • Esempio: ordinare una sequenza di numeri  Immaginiamo di fornire all‟algoritmo un certo insieme di valori numerici  Vogliamo che l‟algoritmo generi una lista in cui i valori forniti compaiono in ordine (dal più piccolo al più grande)  (NB: lo sviluppo completo di questo esempio va oltre gli scopi del seminario)
    • L‟algoritmo “in grande” Leggi un numero Fine I numeri sono finiti? Metti in ordine il numero che hai letto Inizio No Sì NB: vedete qualche problema?
    • Come si fa a “mettere in ordine” Seleziona il primo elemento della lista (X) Input < X? Seleziona il prossimo elemento della lista (X) Inserisci Input al posto di X No Sì NB: vedete qualche problema?
    • Nota  Anche i blocchi del “sotto – algoritmo” per mettere in ordine non sono operazioni elementari  Essi dovranno essere opportunamente sviluppati in algoritmi di dettaglio
    • Problemi  Algoritmo “in grande”:  Come si fa a capire che i numeri sono finiti?  L‟algoritmo deve prevedere che venga fornito un numero, oppure “fine”!  Algoritmo “per mettere in ordine”  Cosa succede se la lista è vuota?  L‟operazione “seleziona il primo elemento della lista” fallisce!
    • Esercizi (1)  Costruire lo schema di un algoritmo che trovi i numeri primi compresi tra 2 e 100 (crivello di Eratostene)  Scrivo i numeri da 2 a 100  Marco il primo numero non cancellato (all‟inizio, 2)  Cancello tutti i multipli del numero che ho appena marcato  Ripeto l‟operazione, finché tutti i numeri sono stati marcati o cancellati
    • Esercizi (2)  Costruire lo schema di un algoritmo che trovi il MCD tra due interi a e b, a >= b (algoritmo di Euclide)  Se b = 0, a è il MCD  Se b <> 0:  Divido a/b  Se il resto (r) = 0, b è il MCD  Altrimenti sostituisco b al posto di a, e r al posto di b, poi ripeto la divisione
    • Un‟alternativa agli schemi a blocchi  Nel mondo della programmazione si tende a non usare più gli schemi a blocchi  Sono difficili da gestire dal punto di vista grafico  Si usano piuttosto tecniche di “indentazione”
    • L‟algoritmo di ordinamento (1)  Inizio  Leggi un numero  Ripeti  Metti in ordine il numero che hai letto  Finché i numeri sono finiti  Fine
    • L‟algoritmo di ordinamento (2)  Inizio  Leggi un numero  Ripeti  Seleziona il primo elemento della lista (X)  Ripeti  Se Input >= X  Seleziona il prossimo elemento della lista  Altrimenti  Inserisci Input al posto di X  Finché non hai inserito Input  Finché i numeri sono finiti  Fine
    • Procedimento “Top-down”  Dato un certo problema:  Lo scomponiamo in “sotto problemi”  Esaminiamo ciascuno dei sotto problemi e, se necessario, lo scomponiamo a sua volta  Fino al livello di dettaglio “corretto”  Domanda: qual è il livello di dettaglio corretto?  Il processo è “riduzionista”  Cosa succede se il problema non si lascia scomporre?
    • Computabilità  Sorge spontanea la seguente domanda:  Dato un qualsiasi problema, esiste sempre un algoritmo che lo “risolve”?  Risposta: No  L‟esempio più famoso:  Costruire un algoritmo che sia in grado di decidere se un altro algoritmo ha termine oppure no
    • Complessità algoritmica  Un algoritmo in cui il numero di passi cresce in modo polinomiale in funzione dell‟ampiezza dell‟input è detto di classe P  Ci sono problemi per cui non è noto se esista un algoritmo di classe P che li risolve; sono detti di classe NP  Per chi volesse provarci: c‟è un premio di un milione di dollari per chi riuscirà a dimostrare che le classi P e NP sono identiche (tutti i problemi computabili sono di classe P) oppure no.
    • Una domanda finale  Il nostro cervello funziona in modo algoritmico?  Se sì, i processi mentali sono deterministici  Dunque il “libero arbitrio” non esiste
    • Indice  Introduzione  Algoritmi  Come è fatto un computer  Reti di computer  Internet 
    • La nascita del computer  L‟idea di Turing (computer algoritmico) fu sviluppata a partire dalla fine della seconda guerra mondiale  L‟architettura base di un computer di Turing “funzionante” fu definita dal matematico John von Neumann  Uno dei primi prototipi funzionanti si chiamava EDVAC
    • La distinzione fondamentale Hardware Software
    • Architettura hardware di un computer  Processore (Central Processor Unit o CPU)  Memoria ad accesso diretto (Random Access Memory o RAM)  Memorie di massa  Periferiche di input (tastiera, mouse, scanner...)  Periferiche di output (monitor, stampante, plotter...)  Schede audio, schede video, schede di rete...
    • La CPU  Significa “Central Processing Unit”  Controlla tutte le operazioni fondamentali eseguite dal computer  Include la logica di base, ed è capace di eseguire un numero (relativamente) piccolo di operazioni, come sommare due registri o indirizzare la RAM
    • Processore Intel i486
    • Componenti di una CPU (in generale)  Control Unit  Trasferisce dati dalla memoria ai registri interni  Unità aritmetica (ALU)  Esegue operazioni aritmetiche e logiche  Instruction Pointer (IP)  Registro che contiene l‟indirizzo di memoria della prossima operazione da eseguire  Registro dei flag  Insieme di stati binari (overflow, zero, interrupt...)  Stack di registri
    • Le periferiche
    • La “legge di Moore”  Le prestazioni dei processori raddoppiano circa ogni 18 mesi  Significa che l‟innovazione nell‟hardware ha un andamento esponenziale  Hardware più potente significa software (possibile) più potente
    • Primi anni „70  Il computer è ancora un oggetto enorme e costosissimo  Di fatto esiste solo nelle università e nelle grandi aziende  L‟utente usa schede perforate o telescriventi  (Per chi è interessato: www.computerhistory.org/)
    • Fine anni „70  Nasce il personal computer  Prestazioni ridicole rispetto a un computer di oggi; esempio. Apple II:  64k RAM  No disco rigido  “Floppy disk” da 128k  Risoluzione massima 320x200  Tuttavia copre una serie di esigenze critiche
    • La crescita del PC
    • La memoria RAM  “Accesso diretto” nel senso che il processore può indirizzare qualsiasi locazione di memoria senza dover leggere le precedenti. Il contrario prende il nome di “sequenziale” (es: un nastro magnetico)  Dal punto di vista tecnologico, l‟accesso alla RAM è molto veloce  La RAM è volatile; spegnendo il computer, il suo contenuto viene perso
    • Memorie di massa  Disco rigido interno, dischi rigidi esterni, chiavette USB, CD, DVD...  Servono per conservare grandi moli di dati  Sono permanenti  Sono più lente (e meno care) della RAM
    • I computer moderni sono digitali  Manipolano cifre numeriche  Un computer analogico sarebbe soggetto inevitabilmente a errori di misura  Gli errori si accumulano durante il calcolo  Dopo pochi passaggi i risultati sarebbero praticamente casuali  Ciò implica che la precisione del computer è finita
    • Le memorie  Le memorie di un computer (RAM, ROM, memorie di massa) sono costituite da insiemi ordinati di numeri, che vengono scritti su opportuni supporti  Come è fatta fisicamente una memoria?  Come è organizzata la memoria di un computer?
    • Che cosa contengono le memorie  Esclusivamente numeri  In particolare numeri binari  Che cosa sono?  Per rispondere occorre fare una piccola digressione...
    •  E‟ il sistema di numerazione che utilizziamo comunemente  Le cifre non hanno tutte lo stesso significato  Il significato dipende dalla loro posizione all‟interno del numero Sistema posizionale (1) 3452 unità decinecentinaia migliaia
    •  Si basa sull‟uso della cifra 0 (zero)  Inventato probabilmente in India nel IX secolo d.C.  Nel nostro caso comporta l‟uso di 10 cifre diverse (0, 1, 2, 3, 4, 5, 6, 7 ,8, 9)  Perché proprio dieci cifre? C‟è qualcosa di speciale nel numero 10? Sistema posizionale (2)
    •  Risposta: no. E‟ possibile usare sistemi posizionali basati su qualsiasi numero maggiore di 1. Per capire perché, esaminiamo la seguente tabella  Il numero 10 è detto base del sistema di numerazione. Sistema decimale 3452 = 3 migliaia + = 4 centinaia + 5 decine + 2 unità 3 × 1000 + = 4 × 100 + 5 × 10 + 2 × 1 3 × 103 + 4 × 102 + 5 × 101 + 2 × 100
    •  Qualsiasi numero N strettamente maggiore di 1 può essere utilizzato come base  Esiste sempre un unico modo per rappresentare un numero, indipendentemente dal valore di N  Occorrono esattamente N cifre (compreso lo 0) per poter rappresentare i numeri  Se volessimo usare la base 7, ci basterebbero le cifre 0, 1, 2, 3, 4, 5, 6  E‟ sempre possibile convertire un numero da una certa base a un‟altra Teoremi sui sistemi posizionali in base N
    •  Diverse popolazioni umane hanno usato come base 60  Non è noto con chiarezza perché usare 10 o 60  L‟uso del 10 come base potrebbe dipendere dal fatto che abbiamo 10 dita…  Noi stessi usiamo la base 60 per rappresentare i primi e i secondi d‟arco, i minuti e i secondi di tempo Esempi di sistemi di numerazione non decimali
    •  Utilizza come base il numero 2  Le cifre possibili sono solo 0 e 1 (BIT = BInary digiT)  E‟ il sistema posizionale più “semplice” possibile  I numeri sono “molto lunghi”  Esempio: 10000000 (binario) = 256 (decimale)  E‟ il sistema di numerazione usato “internamente” dai computer  Perché? Il sistema di numerazione binario
    •  Ragioni “tecniche”  E‟ facile rappresentare le cifre 0 e 1 come stati fisici di un circuito (es. passa o non passa corrente)  Gli errori di “lettura” sono meno probabili (quindi meno frequenti)  Ragioni “logiche”  Le cifre 0 e 1 corrispondono in modo naturale ai valori logici FALSO e VERO Perché si usa il sistema binario
    •  Numerici  1 + 1 = 10  111 + 1 = 1000  10 × 10 = 100  Logici  1 AND 1 = 1  0 OR 0 = 0  1 → 0 = 0 Esempi
    •  Funziona per slot ordinati (celle di memoria)  Uno slot binario è come una “scatola” dentro a cui possiamo inserire un‟unica cifra binaria (0 o 1)  “Scatole” così sarebbero troppo piccole per gli scopi pratici  Si usano “scatole” dentro a cui si possono inserire 8 cifre binarie (nell‟ordine posizionale)  Il più piccolo numero che si può rappresentare è 00000000 (binario ) = 0  Il più grande è 11111111 (binario) = 255  Un numero compreso tra 0 e 255 prende il nome di byte Organizzazione della RAM
    •  Occorre usare più “scatole” contigue  Il più grande numero che possiamo scrivere usando 2 byte è 256 × 256 – 1 = 65.535  Possiamo rappresentare qualsiasi numero, aumentando il numero di “scatole” di memoria contigue. Possiamo rappresentare in modo analogo anche i numeri decimali E per i numeri più grandi di 255? 00000001 01000000 Questa scatola contiene 1; Viene interpretato come 1 × 256 Questa scatola contiene 128 = 384
    • Memoria cache  Le dimensioni della RAM sono limitate, di solito molto minori di quelle disponibili sul solo disco fisso del sistema  Può capitare che determinate operazioni richiedano più RAM di quella disponibile  Il computer può utilizzare porzioni di disco per conservare temporaneamente i dati in eccedenza (caching)
    •  Un computer è capace di gestire informazioni di tipo svariato  Testi  Musica  Filmati  Immagini  …  Come è possibile, se il computer in realtà manipola solo numeri? Come si rappresenta l‟informazione
    •  L‟operazione di digitalizzazione corrisponde alla trasformazione di una certa informazione in numeri  E‟ sempre possibile digitalizzare l‟informazione  Facciamo qualche esempio Digitalizzazione
    • Digitalizzare il testo  A ogni carattere viene associato un numero  Questa operazione può essere fatta in moltissimi modi  Di solito si usa una codifica standard (es. ASCII)  Per l‟alfabeto latino è sufficiente un byte  Il cinese richiede 2 byte (ci sono più di 256 caratteri possibili)
    •  Se “Guerra e pace” di Tolstoj è un testo di 2000 pagine e ogni pagina è composta in media da 2000 caratteri, quanti byte occuperà il file su cui è scritto?  Lo spazio occupato dai file di testo (per esempio in formato Word) è molto maggiore del numero di byte che sarebbero necessari secondo la rappresentazione ASCII. Perché? Domande
    • Digitalizzare il colore  Si utilizza la tecnica dei “colori primari”  Ogni colore può essere scomposto nelle sue componenti Rossa (R), Verde (G) e Blu (B)  Le “quantità” di rosso, verde e blu vengono misurate ciascuna con un singolo byte: 0 = assenza di colore, 255 = colore saturo  I tre byte che ne derivano corrispondono alla codifica RGB
    • Digitalizzare le immagini  L‟immagine viene scomposta in una griglia; ciascun “quadretto” della griglia è detto pixel  Ad ogni pixel viene associato il codice RGB del colore che gli compete  La risoluzione è la misura del numero di pixel che compongono l‟immagine; ad esempio 800 × 600 significa 800 pixel in orizzontale e 600 in verticale
    • La misura dell‟informazione  Il termine “informazione” è usato comunemente, ma la sua definizione precisa è problematica  E‟ come il tempo di s. Agostino: “Se non ci penso, so cos‟è; se comincio a pensarci, non lo so più”  “Cane” contiene dell‟informazione, “Nace” non ne contiene; cosa vuol dire?  Anche se facciamo fatica a definirla, sappiamo misurarla  L‟informazione contenuta in un messaggio dipende dal (minimo) numero di bit necessari per trasmettere quel messaggio
    • Il software  E‟ ciò che realizza la macchina di Turing  Uno dei risultati ottenuti da Turing è che se un problema è affrontabile da una macchina di Turing, è affrontabile da tutte le macchine di Turing  La computabilità è un problema assoluto, non dipende dalla macchina  In sostanza, se le risorse hardware sono sufficienti qualsiasi computer può raggiungere gli stessi risultati  Ovviamente non con le stesse prestazioni!
    • Programmi  Un programma deve essere inteso come la realizzazione pratica di un algoritmo di calcolo  NB: un algoritmo è un oggetto astratto  Un programma invece deve funzionare su una macchina concreta, tenendo conto delle sue caratteristiche hardware  I programmi devono essere riscritti ogni volta che cambia l‟hardware?
    • Linguaggio macchina  Un programma scritto in linguaggio macchina utilizza come primitive del linguaggio codici direttamente interpretabili dalla CPU  Quindi se cambiamo le caratteristiche della macchina fisica dobbiamo riscriverlo!  Si parla di eseguibili  Sequenze di byte che contengono istruzioni direttamente eseguibili dal processore
    • Linguaggi di alto livello  I programmi scritti in questi linguaggi usano primitive “astratte”  Esempi: Basic, C, Java, Pascal...  Essi devono essere “tradotti” in linguaggio macchina per poter essere eseguiti  Un programma “traduttore” prende il nome di compilatore  Disponendo del compilatore giusto, siamo in grado di usare gli stessi programmi di alto livello su qualsiasi macchina
    •  Il processore ha alcuni registri, che funzionano come celle di memoria interne (con la stessa logica delle “scatole”)  Inoltre “sa come fare” certe operazioni di base  Sommare il contenuto di un registro a quello di un altro registro  Copiare in un registro il contenuto di un certo indirizzo di memoria  Copiare in un indirizzo di memoria il contenuto di un certo registro  … Come si realizza la macchina di Turing (1)
    •  Al processore arrivano numeri che corrispondono alla codifica di istruzioni base  Le modalità di invio di questi numeri al processore sono controllate da un “super programma” sempre attivo che si chiama sistema operativo (ne parleremo dopo)  Ad esempio, potrebbe arrivare il codice dell‟istruzione: “trasferisci il contenuto della cella di memoria X nel registro Y”  Ovviamente il processore si aspetta che dopo il codice (numero) dell‟istruzione gli arrivino gli indirizzi X e Y Come si realizza la macchina di Turing (2)
    • Organizzazione delle memorie di massa  Mentre la RAM è ad accesso diretto, le memorie di massa sono tipicamente ad accesso sequenziale  E‟ un relitto dell‟epoca in cui venivano usati nastri magnetici: per leggere un valore su un nastro lo devo svolgere fino al punto che mi interessa  File: concettualmente insiemi ordinati di byte, memorizzati su un supporto di massa, che nel loro insieme contengono una certa informazione (ne parleremo dopo)  Un documento, un programma, una presentazione PowerPoint...
    • Compressione dell‟informazione  La digitalizzazione dell‟informazione comporta in molti casi uno “spreco di spazio”  Esempio:  Ho un‟imagine di 1000 x 1000 pixel (= un milione di pixel)  Se servono 3 byte per ogni pixel, l‟immagine occuperà 3 milioni di byte  Supponiamo che l‟immagine sia tutta bianca...  Si usano diverse tecniche per comprimere l‟informazione  Ad esempio, nel caso delle immagini il formato “completo” è .bmp, mentre il formato .jpg è compresso
    • Il Sistema Operativo (OS)  E‟ il componente software fondamentale di qualsiasi computer  Viene caricato nel momento in cui il computer viene acceso (bootstrap)  Rimane attivo finché il computer non viene spento
    • Che cosa fa l‟OS  Gestisce tutte le operazioni interne  Gestisce l‟input e l‟output dell‟utente  Gestisce il trasferimento di dati tra la RAM e la CPU  Gestisce il caricamento di file  Gestisce le periferiche  ...
    • Modello “onion skin”
    • Gestione dei processi  (Process/Thread management)  Un processo può essere visto come un “esecutore di programmi”  Un programma eseguibile scritto in un file è comunque un oggetto statico  Un processo carica un programma, e lo gestisce dinamicamente in funzione dei dati che deve trattare, dell‟input dell‟utente ecc.
    • Thread  Può essere inteso come “sotto processo”  Alcuni thread possono essere utilizzati da più programmi  Lettura e scrittura fisica sul disco  Stampa  Gestione dei suoni, delle immagini...
    • Il File System  Determina la struttura e l‟organizzazione dei file su un disco  Il problema è molto più complesso di come può apparire  Non è possibile che i file siano scritti “in sequenza”  Se modifico un documento Word e poi lo salvo, la sua lunghezza sarà diversa dall‟originale; se i file fossero scritti in sequenza dovrei spostare N gigabyte di informazione!
    • File fisico e file logico  Dal punto di vista logico, un file è effettivamente una successione finita di byte  Dal punto di vista fisico, esso viene scritto sul disco per “frammenti” (dove c‟è spazio)  Uno degli aspetti di cui si occupa il File System è una tabella descrittiva che permette di ricostruire i frammenti (NB: in modo dinamico)
    • Organizzazione gerarchica  Il File System è di norma organizzato in modo gerarchico  Dal punto di vista dell‟utente, questo corrisponde all‟organizzazione in cartelle e sotto-cartelle  Nel caso del sistema operativo Windows, la tabella utilizzata dal File System prende il nome di FAT (File Allocation Table)
    • Interfaccia con l‟utente  In passato (ancora adesso in alcuni sistemi) era basata su stringhe di comando (Command Line Interface)  Oggi sono prevalenti le GUI (Graphic User Interface)  Esempi: Windows, Macintosh...
    • Paradigma GUI  What You See Is What You Get (WYSIWYG)  Non è l‟utente che si adatta alle esigenze del computer (interfaccia a comandi), ma il computer che offre all‟utente un‟interfaccia “intuitiva”  Uso del mouse per puntare gli oggetti  Icone che rappresentano file ed eseguibili  Finestre  Metafora della “scrivania”
    • Dispositivi touch  Gli oggetti possono essere letteralmente “toccati”  L‟interfaccia cambia a seconda del contesto  Le uniche operazioni che l‟utente può fare sono quelle consistenti con la situazione operativa in cui si trova  Una volta non era vero; esempio: menu
    • Indice  Introduzione  Algoritmi  Come è fatto un computer  Reti di computer  Internet 
    •  Due computer sono in rete se sono connessi tra loro (in qualche modo) in modo tale che possano scambiarsi dati  Le esigenze sono molteplici:  Aumentare (di fatto) le capacità di calcolo  Scambiare informazioni in un certo contesto lavorativo  Centralizzare le informazioni (es, un database, un insieme di documenti “master”…)  Avere accesso alle stesse periferiche da diversi computer (ad es. stampanti)  … Le reti di computer
    •  Il concetto di rete di computer nasce sostanzialmente all‟inizio degli anni ‟60  Gli sviluppi tecnologici dell‟epoca permettono finalmente di realizzare un accesso interattivo ai computer attraverso terminali  In precedenza i computer funzionavano sostanzialmente in modalità batch  L‟input avveniva attraverso schede perforate  L‟output era costituito da stampe (nella maggior parte dei casi…) Cenni storici (1)
    •  Le reti coprono bisogni di base delle aziende e delle strutture pubbliche  Rappresentano un elemento fondamentale (a volte determinante) in moltissime situazioni  Per questo motivo, dagli anni ‟60 ad oggi la loro importanza è cresciuta senza soluzione di continuità Cenni storici (2)
    • Tipologie di reti  LAN = Local Area Network  Rete interna a una struttura (azienda, ente pubblico, università, aula universitaria…) di solito localizzata nello spazio  WAN = Wide Area Network  Rete interna a una struttura, ma distribuita su aree geografiche vaste (es: multinazionali, reti intercontinentali)
    • Server e client  Server = computer “direttore d‟orchestra”, con a bordo il sistema operativo di rete, che coordina tutte le attività (distribuzione di dati, risorse condivise…)  Client: computer connesso alla rete, che utilizza il server per le operazioni necessarie  Da non confondere con: architettura client- server  Un componente software gira sul server (componente server), un altro gira sui client (componente client)
    •  Per connettere tra loro due computer (ma anche due telefoni) occorre che ci sia un mezzo fisico che trasporta i segnali  Cavi elettrici  Cavi ottici (fibra ottica)  Onde elettromagnetiche  Il collegamento può essere effettuato anche con mezzi “misti”  Esempio: con Fastweb mi connetto al sito della NASA, che è su un server negli Stati Uniti  Dal mio computer alla centralina Fastweb: cavo  Dalla centralina Fastweb al server Fastweb: fibra ottica  Dal server Fastweb al server della NASA: satellite Connessioni fisiche
    • Comunicazione attraverso messaggi Ready to get my data? Yes...  Protocolli di comunicazione
    • Protocolli  Un protocollo è un insieme di regole che stabiliscono il formato dei messaggi che i computer si scambiano in rete  L‟uso dei protocolli rende la comunicazione indipendente dall‟hardware (posso connettere un telefonino e un Cray)  Domanda:  Il mondo Internet è dominato da un numero impressionante di protocolli diversi:  TCP/IP, POP, IMAP, SMTP, HTTP, HTTPS, WAP,...  Perché sono necessari tutti questi protocolli? Non ne basterebbe
    • Standardizzazione dei protocolli  Fino alla fine degli anni „70 la standardizzazione era stata definita solo in parte  Nel 1978 è stato definito lo standard ISO/OSI (o semplicemente OSI)  Non è un protocollo, ma una “regola delle regole” a cui i protocolli devono attenersi
    • Lo standard OSI (Open Systems Interconnection)  E‟ fatto a “strati” o “livelli” (layer) – In gergo si parla di “stack OSI”  Ogni “strato” si occupa di un particolare “aspetto” della comunicazione  Esempio: livello base (livello “fisico”)  tensioni scelte per rappresentare le cifre binarie 0 e 1  durata del segnale elettrico che identifica un bit  possibilità che il segnale sia bidirezionale  eccetera
    • Un processo “a strati” (1)  Gestione di una lettera (tradizionale):  Scrivo la lettera  La metto in una busta e la affranco  La metto nella cassetta postale  L‟ufficio postale la prende e legge l‟indirizzo  Tutte le lettere per la stessa destinazione vengono messe nello stesso sacco  Ogni sacco viene mandato a destinazione  L‟ufficio postale di destinazione apre tutti i sacchi  Il postino distribuisce le lettere
    • Un processo “a strati” (2) Mittente/destinatario Ufficio postale Trasporto
    • Un processo “a strati” (3)  I componenti dei singoli strati “comunicano” soltanto tra loro e si occupano solo di alcuni aspetti  Mittente e destinatario sono interessati al contenuto della lettera  Gli uffici postali di partenza e di arrivo sono interessati all‟indirizzo,ma non al contenuto  Le stazioni ferroviarie sono interessate al carico e scarico dei pacchi...  Ciascuno strato si interfaccia con il precedente e il successivo
    • Il sistema evolve... Mittente/destinatario Ufficio postale Trasporto
    • Indice  Introduzione  Algoritmi  Come è fatto un computer  Reti di computer  Internet
    • Internet  Nata essenzialmente per esigenze militari (Arpanet)  Un requisito specifico era quello di creare una rete priva di un “centro” attaccabile dal nemico  E‟ il risultato dell‟aggregazione di reti diverse, talvolta anche tecnicamente differenti.  Piccole reti locali (LAN) sono collegate a reti metropolitane e territoriali (WAN) che a loro volta sono collegate alle dorsali (Backbone), che trasportano i dati per il mondo intero.
    • Arpanet 1969 1971 1973 1975
    • Internet - Paesi connessi (1997)
    • Problemi fondamentali  Fare in modo che la trasmissione dei dati non debba ricominciare dall‟inizio se “cade la linea”  Fare in modo che ci siano più percorsi che connettono due computer  Fare in modo che la “direzione dell‟orchestra” non sia affidata a un unico computer  Come si fa a indirizzare i dati verso un particolare computer della rete?
    • Commutazione  Il problema dell‟indirizzamento accomuna Internet e le centrali telefoniche  In generale, se ho N “utenti” dovrei tirare un numero di “fili” pari al numero degli utenti per permettere a tutti di parlare con tutti  In realtà i fili crescono con il quadrato del numero degli utenti…  Numero di fili = N x (N-1) / 2  Tecniche di commutazione
    • Commutazione di circuito  In passato era realizzata via hardware  Le cifre del numero di telefono individuano insiemi di utenti sempre più piccoli  La struttura della rete di commutazione è ad albero  Invece che col quadrato di N, il numero di fili cresce (circa) con N
    •  Il file viene suddiviso in componenti di circa 1 Kb (pacchetti)  Ad ogni pacchetto viene associata un intestazione che specifica il suo numero d‟ordine  Ad ogni pacchetto viene associato l‟”indirizzo” del mittente e del destinatario Internet - Commutazione di pacchetto
    • Protocollo di base: TCP/IP  TCP (Transmission Control Protocol) corrisponde al layer 4 dell‟OSI:  Costruzione dei pacchetti, trasmissione/ricezione, ricostruzione dei dati  IP (Internet Protocol) corrisponde al layer 3 dell‟OSI:  Indirizzamento (Routing)  I pacchetti vengono immessi nella rete come bottiglie nell‟oceano  Come funziona questo “miracolo”?
    • L‟Internet Protocol (IP)  Nel momento in cui un pacchetto arriva a un certo server, esso si domanda se il destinatario fa parte della sua stessa famiglia  Se la risposta è positiva, manda il messaggio a qualsiasi server che faccia parte della sottofamiglia del destinatario  Altrimenti lo manda a qualsiasi server che faccia parte della famiglia principale
    • Indirizzi IP (concetto base) Esempio di indirizzo IP di classe C – 4 byte 193.205.20.70 Subnet (identificativo della rete) Computer di destinazione
    • IPv6  Quella che abbiamo visto era la struttura di un indirizzo IP dei primordi della rete (cosidetto Ipv4)  Essa permette di disporre al massimo di 2128 indirizzi diversi (approssimativamente 4,3 miliardi)  Non bastano più!  Si sta passando a una gestione degli indirizzi a 16 byte (IPv6)  Permette di indirizzare 2128 = 3,4x1038 (circa) nodi diversi
    • Una rete a commutazione di pacchetto Sorgente Router 1 Router 2 Router 3 Router 4 Router 5 Router 6 DestinazioneRouter 7
    • La realtà... L‟immagine mostra una porzione di Internet costituita da 535.000 nodi e più di 600.000 links WALRUS Visualization tool, 2001 http://www.caida.org/tools/visualization/walrus/
    • Problemi fondamentali risolti  Fare in modo che la trasmissione dei dati non debba ricominciare dall‟inizio se “cade la linea”  Non esiste una “linea” che possa cadere. Se qualche pacchetto viene perso, il sistema ne chiede nuovamente l‟invio  Fare in modo che ci siano più percorsi che connettono due computer  Qualsiasi computer della rete è in grado di indirizzare i pacchetti  Fare in modo che la “direzione dell‟orchestra” non sia affidata a un unico computer  Non c‟è più un direttore d‟orchestra; il sistema funziona “per conto suo”. NB: è un concetto che riprenderemo
    • DNS (Domain Name System)  Gli indirizzi IP sono mappati in apposite tabelle di conversione  Le tabelle sono note ai server sul backbone (DNS server)  Organizzazione gerarchica:  SERVER.DOMAIN.TLD (“top level domain”)  NB: “a rovescio” rispetto all‟indirizzo IP (la famiglia più grande è a destra)  Esempio  www.unimib.it
    • Uniform Resource Locator (URL) (1)  L‟individuazione del server non è l‟unico problema legato all‟accesso  Un server di solito contiene molti dati che un utente di Internet vorrebbe poter scaricare  Uniform Resource Locator (URL)  risorsa = qualsiasi cosa sia raggiungibile attraverso Internet  Un URL specifica con precisione sia il server, sia la risorsa in questione
    • Uniform Resource Locator (URL) (2)  E‟ una stringa di caratteri strutturata nel seguente modo:  Protocollo da usare  (opzionalmente) Nome e password dell‟utente che richiede l‟accesso  Nome del server  Percorso del file da raggiungere  Eventualmente dati relativi alla query da eseguire.  Esempio: http://www.psicologia.unimib.it/01_iscriversi/index.php  http è il protocollo  www.psicologia.unimib.it è il nome del server nel DNS  index.php è il file che contiene i dati da visualizzare nel server specificato.
    • Il collegamento a Internet  Per connettersi a Internet è necessario stipulare un contratto con un Internet Service Provider (ISP)  Il contratto può essere gratuito o oneroso a seconda delle modalità del servizio offerto dal provider  Il costo della linea che connette l‟utente con il provider può essere fisso (tariffa “flat”) o variabile (scatti telefonici) ed è comunque indipendente dalla localizzazione geografica del server a cui ci si vuole collegare
    • Connessione a Internet LANLAN locallocal “m odem ”“m odem ” routerrouter LANLAN locallocal “m odem ”“m odem ” routerrouter ISPISP networknetwork InternetInternet ServiceService ProviderProvider ISPISP networknetwork InternetInternet ServiceService ProviderProvider ISPISP networknetwork InternetInternet ServiceService ProviderProvider f i r e w a l l firewall: software per filtrare pacchetti IP e/o indirizzi
    • I servizi di Internet  Internet è essenzialmente una rete fisica  Dotata di specifico software di rete: sistemi per gestire il TCP, l‟IP, DNS...  Serve perché offre dei servizi ai suoi utenti; i principali sono  World Wide Web  Posta elettronica  Trasferimento di file  Audio e video streaming  Peer-to-peer  ...
    • Protocolli applicativi  Ciascun servizio utilizza (in linea di principio) uno o più protocolli dedicati:  WWW: HTTP, HTTPS  Posta: SMTP, POP, IMAP  Trasferimento di file: FTP  ...  Si parla di protocolli applicativi