Indice Che cos’è l’informatica Storia del computer Algoritmi Reti di computer e Internet (cenni) Il Web
Premessa Oggi l’informatica è ovunque
Centraline delle auto Lavatrici Centrali telefoniche Sistemi robotizzati …
A volte non ce ne accorgiamo, ma ormai viviamo in simbiosi con sistemi informatici di ogni tipo
Le rivoluzioni informatiche Prima rivoluzione informatica: dalla fine
degli anni ‘70 del 900 Il computer si trasforma in un oggetto di
uso comune
Seconda rivoluzione informatica: dalla metà degli anni ‘90 del 900 Internet e i suoi servizi
Significato delle rivoluzioni informatiche
Hanno cambiato del tutto le nostre esistenze
Nel loro insieme, sono paragonabili al passaggio dal paleolitico al neolitico
Differenza: anziché millenni, hanno richiesto poche decine di anni
Problemi Le rivoluzioni informatiche non sono
ancora state “metabolizzate” in senso culturale Esempio: digital divide
Siamo tuttora in fase “esplosiva” Nessuno ha veramente idea di cosa ci
riserverà il futuro, anche prossimo
In generale - processi automatici Processi ripetitivi, spesso molto lunghi
da eseguire, “meccanici” (che non richiedono “intelligenza”, per come la intendiamo comunemente)
Esempio: mettere in ordine 1.000 documenti
Calcolo automatico E’ solo un aspetto del problema
Tuttavia è importante, perché è stato il punto di inizio della rivoluzione informatica
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
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
Sistema posizionale (1)17
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 numero3452
unitàdecinecentinaia
migliaia
Sistema posizionale (2)18
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 decimale19
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.
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
Teoremi sui sistemi posizionali in base N20
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
Esempi di sistemi di numerazione non decimali
21
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
Il sistema di numerazione binario
22
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é?
Perché il sistema binario23
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 dell’algebra di Boole
George Boole (1815 – 1864) Sviluppa un’algebra
delle proposizioni
Espone i suoi risultati in un celebre libro intitolato Indagine sulle leggi del pensiero
L’algebra di Boole è alla base della logica moderna
Algebra di Boole25
Piove e fa freddo è vera solo se piove e anche fa freddo
Piove o fa freddo è vera se piove, se fa freddo o anche se piove e fa freddo
Se piove allora fa freddo è falsa solo nel caso in cui piove ma non fa freddo
In generale è basata sui valori VERO o FALSO che una proposizione può assumere
Operazioni di composizione interna Dato un insieme, un’operazione di
composizione interna associa a due elementi (ordinati) dell’insieme un terzo elemento dell’insieme
Somma: 5+2 = 7 (Insieme dei numeri interi)
AND: V AND F = F (Insieme V, F)
Connettivi fondamentali28
E (AND): la proposizione risultante è vera se e solo se sono vere entrambe le proposizioni argomento Piove e fa freddo
O (OR): la proposizione risultante è vera se è vera una qualsiasi delle proposizioni argomento Piove o fa freddo
NON (NOT): la proposizione risultante è vera solo se la proposizione argomento è falsa Non piove
Tavole di verità
Connettivo ANDP1 P2 P1 AND P2F F FF V FV F FV V V
Connettivo ORP1 P2 P1 OR P2F F FF V VV F VV V V
Connettivo NOTP1 NOT P1F VV F
Espressioni Aritmetiche: le operazioni possono
essere eseguite in catena 2 X (7 + 5) = 24
Logiche: i connettivi possono essere applicati in catena V AND (V OR F) = V
Connettivi composti Esempio: implicazione (SE piove ALLORA
fa freddo) Si indica con =>
In termini di connettivi fondamentali: A => B equivale a: (NOT A) OR BConnettivo =>
P1 P2 P1 => P2F F VF V VV F FV V V
(NOT P1) OR P2P1 NOT P1 P2F V F VF V V VV F F FV F V V
Circuiti logici Le cifre binarie si prestano molto bene a
essere rappresentate mediante circuiti 1: passa corrente 2: non passa corrente
Un connettivo logico diventa un circuito in cui entrano due fili e ne esce uno La corrente in uscita dipende dalle correnti
in ingresso secondo il tipo di connettivo
Codice binario e connettivi logici
36
Numerici 1 + 1 = 10 111 + 1 = 1000 10 × 10 = 100
Logici 1 AND 1 = 1 0 OR 0 = 0 1 → 0 = 0
Come si fa a rappresentare l’informazione?
37
Un computer (lo sanno tutti) è capace di gestire informazioni di tipo svariato Testi Musica Filmati Immagini …
Come è possibile, se il computer in realtà manipola solo numeri?
Digitalizzazione38
L’operazione di digitalizzazione corrisponde alla trasformazione di una certa informazione in numeri
E’ sempre possibile digitalizzare l’informazione
Facciamo qualche esempio
Digitalizzare il testo39
A ogni carattere viene associato un numero
Questa operazione può essere fatta in moltissimi modi Di solito si usa una codifica
standard (ASCII)
Per l’alfabeto latino è sufficiente un byte
Il cinese richiede 2 byte (ci sono più di 256 caratteri possibili)
Domande40
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é?
Digitalizzare il colore41
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 immagini42
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
Compressione dell’informazione
43
La digitalizzazione 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
Indice Che cos’è l’informatica Storia del computer Algoritmi Reti di computer e Internet (cenni) Il Web
Charles Babbage (1791 – 1871) 45
Anticipatore delle idee moderne sulle macchine calcolatrici
Progetta un calcolatore programmabile, che non riuscirà mai a realizzare
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)
Che cos’è un algoritmo47
In generale: procedimento che porta a un risultato
Esempio. Per preparare la pasta con le vongole:
Mettere le vongole in acqua salata per circa un ora Metterle in una padella e scaldare finché si aprono Buttare via quelle ancora chiuse Filtrare l’acqua che rimane sul fondo Scaldare aglio e peperoncino in olio Aggiungere le vongole A fine cottura, aggiungere il prezzemolo e l’acqua filtrata Condire la pasta
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
File52
Un file non è altro che la sequenza dei byte che corrisponde all’informazione digitalizzata
Logicamente è una sequenza continua, ma fisicamente può essere scritto in spazi separati del disco
Il cosiddetto file system contiene la mappa che permette al computer di sapere dove sono scritte fisicamente le informazioni (in generale descrive la struttura dei dati sul disco)
Come si realizza la macchina di Turing (1)
53
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 (2)54
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
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 (3)55
Questo significa che anche un programma, dal punto di vista interno della macchina, non è altro che una successione di numeri (le istruzioni in codice seguite dagli eventuali attributi, ad es. gli indirizzi X e Y)
Il concetto di file unifica quindi informazioni e programmi Si parla di file eseguibile per intendere un file che
contiene un programma In Windows li distinguete dall’estensione: .exe, .bat…
La nascita del computer moderno 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
Processore (CPU) Esegue tutte le
operazioni elementari (poche e semplici)
Velocità tipica per un computer commerciale di oggi: un miliardo di operazioni al secondo
Periferiche di I/O Tutto ciò che
serve per immettere dati nel computer, e per ricevere i dati elaborati
Tastiera, mouse, stampante, scanner, plotter…
Transistor E’ un “interruttore”
controllato da un segnale elettrico
Primo prototipo funzionante: 1947
Ha permesso di realizzare le porte logiche
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
Gli Office Productivity Tool (OPT)
66
Word processing (videoscrittura) Il PC è in grado di fare le stesse cose che fino a quel
momento potevano essere fatte con workstation dedicate
Foglio elettronico Primo esempio: VisiCalc (fine anni ‘70)
Programmi per la gestione di database All’inizio solo flat-file, relazionali dalla metà degli anni
’80 (dBase)
Programmi per l’editing di immagini
L’esplosione del computer67
Il computer è il business della fine del millennio Mercato potenziale: miliardi di pezzi Indotto: stampanti, monitor, programmi software, corsi,
consulenza...
Nel 1983 il programma per videoscrittura WordStar supera il milone di copie vendute
Tuttavia molti utenti potenziali sono respinti dall’idea che il computer sia difficile da usare
Questo fornisce una spinta decisiva all’innovazione nel campo delle interfacce con l’utente
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 Che cos’è l’informatica Storia del computer Algoritmi Reti di computer e Internet (cenni) Il Web
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 tazzina2. Riempila per tre volte di riso, in modo che sia
colma3. Riempila per sette volte di brodo, in modo che sia
colma4. 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 72. Sposta la cifra successiva a sinistra di una
posizione3. 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 tazzina2. Riempila per tre volte di riso, in modo che sia colma3. Riempila per sette volte di brodo, in modo che sia colma4. 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 numero2. Scrivi il secondo numero sotto il primo, in
modo che le cifre siano allineate a destra 3. Parti dalla prima cifra a destra4. 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 inferiore8. Somma al risultato quello che stai tenendo a
mente9. Se il totale è minore di 10, scrivilo e tieni a
mente 010. altrimenti, scrivi la cifra delle unità del totale,
e tieni a mente la cifra delle decine11. Torna al passo 512. Se il numero che stai tenendo a mente è
diverso da 0, scrivilo13. 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
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/OAzione 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 difficile Il nostro cervello funziona in modo
algoritmico? Se sì, i processi mentali sono deterministici Dunque il “libero arbitrio” non esiste
Indice Che cos’è l’informatica Storia del computer Algoritmi Reti di computer e Internet (cenni) Il Web
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
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
uno?
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 esempio – per capire (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 esempio – per capire (2)
Layer “mittente”
Layer “ufficio postale”
Layer “trasporto”
Layer “arrivo a destinazione”
La posta si organizza meglio...
Layer “mittente”
Layer “ufficio postale”
Layer “trasporto”
Layer “arrivo a destinazione”
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.
129
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?
132
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 commutazione133
Telefonia - Commutazione di circuito134
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
Internet - Commutazione di pacchetto135
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
Protocollo di base: TCP/IP136
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)137
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
138
Indirizzi IP (concetto base)
Esempio di indirizzo IP di classe C
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 (cosiddetto Ipv4)
Essa permette di disporre al massimo di 232 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
140
Una rete a commutazione di pacchetto
Sorgente Router 1
Router 2
Router 3
Router 4
Router 5
Router 6
DestinazioneRouter 7
Problemi fondamentali risolti
142
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)
143
Gli indirizzi IP sono mappati in apposite tabelle di conversione
Le tabelle sono note a tutti i server sul backbone
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)
144
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)
145
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 Internet146
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 Internet147
LANLAN
locallocal “modem” “modem”
routerrouterLANLAN
locallocal “modem” “modem”
routerrouterI SP I SP
networknetwork
I nternetI nternetServiceServiceProviderProvider
I SP I SP networknetwork
I nternetI nternetServiceServiceProviderProvider
I SP I SP networknetwork
I nternetI nternetServiceServiceProviderProvider
firewall
firewall: software per filtrare pacchetti IP e/o indirizzi
Servizi di rete148
Una rete è utile in quanto offre ai suoi utenti un certo numero di servizi
Si intende, in generale, la possibilità di accedere a un certo ambito applicativo
Esempio: in una rete aziendale: Accesso a stampanti di rete Accesso a cartelle condivise Intranet …
I servizi di Internet - Classificazione
149
Non è né semplice né univoca
Si possono classificare sulla base dei protocolli richiesti World Wide Web (ce ne occuperemo in seguito) Posta elettronica Trasferimento file Peer-to-peer Telefonia e videotelefonia Altri (ad esempio, Second Life…)
Posta elettronica150
Richiede protocolli dedicati POP, IMAP per la ricezione SMTP per la trasmissione
Dal punto di vista mediatico non è semplicemente un’estensione dell’ordinaria posta Velocità istantanea del servizio Gratuita (a parte il costo dell’ISP)
Posta elettronica vs. posta tradizionale151
Uso dei campi CC e CCN “Copia conoscenza” e “Copia conoscenza
nascosta”) Uso di mailing list Priorità dei messaggi Return receipt Allegati
Trasmissione e ricezione della posta
152
Programmi specifici In passato il “best seller” era Eudora Oggi domina Outlook Tipicamente permettono di gestire InBox, OutBox, Box
per messaggi salvati ma non ancora inviati, cartelle (e sottocartelle) in cui organizzare i messaggi ricevuti
Servizi accessibili dal browser (Web Mail) Webmail Gmail Hotmail …
Problemi della posta elettronica: virus153
Gli allegati di posta sono stati in passato i canali principali di diffusione
Oggi non è più vero E’ possibile contrarre virus anche
semplicemente visitando un sito infetto
Come difendersi? Antivirus In ogni caso: navigare con prudenza
Problemi della posta elettronica: Netiquette
154
Significa “regole di buona educazione in rete”
In generale: evitare qualsiasi comportamento che possa arrecare danno o disturbo ai vostri corrispondenti Inserire sempre il titolo delle mail Evitare di trasferire 20 gigabyte di allegati, o per lo
meno avvisare chi deve ricevere il messaggio! Evitare l’abuso dei messaggi di alta priorità In linea di principio, rispondere alle mail ricevute …
Problemi della posta elettronica: spam155
Con questo termine si intende qualunque messaggio non desiderato
Si va dalla pubblicità a vere e proprie truffe
Un esempio tipico: ricevete dalla vostra banca (apparentemente) un messaggio in cui vi si chiede di andare su un certo sito e immettere i vostri dati
Trasferimento file (FTP)156
FTP = File Transfer Protocol
Permette di realizzare attraverso Internet la connessione diretta a un server
Fornisce al’utente la visibilità di cartelle (e sotto cartelle) condivise
Accesso attraverso browser o programmi dedicati (es WS_FTP)
FTP: vantaggi157
Permette di centralizzare documenti su server rendendoli accessibili da qualsiasi postazione nel mondo Esempio: personale aziendale in missione
Semplice da usare, non richiede competenze tecniche per la connessione
Veloce, non ci sono limiti di spazio
Peer-to-peer (1)158
Tutti i nodi sono “pari”, e fanno da client e da server
File sharing
Esempi: μTorrent, eMule
Sviluppi possibili: diffusione di film e programmi televisivi (in parte già realizzato)
Peer-to-peer (2)159
Come si fa a sapere dove sono i dati? Ci sono due soluzioni
1. Alcuni computer della rete violano la regola del peer-to-peer e di fatto fanno da server Tali computer includono database che associano le risorse
disponibili ai nodi Nel momento in cui si effettua il download, si entra
effettivamente in modalità peer-to-peer
2. Tecnica torrent: i file scaricati sono indici che specificano quali sono i nodi della rete che contengono determinate risorse.
Ascesa e caduta del peer-to-peer?
160
Il traffico P2P è cresciuto con continuità fino al 2009, poi ha mostrato segni evidenti di flessione
Ad esempio, una statistica del 2006 sosteneva che i volumi di dati scambiati in modalità P2P fossero più della metà di tutto il traffico Internet (Web + posta + FTP +…)
Un’altra statistica (dell'osservatorio di ricerca Nielsen): gli utenti peer-to-peer italiani sono passati dai 6,7 milioni di luglio 2009 ai 4,9 milioni di luglio 2010
P2P: Perché è in declino?161
Ci sono almeno due motivi La pressione esercitata dalle major, che
ovviamente temono il dilagare del fenomeno, e spingono perché gli stati si dotino di soluzioni legali per arginarlo
La crescente importanza di altri canali per la diffusione di musica e filmati; in particolare lo streaming su Web
La gara tra P2P e streaming può essere vista come una competizione “genetica” L’utenza esercita una “pressione selettiva”;
sembra evidente che la modalità streaming goda di un piccolo vantaggio…
Telefono e videoconferenza via Internet162
Usano prevalentemente il protocollo VoIP (Voice over IP)
Esempi MSN Messenger (oggi Windows Live
Messenger di Microsoft) Skype Yahoo Messenger
VoIP – Servizi tipici163
Telefonate, anche in conferenza Chiamate a cellulari e rete fissa Trasferimenti di chiamate, segreteria telefonica…
Video chiamate e video conferenze
Chat, SMS, MMS
Condivisione del desktop tra più utenti
Gestione di rubriche
Ricerca di utenti
VoIP: vantaggi164
Costo bassissimo o addirittura nullo per l’utente Esempio: il costo della telefonata non
dipende più dalla distanza; telefonare a Milano o a Sidney ha gli stessi costi
Non richiede un’infrastruttura dedicata diversa da quella già fornita dalla rete Internet Quindi il costo è bassissimo anche per il
provider!
Telefonia fissa165
Prima dell’era del computer: centrali elettromeccaniche
Dall’avvento del computer: centrali completamente gestite via software Commutazione Istradamento Billing (tariffazione) Manutenzione ….
Telefonia fissa - Servizi166
Anche il telefono fisso è in evoluzione
Non si tratta più soltanto di supportare una chiamata, ma di offrire agli utenti una miriade di servizi aggiuntivi, impensabili prima dell’era dell’informatica Follow me Visualizzazione del chiamante su display Segreteria telefonica Spese mensili …
Telefonia mobile167
Sostanziale la ricaduta tecnologica a seguito degli sviluppi dell’hw e del sw
Le generazioni dei telefoni cellulari: Inizio anni ‘80: TACS (1G) Inizio anni ‘90: GSM (2G) Fine anni ‘90: UMTS (3G) 2012: The Next Thing (4G)
Come funziona168
Il terminale (telefonino) è una radio ricetrasmittente
Si connette con la più vicina antenna del sistema mobile
L’hw e il sw associati all’antenna si occupano di istradare la chiamata
Opportune interfacce connettono il sistema alle centrali della rete fissa e alla rete Internet
Le celle del sistema Il territorio viene
virtualmente suddiviso in celle (da cui “telefonia cellulare”)
Al centro di ciascuna cella si trova un’antenna
Il sistema si occupa automaticamente di connettere il terminale mobile all’antenna più vicina (handover)
1G: TACS Sta per Total Access
Communication System
Introdotto negli Stati Uniti nel 1979 e in Europa nel 1981
Permetteva soltanto la trasmissione della voce
Usava segnali analogici
Motorola DynaTac 8000x, 1983Peso = 800 g, lunghezza = 25 cm,
costo = 3895 dollari
2G: GSM172
E’ tuttora in uso
Tecnologia digitale
Ha introdotto gli SMS (Short Message System), che più tardi si sono evoluti in MMS (Multimedia Messaging Service)
Dall’introduzione del protocollo WAP ha permesso la connessione a Internet
3G: UMTS173
E’ lo standard più avanzato disponibile oggi
La copertura non è ancora capillare come quella del GSM (che di fatto non è ancora morto)
Permette videochiamate, connessione a Internet, invio e ricezione di immagini, filmati ecc.
4G: il futuro (?)174
Invio e ricezione di dati su banda larga
Possibilità di ricevere trasmissioni in streaming di alta qualità
Attualmente attivo in Italia solo in alcune città
Gli SMS175
La nascita del sistema SMS è curiosa e interessante
Gli SMS vennero pensati in origine per permettere la trasmissione di brevi messaggi ad uso e consumo del personale che gestiva il sistema
A qualcuno venne in mente di renderli accessibili anche agli utenti finali
Magari se ne faranno qualcosa, pensarono… Volumi totali: nel 2000, 17 miliardi di messaggi worldwide,
nel 2004 sono diventati 500 miliardi
L’evoluzione dei terminali176
Ha avuto un’importanza non minore di quella delle reti di telefonia mobile
Già dal TACS al GSM si era passati da oggetti scomodi e ingombranti a telefonini che potevano essere messi nel taschino della camicia
Il passo successivo è avvenuto all’insegna dellaCONVERGENZA
di tecnologie diverse
Computer palmari177
Cioè computer che stanno nel palmo della mano
Detti anche PDA (Personal Digital Assistant)
Primo esempio di palmare: MessagePad di Apple (1993) Scarso successo commerciale
Concepito come “computer da viaggio”, ad uso dei manager Tra le funzionalità fondamentali, la possibilità di caricare e
scaricare dati da altri computer attraverso porte infrarosse e Bluetooth
Convergenza178
Telefonia mobile + Palmare = Smartphone
E’ un PDA con capacità telefoniche, oppure un computer con telefono incorporato? Entrambe le cose
Caratteristica fondamentale: possibilità di installare applicativi Che possono essere prodotti dalla casa madre o
da terze parti (dipende dagli smartphone)
Esempi179
Blackberry
Windows phone
iPhone di Apple Lanciato il 29 giugno 2007 Il 10 settembre dello stesso anno la Apple
annunciò di avere venduto un milione di esemplari In versione 3G (2008), lo stesso risultato è stato
raggiunto a tre giorni dal lancio!
iPhone Può essere
considerato oggi lo standard di questa classe di dispositivi
E’ al punto di convergenza tra telefonino, PDA e iPod (lettore musicale)
Le App181
Applicazioni (programmi) per smartphone Mobile App: installata sul terminale Web App: il software risiede su qualche
server della rete
Strumenti di accesso a Internet alternativi al browser
Geolocalizzazione Sistema GSM (Global Positioning System)
Realizzato attraverso una rete di satelliti geostazionari
I satelliti inviano segnali; il terminale li riceve ed è in grado di effettuare una triangolazione
Navigatori
Forte integrazione con le App
Indice Che cos’è l’informatica Storia del computer Algoritmi Reti di computer e Internet (cenni) Il Web
Il World Wide Web184
Un immenso ipertesto multimediale, costruito con il supporto della rete Internet
E’stato inventato da Tim Berners Lee nel 1990, nell’ambito di un progetto di ricerca al CERN di Ginevra
La “bolla” delle dot-com (1)186
Dot-com: un’azienda che realizza la maggior parte del suo business attraverso internet
Nella seconda metà degli anni ’90, a partire dallo straordinario lancio in borsa di Netscape, e per la grande disponibilità di venture capital, furono create numerosissime dot-com, con l’obiettivo di un rapido collocamento in borsa
Molte avevano un business model del tutto irrealistico
Ne seguì una “bolla” speculativa al Nasdaq, che culminò con il picco del 10 marzo 2000 (indice: 5132), e successivo crollo, con fallimenti a catena che paralizzarono le iniziative per diversi anni
La “bolla” delle dot-com (3)188
Vale la pena di esaminare quello che è successo più in dettaglio
Nelle due slide che seguono sono presentati dati “vecchi” (fino al 2002 – 2003) relativi al numero di siti Web e al numero di host internet (rete fisica)
La crescita del web nel mondo (1)
191
Crisi della new economy(2000 – 2003)
Boom dei blog (2007)
60% del totale
La crescita del web nel mondo (2)
192
Il grafico evidenzia come il Web abbia superato la bolla del 2000
La discesa è evidente, tuttavia il trend di crescita è ripreso
Evoluzione del Web193
A partire dagli inizi del secolo, l’importanza dei siti nati a scopo comunicativo è andata crescendo rispetto ai siti uno a molti
A partire dal 2004 è diventato evidente che la modalità comunicativa principale nel Web non era più di tipo uno a molti Si è cominciato a parlare di “Web 2.0” per
intendere l’insieme dei siti il cui scopo fondamentale era quello di realizzare un nuovo tipo di modalità comunicativa molti a molti
Web 2.0194
Il termine “Web 2.0” è stato lanciato dalla prima O’Reilly Media Web 2.0 Conference (Ottobre 2004)
Da allora ne sono state date molte definizioni
Esempio: Wikipedia Si tende ad indicare come Web 2.0 l'insieme di tutte quelle
applicazioni online che permettono uno spiccato livello di interazione sito-utente (blog, forum, chat, sistemi quali Wikipedia, Youtube, Facebook, Myspace, Gmail, ecc.)
(il Web 2.0 definisce sé stesso)
Web 2.0 vs 1.0195
Web 2.0: Non c’è una sostanziale differenza tecnologica
rispetto al Web 1.0 La differenza è di tipo sociale e culturale: una
rete di siti si è trasformata in una rete di utenti
Il Web 1.0 non è mai morto. In questo momento esistono siti di tipo 1.0 e di tipo 2.0 Ma non esistono quasi più siti puramente statici
di tipo 1.0
Aspetti fondamentali del 2.0196
1. Contenuti auto-prodotti La distinzione tra webmaster e utente diventa evanescente
2. Siti come luoghi sociali Il sito è un mediatore per la comunicazione sociale La rete di siti si trasforma in una rete di utenti
3. Cloud computing Le applicazioni software diventano oggetti disponibili in rete I dati non sono più (necessariamente) sul computer
dell’utente
Web 2.0: Cloud computing197
Insieme di tecnologie informatiche che permettono l'utilizzo di risorse hardware o software attraverso la rete.
Tre tipologie base: SaaS (Software as a Service) – Programmi accessibili
attraverso il Web PaaS (Platform as a Service) – Uso di piattaforme software via
Web IaaS (Infrastructure as a Service) - Utilizzo di risorse hardware
in remoto
L’IaaS è connesso all’aspetto del cosiddetto hosting
Web 2.0: Perpetual beta198
Terminologia: versione beta di un programma = versione non necessariamente del tutto stabile, rilasciata solo a un piccolo numero di utenti pilota per le “prove finali”
Nel contesto del cloud computing è nato il termine “perpetual beta” Le versioni in linea dei programmi vengono aggiornate
continuamente Per lo più sono gratis, o a costi bassissimi L’utente si rassegna al fatto che possano non essere
completamente funzionali Le case non si prendono responsabilità
Web 3.0199
Identificato da (quasi) tutti con il Web semantico
Metadati associati alle pagine Ricerche precise, non legate alla lingua Relazioni tra informazioni Strumenti automatici di esplorazione Link dinamici
Il W3C200
Sta per World Wide Web Consortium
Fondato da Tim Berners Lee nel 1994 al MIT
Include aziende, enti di ricerca, università ecc.
Ha (essenzialmente) lo scopo di definire gli standard nel mondo Web; tra gli altri ha definito URL HTTP HTML XML …
Protocollo HTTP201
Sta per HyperText Transfer Protocol
E’ stato definito per gli scopi specifici del Web Trasferimento di oggetti multimediali Trasferimento di documenti con collegamenti, dove gli oggetti
collegati possono risiedere su server diversi da quello connesso (tipicamente lo fanno)
Ha due componenti: una client (lato browser) per la gestione delle richieste, una lato server per l’invio dei dati relativi
Ha la caratteristica di chiudere la connessione al termine di ogni richiesta
Protocollo HTTP: un esempio
202
• browser: richiede un file
• server: invia il file e chiude la connessione
• browser: esamina il file, lo formatta, se trova dei tag relativi a oggetti diversi li richiede al server
• server: Invia i nuovi file e chiude la connessione
• browser: Visualizza gli oggetti (se ne conosce il formato, es. immagini gif)
attiva l’esecuzione di programmi speciali attiva i plug-in (se configurati), altrimenti chiede all’utente (es: dove salvare un file?)
Usa la cache (un’area speciale del disco) per accelerare la visualizzazione
HTTP è privo di stati203
Il fatto che la connessione venga chiusa dopo ogni richiesta rende la comunicazione molto semplice L’alternativa sarebbe l’uso di sessioni, usate spesso per
creare comunicazioni protette quando lo scambio di informazioni non può esaurirsi in un colpo solo
Il protocollo, tuttavia, non consente la definizione di stati Esempio: gestione del carrello, immissione dei dati relativi
alla carta di credito ecc.
A volte è un problema. Per risolverlo si usano varie tecniche Esempio: cookies
HTTP non è protetto204
I dati non sono crittati, l’informazione viaggia in chiaro Problema: hacker, trasferimento di informazioni sensibili
E’ stato definito il protocollo HTTPS, molto simile all’HTTP con la differenza che l’informazione è crittata Usato per esempio nelle transizioni bancarie
Vedremo più avanti un uso più “fantasioso” di HTTPS…
HTML205
Sta per Hyper Text Markup Language
Un file HTML non è altro che un documento di testo che contiene oltre al testo della pagina anche le istruzioni (tag) relative alla formattazione del testo e degli altri oggetti multimediali presenti nel documento
E’ un esempio di “markup language”
Linguaggi di markup206
Ne sono stati definiti diversi
Il problema è quello di “standardizzare” le istruzioni di formato tra applicazioni diverse Un programma come Word usa internamente codici ASCII tra 1
e 31 per identificare operazioni di formato (corsivo, grassetto, stile paragrafo ecc.)
Ciascun programma usa i propri codici Anche per evitare “cloni”
In un ML, al posto dei codici vengono usate stringhe di testo con opportuni formati
Linguaggi di markup (esempi)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it" dir="ltr"><head><title>Hypertext Transfer Protocol - Wikipedia</title>
HTML
RTF
\insrsid13663483 Il formato RTF}{\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12680474
La sigla sta per }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid13663483\charrsid13663483 Rich Text Format}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13663483 . E\rquote un formato di testo con }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid13663483\charrsid13663483 tag}
Esempi di tag HTML208
(Non li dovete imparare!) … <address> Definisce un indirizzo <area> Definisce un’ area all’interno della mappa di un’ immagine <b> Definisce il testo in grassetto <base> Definisce una URL di base per tutti i link nella pagina <bdo> Definisce la direzione del testo (sinistra-destra o destra-sinistra) <big> Definisce del testo in grande <blockquote> Definisce una citazione lunga <body> Definisce il corpo della pagina <br> Inserisce il ritorno a capo <button> Definisce un bottone …
NB: sono fissi e predefiniti!
Problemi che HTML non risolve
209
1. Possibilità di costruire un tag In moltissimi casi è utile o essenziale
2. Aggiornamento di grandi quantità di testo (es: giornali) Se devo modificare la prima pagina del Corriere
online, dovrei scriverla tutta in HTML. Vero che ci sono programmi che convertono automaticamente il testo, però…
3. Accesso a database (es: prenotazioni di voli)
1 – Il linguaggio XML (1)210
Sta per eXtensible Markup Language
E’ stato definito dal W3C nel 1998
Ammette la creazione di tag
Permette una descrizione analitica e modulare dei dati Questo lo rende utile non solo nel mondo Web
Fa parte della categoria dei cosiddetti metalinguaggi Linguaggi che permettono di definire altri linguaggi
1 – Il linguaggio XML (2) – Un esempio211
<?xml version="1.0" encoding="UTF-8"?><utenti> <utente> <nome>Luca</nome> <cognome>Ruggero</cognome> <indirizzo>Milano</indirizzo> </utente> <utente> <nome>Max</nome> <cognome>Rossi</cognome> <indirizzo>Roma</indirizzo> </utente></utenti>
1 – Il linguaggio XML (3)212
Come HTML utilizza puro testo (senza caratteri di controllo)
Descrive solo i dati. Come si fa a capire come gestirli? Ad esempio, il tag HTML <Title> definisce il titolo della
pagina. E’ standard dunque il browser “sa” come gestirlo. Ma come gestisco <utente> o <nome>?
Si usano file “di stile” (XLS o XLST) che permettono al programma (ad esempio al browser) di tradurre i tag negli “effetti” desiderati Questo permette di usare lo stesso file XML in contesti
completamente diversi!
2 – Sistemi di Content Management (CMS) (1)
214
Riprendiamo l’esempio del giornale
Un giornale online ha degli spazi fissi nella pagina, che andranno riempiti con articoli, immagini ecc.
Gli spazi sono sempre dello stesso tipo, oppure afferiranno a un piccolo numero di tipologie diverse
Sarebbe utile separare la gestione degli spazi dal loro riempimento Cioè fare in modo che chi si occupa dei contenuti debba
solo scrivere i testi, scegliere le immagini ecc., senza doversi occupare di riportarli sulla pagina
2 – Sistemi di Content Management (CMS) (2)
215
Questo è esattamente quello che fa un Content Management System
Il programma è installato sul server di gestione delle informazioni
Ha (tipicamente) due componenti: Una permette la modifica dei contenuti L’altra la loro pubblicazione negli spazi previsti,
in un formato leggibile dal browser
2 – CSS217
Fogli di stile a cascata (Cascading Style Sheets)
Permettono di separare i contenuti dalla presentazione Semplificazione del codice Velocità di aggiornamento Estendibilità a palmari e smartphone
3 – Accesso a database (1)218
Facciamo un esempio: Vado su Amazon Cerco il film “Il corsaro dell’isola verde” in DVD Il motore di ricerca mi informa che è disponibile a 7,50 euro Lo aggiungo al “carrello”
Come fa il sistema a sapere che il film è disponibile?
Come fa a sapere cosa ho aggiunto al carrello? Sono informazioni che andrebbero gestite con un database
E’ essenziale disporre di strumenti che permettano di interfacciarsi con database Trasformare le richieste che vengono dal browser in query Trasformare i report di risposta in HTML o altro
3 – Accesso a database (2)219
Si usano varie tecniche:
ASP (Active Server Pages): pagine web che contengono liste di istruzioni che a loro volta permettono al server di generare dinamicamente contenuti HTML a fronte di richieste Tecnologia di casa Microsoft Le istruzioni sono scritte in opportuni linguaggi
Linguaggi di programmazione adatti allo scopo (es. Java) Non entro nel dettaglio
Web 2.0: Tecnologia220
Unica innovazione 2.0: tecniche di mash-up (miscuglio)
Semplice da realizzare, non richiede conoscenze informatiche approfondite
Un esempio di mashup è dato dall’unione di Google Maps e Flickr che consente di visualizzare su una mappa le foto relative alla zona selezionata
Mash-up: i Web feed221
Web feed: un generico insieme di contenuti informativi, espressi in un formato stabilito (di solito basato su XML) in modo che sia interscambiabile tra diverse applicazioni Tecnologia: Atom o RSS Feed
I feed vengono resi disponibili da distributori di contenuto (content sources, es. blog e siti web) e raccolti da aggregatori (o feed readers)
L’utente, dopo essersi abbonato (subscription) a un feed, riceve “automaticamente” gli aggiornamenti
Il browser Programma (client) per esplorare il Web
Rendering di pagine Basta digitare l’URL del sito nella barra dell’indirizzo Permette di seguire il link ipertestuali
I principali browser sono: MS Internet Explorer Google Chrome Mozilla Firefox Safari Opera
La prima guerra dei browser (1992 – 1998)
223
Browser = programma client per accedere al Web Remember: Client, in generale, è un programma in grado di interrogare
un server remoto e di presentare i risultati La disponibilità dei browser è quello che permise al Web di uscire dai
confini del CERN di Ginevra e di invadere il pianeta
Primo browser commerciale: Mosaic (1992)
Soppiantato a partire dal 1994 da Netscape Navigator
A partire dal 1998 Microsoft integra Explorer nel sistema operativo. Explorer non solo è gratis, ma è praticamente una scelta forzata degli
utenti Windows Questo ha scatenato una guerra legale. Nel 2000 Microsoft è stata
costretta a rendere “disinstallabile” Internet Explorer
La seconda guerra dei browser (2004 – oggi)
224
La quota di mercato di Internet Explorer è scesa: 2004: oltre il 90% 2005: 85% 2009: 65,5% 2011: 53,7%
In questo momento la competizione è durissima IE (tenendo conto di tutte le versioni) è tuttora in
testa per i PC Safari sembra essere in testa per i dispositivi mobili
Motori di ricerca Secondo il sito Wolfram Alpha, in questo
momento il numero stimato di siti web è 625,3 milioni Non è possibile raggiungere i contenuti che
interessano accedendo direttamente ai singoli siti; occorrono strumenti di ricerca
Il problema si è posto fin dalla prima diffusione del Web
Motore di ricerca: che cos’è Un motore di ricerca è un algoritmo che
permette di ottenere un elenco di pagine che contengono una certa chiave testuale di ricerca
Sul Web i motori di ricerca sono ospitati da appositi siti (es. Google)
Information Retrieval I motori di ricerca si basano su una
tecnologia detta Information Retrieval Permette di effettuare ricerche su grandi
archivi documentali Basata sulla costruzione di indici di parole
Due fasi diverse: Costruzione dell’indice Interrogazione
Motore di ricerca: come funziona Periodicamente viene attivato un programma
che esplora il Web, e tiene traccia delle parole che incontra Detto crawler (o robot, o bot)
Aggiorna un indice che risiede su un server gestito dal sito
Quando l’utente interroga l’indice, gli viene restituita la Search Engine Results Page (SERP)
L’aspetto critico di un motore di ricerca
Se la ricerca è generica, la SERP può includere molte migliaia di pagine
E’ fondamentale che le pagine “più interessanti” siano quelle mostrate per prime
Evoluzione dei motori di ricerca Prima del 1997 i motori di ricerca più
utilizzati erano: Yahoo Altavista Excite …
Dal 1997 è dominante Google Algoritmo PageRank
PageRank A ogni pagina incontrata viene
assegnato un “peso”
Esso dipende: Dal numero di pagine che connettono
quella pagina Dal loro peso
La SERP mostra i risultati in un ordine (rank) che dipende dai pesi
Il problema semantico Le ricerche effettuate con i motori di ricerca
sono testuali, non semantiche “Casa” è diverso da “case”, da “house” da
“maison” ecc. Il problema è stato in parte risolto grazie
all’uso di dizionari associati ai motori di ricerca
Un esempio: “Il capo della più grande software house del
mondo”: chi è?
Web e semantica Il Web tassonomico è uno dei progetti
associati al cosiddetto 3.0 Fortemente sponsorizzato da Tim Berners-
Lee Per il momento non realizzato
Una soluzione “nata dal basso” è quella dei tag
Tagging234
I tag sono parole chiave assegnate dagli utenti senza nessun controllo centrale Semantici Ridondanti
Il sistema dei tag non si pone il problema di essere coerente Tag ridondanti restano tali Tag “inutili” non vengono rimossi Non esistono meccanismi di rimappatura
Folksonomie235
Neologismo (= tassonomie definite dalla gente)
Non è un termine preciso Una tassonomia è uno schema
interpretativo della semantica Una folksonomia è solo un insieme di tag
privo di struttura
Tag cloud Cioè “nuvola dei tag”
Rappresentazione visiva dei tag usati in un sito
La dimensione del font rappresenta l’importanza (la frequenza) di ciascun tag
http://tagcrowd.com/
Top Related