2. Indice
Che cos’è l’informatica
Storia del computer
Algoritmi
Reti di computer e Internet (cenni)
Il Web
3. 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
4. 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
5. 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 annni
6. 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
7. 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
8. Calcolo automatico
E’ solo un aspetto del problema
Tuttavia è importante, perché è stato il punto
di inizio della rivoluzione informatica
9. Calcolare a macchina
C’è qualcosa nel
calcolo di
evidentemente
meccanico
Sembra ragionevole
poter costruire
“macchine per
calcolare”
10. Macchine per calcolare (1)
A – Due righelli
permettono di fare le
somme
B – Un pallottoliere
permette di fare le
somme
11. 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
12. 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...
13. Un esempio: la “Pascaline”
Inventata da Blaise
Pascal (1623 –
1662), più noto
come filosofo e
matematico
Permetteva di
effettuare diverse
operazioni
aritmetiche e
matematiche
14. Un altro esempio: il regolo
calcolatore
E’ analogico:
funziona come i
righelli
Usando scale
logaritmiche,
permette di fare
moltiplicazioni
anziché addizioni
15. 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
16. Che tipo di cifre?
Binarie
BIT = Binary digIT
17. 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 numero
3452
unità
centinaia decine
migliaia
18. 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?
19. Sistema decimale
19
Risposta: no. E’ possibile usare sistemi posizionali
basati su qualsiasi numero maggiore di 1. Per
capire perché, esaminiamo la seguente tabella
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
Il numero 10 è detto base del sistema di
numerazione.
20. Teoremi sui sistemi posizionali in base
N
20
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
21. 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
22. 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é?
23. Perché il sistema binario
23
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
24. 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
25. Algebra di Boole
25
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
27. 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)
28. Connettivi fondamentali
28
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
31. 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
32. Connettivi composti
Esempio: implicazione (SE piove ALLORA fa
freddo)
Si indica con =>
In termini di connettivi fondamentali:
A => B equivale a: NOT A OR B
Connettivo =>
P1 P2 P1 => P2
V V V
V F F
F V V
F F V
33. 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
37. 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?
38. Digitalizzazione
38
L’operazione di digitalizzazione corrisponde
alla trasformazione di una certa informazione
in numeri
E’ sempre possibile digitalizzare l’informazione
Facciamo qualche esempio
39. Digitalizzare il testo
39
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)
40. Domande
40
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é?
41. Digitalizzare il colore
41
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
42. Digitalizzare le immagini
42
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
43. 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
44. Indice
Che cos’è l’informatica
Storia del computer
Algoritmi
Reti di computer e Internet (cenni)
Il Web
45. Charles Babbage (1791 – 1871)
45
Anticipatore delle
idee moderne sulle
macchine
calcolatrici
Progetta un
calcolatore
programmabile, che
non riuscirà mai a
realizzare
46. 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)
47. Che cos’è un algoritmo
47
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
48. 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!
49. 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?
50. 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
51. 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
52. File
52
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)
53. 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
…
54. 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
55. 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…
56. 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
58. Processore (CPU)
Esegue tutte le
operazioni
elementari (poche e
semplici)
Velocità tipica per
un computer
commerciale di oggi:
un miliardo di
operazioni al
secondo
59. Memoria RAM
Random Access
Memory
Indirizzabile
direttamente dal
processore
Veloce
Volatile
61. Periferiche di I/O
Tutto ciò che serve
per immettere dati
nel computer, e per
ricevere i dati
elaborati
Tastiera, mouse,
stampante, scanner,
plotter…
62. Transistor
E’ un “interruttore”
controllato da un
segnale elettrico
Primo prototipo
funzionante: 1947
Ha permesso di
realizzare le porte
logiche
63. 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
64. 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/)
65. 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
66. 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
67. L’esplosione del computer
67
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
69. 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...
70. 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”
71. 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
72. Indice
Che cos’è l’informatica
Storia del computer
Algoritmi
Reti di computer e Internet (cenni)
Il Web
73. 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.)
74. 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
75. 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
76. Proprietà degli algoritmi
Non tutte le possibili sequenze di operazioni
definiscono un algoritmo
Per essere definito correttamente, un
algoritmo deve godere di alcune proprietà
77. 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)
78. 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
79. Finitezza (2)
1) 3,14159265358979323846...
2) 3,1415926535899323846...
3) 3,141592653589323846...
Dato che le cifre di π sono infinite, il passo 2)
non può essere completato
80. 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
81. 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
82. 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?
83. 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
84. 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
85. 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
86. 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?
87. 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
89. Simbologia standard dei blocchi
Inizio / Fine dell’algoritmo
Azione
Input o output (I/O)
Controllo del flusso operativo
90. 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
91. 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
92. 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
93. Sequenza
Una successione lineare di azioni e/o di
operazioni di I/O
Azione 1
Azione 2
Azione 3
Azione 4
Ingresso
Uscita
94. 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
95. 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
96. Iterazione
Un certo insieme di operazioni viene eseguito
più volte; un blocco di controllo permette di
decidere quando terminare il ciclo
Azione 1
Azione 2
Il ciclo è
finito?
No
Sì
Ingresso
Uscita
97. 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”
98. 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
99. 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
100. 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)
101. L’algoritmo “in grande”
Leggi
un
numero
I numeri
sono
finiti?
Fine
Metti in ordine il
numero che hai letto
Inizio
No
Sì
NB: vedete qualche problema?
102. 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?
103. Nota
Anche i blocchi del “sotto – algoritmo” per
mettere in ordine non sono operazioni
elementari
Essi dovranno essere opportunamente
sviluppati in algoritmi di dettaglio
104. 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!
105. 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
106. 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
107. 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”
108. L’algoritmo di ordinamento (1)
Inizio
Leggi un numero
Ripeti
Metti in ordine il numero che hai letto
Finché i numeri sono finiti
Fine
109. 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
110. 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?
111. 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
112. 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.
113. Una domanda difficile
Il nostro cervello funziona in modo
algoritmico?
Se sì, i processi mentali sono deterministici
Dunque il “libero arbitrio” non esiste
115. Indice
Che cos’è l’informatica
Storia del computer
Algoritmi
Reti di computer e Internet (cenni)
Il Web
116. Le reti di computer
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)
…
117. Cenni storici (1)
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…)
118. Cenni storici (2)
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à
119. 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)
120. 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)
121. Connessioni fisiche
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
123. 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?
124. 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
125. 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
126. 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
127. Un esempio – per capire (2)
Layer “mittente”
Layer “ufficio postale”
Layer “trasporto”
Layer “arrivo a destinazione”
128. La posta si organizza meglio...
Layer “mittente”
Layer “ufficio postale”
Layer “trasporto”
Layer “arrivo a destinazione”
129. 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.
12
9
132. 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?
13
2
133. 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
13
3
134. Telefonia - Commutazione di
circuito 13
4
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
135. Internet - Commutazione di
pacchetto
135
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
136. Protocollo di base: TCP/IP
136
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”?
137. 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)
138
Esempio di indirizzo IP di classe C
193.205.20.70
Subnet (identificativo della rete)
Computer di destinazione
139. 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
140
Router 2
Sorgente Router 1
Router 4
Router 3
Router 5
Router 7 Destinazione
Router 6
142. 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
143. 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
144. 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
145. 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.
146. Il collegamento a Internet
146
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
147. Connessione a Internet
147
LAN
router
local ““mmooddeemm””
ISP
network
Internet
Service
Provider
f
i
r
e
w
a
l
l
firewall: software per filtrare pacchetti IP e/o indirizzi
148. Servizi di rete
148
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
…
149. 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…)
150. Posta elettronica
150
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)
151. Posta elettronica vs. posta
tradizionale
151
Uso dei campi CC e CCN
“Copia conoscenza” e “Copia conoscenza
nascosta”)
Uso di mailing list
Priorità dei messaggi
Return receipt
Allegati
152. 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
…
153. Problemi della posta elettronica:
virus
153
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
154. 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
…
155. Problemi della posta elettronica:
spam
155
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
156. 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)
157. FTP: vantaggi
157
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
158. 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)
159. 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.
160. 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
161. 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…
162. Telefono e videoconferenza via
Internet
162
Usano prevalentemente il protocollo VoIP
(Voice over IP)
Esempi
MSN Messenger (oggi Windows Live Messenger
di Microsoft)
Skype
Yahoo Messenger
163. VoIP – Servizi tipici
163
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
164. VoIP: vantaggi
164
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!
165. Telefonia fissa
165
Prima dell’era del computer: centrali
elettromeccaniche
Dall’avvento del computer: centrali
completamente gestite via software
Commutazione
Istradamento
Billing (tariffazione)
Manutenzione
….
166. Telefonia fissa - Servizi
166
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
…
167. Telefonia mobile
167
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)
168. Come funziona
168
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
169. 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)
171. 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, 1983
Peso = 800 g, lunghezza = 25 cm, costo =
3895 dollari
172. 2G: GSM
172
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
173. 3G: UMTS
173
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.
174. 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à
175. Gli SMS
175
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
176. L’evoluzione dei terminali
176
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 della
CONVERGENZA
di tecnologie diverse
177. Computer palmari
177
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
178. Convergenza
178
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)
179. Esempi
179
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!
180. iPhone
Può essere
considerato oggi lo
standard di questa
classe di dispositivi
E’ al punto di
convergenza tra
telefonino, PDA e
iPod (lettore
musicale)
181. Le App
181
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
182. 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
183. Indice
Che cos’è l’informatica
Storia del computer
Algoritmi
Reti di computer e Internet (cenni)
Il Web
184. Il World Wide Web
18
4
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
186. 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
188. 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)
189. Numero di siti web fino al 2003
189
La caduta (rispecchia il crollo del NASDAQ)
190. Numero di host Internet fino al
2002
190
Dov’è il crollo?
191. La crescita del web nel mondo
(1)
191
Crisi della new
economy
(2000 – 2003)
Boom dei blog
(2007)
60% del totale
192. 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
193. Evoluzione del Web
193
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
194. Web 2.0
194
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)
195. Web 2.0 vs 1.0
195
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
196. Aspetti fondamentali del 2.0
196
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
197. Web 2.0: Cloud computing
197
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
198. Web 2.0: Perpetual beta
198
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à
199. Web 3.0
199
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
200. Il W3C
200
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
…
201. Protocollo HTTP
201
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
202. 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
203. HTTP è privo di stati
203
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
204. HTTP non è protetto
204
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…
205. HTML
205
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”
206. Linguaggi di markup
206
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
207. 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}{rtlchfcs1 af1
ltrchfcs0 insrsid12680474
La sigla sta per }{rtlchfcs1 af0 ltrchfcs0
iinsrsid13663483charrsid13663483 Rich Text
Format}{rtlchfcs1 af0 ltrchfcs0
insrsid13663483 . Erquote un formato di testo
con }{rtlchfcs1 af0 ltrchfcs0
binsrsid13663483charrsid13663483 tag}
208. Esempi di tag HTML
208
(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!
209. 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)
210. 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
211. 1 – Il linguaggio XML (2) – Un
esempio
211
<?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>
212. 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!
214. 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
215. 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
216. 2 – Sistemi di Content Management (CMS)
(3)
216
217. 2 – CSS
217
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
218. 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
219. 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
220. Web 2.0: Tecnologia
220
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
221. Mash-up: i Web feed
221
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
222. 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
223. 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
224. 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
225. Motori di ricerca
Secondo il sito WolframAlpha, 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
226. 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)
227. 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
228. 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)
229. 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
230. Evoluzione dei motori di ricerca
Prima del 1997 i motori di ricerca più utilizzati
erano:
Yahoo
Altavista
Excite
…
Dal 1997 è dominante Google
Algoritmo PageRank
231. 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
232. 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 è?
233. 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
234. Tagging
234
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
235. Folksonomie
235
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
236. 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/