Informatica Generale
Informatica Generale
Sviluppo tecnologico:
“Computer”: etimologia
Si tratta di una parola in uso dal 1600, è un concetto legato allo svolgimento di calcoli
numerici; la parola si riferiva a una persone che svolge quindi dei calcoli, il computer umano
era una figura ricorrente in molti ambiti scientifici dove erano necessari calcoli che
richiedevano molto tempo e noiosi (in ambiti come astronomia, meteorologia, tavole
matematiche, tavole balistiche…). A partire dal 1800 questi compiti di calcolo erano assegnati
specialmente a donne perché considerate più pazienti.
A partire dalla fine del 1800 il termine computer inizia a riferirsi a dei dispositivi, dal 1930 si
passa al concetto di “macchina digitale programmabile”.
A partire dal Paleolitico: vengono sviluppati i primi sistemi per il calcolo automatico iniziando
dalle mani e altri sistemi semplici come calculi, abaco...
A partire dal 1800/1840 troviamo i primi dispositivi meccanici “a programma”: telai Jacquard,
pianole, le macchine di Babbage
1843: pubblicazione delle note di Ada Lovelace sulla analytical engine di Babbage, e nascita
della programmazione
1896: Hollerith fonda la “Tabulating Machine Company” (poi IBM) che produce sistemi
meccanografici a schede
1950: prime macchine a programma memorizzato (von Neumann: ENIAC, IAS Princeton)
Sistemi di calcolo:
Le mani sono un sistema di calcolo potente, non solo per contare ma anche per
memorizzare risultati parziali di operazioni aritmetiche e quindi svolgere anche operazioni
con addendi grandi; sono stati creati numerosi sistemi per permettere di svolgere calcoli con
le mani in maniera ottimale.
I numeri grafici sono tra i sistemi di calcoli più antichi usati dall’uomo; l’uso di dispositivi
esterni al nostro corpo per fare calcoli è molti antico. Alcuni esempi sono ossa di Lebombo
(40 000 a.C,) o di Ishango (20 000 a.C.) o il corno di little salt spring (10 000 a.C.). Sono tutti
strumenti che riportano incisioni che fanno pensare a calcoli legati allo scorrere del tempo e
usati quindi come misure di tempo, calendari…
Più recente è l’uso di piccoli oggetti sagomati per indicare valori numerici come i “calculi”, dei
piccoli sassi con forme o decorazioni diverse per indicare valori diversi (epoca
mesopotamica 3500 a.C.).
I calculi hanno portato allo sviluppo dell’abaco cioè di sassolini ordinati (ex. tavola di
Salamina 300 a.C.).
Le calcolatrici meccaniche arrivano nel 1600 che permettono di svolgere calcoli in maniera
automatica (ex. Orologio calcolatore di Schickard del 1623 e la Pascalina di Pascal del 1642).
Questi dispositivi potevano svolgere solo alcuni tipi di operazioni con addendi diversi in
maniera automatica, non erano dispositivi programmabili e quindi riconfigurabili per svolgere
operazioni diverse.
Dopo l’ENIAC:
Transistor e circuiti integrati:
Un transistor è un dispositivo che, come una valvola, può assumere due stati (ex. acceso e
spento) e quindi di memorizzare due valori; rispetto alle valvole però consuma molto meno, è
molto più affidabile, al contrario delle valvole dell'ENIAC non si rompe con così tanta facilità
ed è estremamente più compatto, occupa uno spazio limitato.
Secondo la legge di Moore, i transistor in un chip raddoppiano ogni due anni: a parità di
superficie il progresso tecnologico permette di contenere il doppio dei transistor in un unico
chip in soli due anni; la legge fu formulata da Gordon Moore, fondatore e presidente di Intel.
Si tratta però di un’osservazione, non di una legge che non può essere trasgredita: lo sviluppo
tecnologico può raggiungere una saturazione che richiederà di sviluppare tecnologie diverse.
Queste tecnologie hanno permesso di miniaturizzare i computer portando negli anni ‘80 ai
Personal Computer e negli anni ‘90 ai dispositivi mobili.
Fino agli anni ‘80 i programmi sono stati scritti in maniera “monolitica”, il programma era
un’entità a sé stante indipendente da altri programmi.
Oggi chi scrive i programmi deve ragionare in maniera diversa: lo sviluppo dei software
avviene su più livelli, ogni software dipende da altri software.
Questo permette ai programmatori di non riscrivere da zero funzionalità software già scritte
da altri, il programmatore non deve necessariamente conoscere come funzione un blocco di
software, deve solo sapere come usarlo velocizzando il processo di programmazione.
Internet e www:
Internet nasce con ARPANet nel ‘69 e altre reti volte a connettere tra loro computer.
Nel 1973 l’idea chiave era quindi la creazione della rete delle reti tramite specifici protocolli
(nel caso specifico protocollo TCP/IP, Transmission Control Protocol/Internet Protocol) che
servono a specificare in quale maniera l’informazione viene trasmessa sulla rete, inviata e
decodificata.
La rete è quindi il circuito su cui navigano le informazioni, la WWW è il contenuto che circola
in rete, l’applicazione principale di internet che nasce alla fine degli anni ‘80.
Anche il WWW si basa su protocolli specifici, in questo caso l’HTTP (Hyper-Text Transfer
Protocol) sviluppato da Tim Berners e Lee al CERN.
Un aspetto importante dello sviluppo dei computer e come questi possono comunicare coi
propri operatori umani: come ricevere e come restituire informazioni; si parla in questo caso
di UI (user interface).
Le interfacce si basano su metafore, figure retoriche che implicano un trasferimento di
significato, vi è quindi un rapporto di somiglianza tra il termine di partenze e il termine
metaforico sfruttando un potere evocativo e comunicativo.
Sono importanti perché permettono all’utente di utilizzare i dispositivi senza leggere manuali
data la loro intuitività.
Un esempio di interfaccia abbastanza “primitiva” è un’interfaccia a linea di comando o CLI
(command line interface), l’unico tipo di informazione mostrata è il testo, senza alcun
contenuto grafico; mostra il testo scritto dalla persona e l’eventuale testo di risposta ai
comandi dell’utente.
Noi siamo invece più abituati a interfacce grafiche, GUI (graphical user interface) che hanno
elementi precisi: finestre, icone (associata a file o programmi), menù a tendina che ci
permettono di navigare e puntatori. Questi elementi vanno a formare l’acronimo WIMP
(windows, icons, menus, pointers).
I sistemi operativi più famosi come Microsoft e Apple sono basati sulla WIMP; basati sulla
metafora del desktop: le icone sono come gli oggetti su una scrivania che posso usare e
spostare.
Oggi le interfacce wimp sono parzialmente superate, l’interazione col computer non si basa
solamente su elementi grafici ma si basa su modalità più varie di interazione, modalità
sensoriali che includono il suono, la traduzione speech to text e altre modalità legate al
nostro movimento.
Algoritmi:
Storia:
Hilbert e il formalismo:
Alla fine dell'800 la matematica si interroga sui propri fondamenti, David Hilbert propone 23
problemi matematici fondamentali da risolvere nel corso del XX secolo. Uno di questi è il
problema della decisione (Entscheidungsproblem): esiste un procedimento per decidere se
una “proposizione” è o meno conseguenza logica di altre? Esiste quindi un modo per
comprendere se la mia proposizione è quindi giusta o sbagliata?
Hilbert è fiducioso: in matematica non esiste l'Ignorabimus! In matematica è quindi sempre
possibile verificare la veridicità o meno di una proposizione tramite la logica e assiomi
precedentemente dimostrati.
Turing-Church:
Teoria degli algoritmi: Alan Turing e Alonzo Church dimostrano (~1936) che tale procedura
non esiste: esistono proposizioni “indecidibili”, non sempre è possibile decretare la veridicità o
falsità di alcune proposizioni. Dato che la domanda era se esiste una sequenza di percorsi
logici che permettono di dimostrare la veridicità nasce il concetto di algoritmo: sequenza di
operazioni “elementari” che compongono una procedura di calcolo.
Viene inventata la macchina di Turing – un computer immaginario –una macchina
universale, in grado di calcolare ogni funzione calcolabile; è una macchina astratta non
esistente.
Tra le proposizioni decidibili – o funzioni calcolabili, problemi risolubili – alcune sono più
“facili” di altre. Esistono diverse classi di complessità, corrispondenti al tempo necessario per
risolvere i problemi . Alcuni problemi non sono risolubili in pratica, perché possono essere
risolti solo in tempi immensi (miliardi di anni).
Algoritmi:
Abu Ja'far Mu ammad ibn Mūsā ḥ al-Khowārizmī (c. 780 – c. 850) nativo di Khowarism
(Khiva, Uzbekistan); era un matematico, astronomo, geografo persiano, in particolare il
trattato “Algoritmi de numero Indorum”. “Algorismus”: sistema numerico decimale, poi evoluto
in “Algorithmus” (combinata con ἀριθμός, numero).
Risulta fondamentale studiare gli algoritmi in quanto essi dominano diversi aspetti della
nostra vita. Un’importante tipologia sono gli algoritmi di compressione dei dati utili appunti
per comprimere diversi tipi di file di nostro utilizzo per far occupare loro meno spazio:
- Essi possono essere senza perdite (“lossless, es. zip) oppure con perdite (“lossy”, es.
mp3)
- Questi algoritmi sono alla base della possibilità di trasmettere contenuti in rete.
Un algoritmo definisce tutti i passi (operazioni, istruzioni) necessari per calcolare un output a
partire da un input.
Un computer può risolvere soltanto problemi computazionali per i quali sia noto un
algoritmo.
Un algoritmo per essere tale è un insieme di istruzioni che devono avere le seguenti proprietà:
- Determinatezza: descrizione priva di ambiguità; ad ogni passo (istruzione), si sa quale
sarà il successivo
- Efficacia: ogni passo è eseguibile, chi realizza l'algoritmo (persona o macchina) deve
sapere svolgere ogni operazione
- Terminazione: prima o poi il calcolo finisce, si arriva alla conclusione in un numero
finito di passi.
ex. Problema: dato un insieme di fotografie di paesaggi, dire qual è il paesaggio più rilassante
- Può essere risolto dal computer?
- Solo se si dà una definizione rigorosa di “paesaggio rilassante”, usata per
confrontare in modo univoco due paesaggi
- Un computer può risolvere solo problemi che potrebbero essere risolti anche
manualmente
- Proprietà di un algoritmo
- Non è ambiguo (2 istruzioni consecutive)
- È eseguibile (sappiamo fare moltiplicazioni e divisioni)
- Termina (dopo l'istruz. 2 si genera l'output)
- Proprietà di un algoritmo
- Non è ambiguo (dopo ogni istruzione sappiamo qual è la successiva da
eseguire)
- È eseguibile (sappiamo fare la somma di due cifre decimali)
- Termina perché gli addendi hanno un numero finito di cifre, quindi
sicuramente il ciclo finisce
Cicli infiniti:
“Certi cicli non finiscono”, un ciclo dove non c’è terminazione, dove non si presenta
l’operazione che permette di uscire dal ciclo stesso.
- Esempio: ti prendo a schiaffi a due a due finché non diventano dispari
- È un “ciclo infinito”
- Non c'è terminazione
- Quindi questo non è un algoritmo
ex. Scrivere con gli occhi: Jean-Dominique Bauby (J-DB) era un uomo paralizzato dal mento
in giù (1995); egli scrisse il libro “Lo scafandro e la farfalla” (1997) usando la palpebra sinistra
Procedura: l'infermiera indica una lettera su una scheda, quando è la lettera giusta J-DB batte
la palpebra due volte, altrimenti una volta
Algoritmo
1. Parti dall'inizio della scheda;
2. Indica la lettera successiva sulla scheda;
3. Ripeti l'istruzione 2 finché J-DB non batte la palpebra due volte, altrimenti vai alla
istruzione 4;
4. Scrivi la lettera indicata;
5. Ripeti le istruzioni 1-4 finché il testo non è finito;
Contiene due cicli, uno dentro l'altro: cicli “annidati”
Le lettere sulla scheda sono scritte in ordine di frequenza, ovvero: in base alla frequenza di
utilizzo nella lingua francese, il vantaggio è che si ottiene una parola provando meno lettere
rispetto all'ordine alfabetico
L'algoritmo che usa ordine di frequenza è più efficiente di quello che usa ordine alfabetico
- Efficienza: velocità di esecuzione di un algoritmo in funzione della quantità di dati da
elaborare (ad es. numero di lettere del testo)
Dato un problema computazionale, ci sono molti algoritmi che lo risolvono, alcuni sono più
“intelligenti” (ovvero, più efficienti) di altri.
Problema della ricerca: dati una lista di elementi (numeri, libri, persone, ecc.) e un elemento
cercato, verificare se questo è contenuto nella lista, si tratta di un problema molto frequente
nell'elaborazione di dati che deve essere risolto velocemente soprattutto quando la lista in cui
cercare è grande (milioni, miliardi, ... di elementi).
Esaminiamo due algoritmi di ricerca:
- Ricerca lineare:
- algoritmo intuitivo, ma poco “intelligente” (lento con tanti dati)
Cosa sono input e output? L’input corrisponde alla lista di elementi, elemento cercato; ci sono
varie modalità di indicare invece l’output
- vero/Falso (l'elemento è presente oppure no)
- posizione dell'elemento nella lista
- ...
Ricerca lineare:
Algoritmo:
Idea: esamino tutti gli elementi finché non trovo quello cercato, oppure fino alla fine della lista
Algoritmo:
- Elemento corrente = primo elemento della lista;
- Finché (elemento non trovato) E (lista non è finita)
- Se (elemento corrente = elemento cercato) elemento trovato
- Altrimenti passa all'elemento successivo;
- Se (lista è finita) e
- Elemento non trovato (output: FALSO);
- Altrimenti
- Elemento trovato (output: VERO);
Funzionamento:
Ex. cerco autore in uno scaffale di libri
- Caso “fortunato” (caso ottimo): Asimov, trovato con 1 confronto
- Altro caso pessimo (elemento non presente) – cerco Zola, non trovato con 16
confronti
- Altro caso pessimo (elemento non presente) – (NB: la lista non è necessariamente
ordinata!) – cerco Eco, non trovato con 16 confronti
Funzionamento:
- Caso ottimo, Kafka, trovato con 1 confronto
- Altro caso pessimo (elemento non trovato) – Cerco Eco, non trovato con 4 confronti
Il problema dell'ordinamento:
Problema: data una lista di elementi, crearne un'altra con gli stessi elementi ma ordinati.
- Altro problema molto frequente nell'elaborazione di dati, che deve essere risolto
velocemente
- Problema più difficile della ricerca
- ovvero: l'algoritmo migliore per l'ordinamento è più lento dell'algoritmo
migliore per la ricerca.
Prestazioni di un algoritmo:
Domanda: quanto tempo impiega l'algoritmo di ricerca dicotomica per cercare un valore?
Domanda mal posta; la risposta dipende da:
- Quali e quanti sono i valori nella lista
- Qual è il valore da cercare
- Il linguaggio in cui è stato realizzato l'algoritmo
- Su quale computer viene eseguito
- Il momento in cui viene eseguito
Dobbiamo allora fare alcune ipotesi per definire formalmente il tempo di esecuzione T di un
algoritmo. La stessa sequenza di istruzioni eseguita sugli stessi dati da due computer diversi
impiega tempi diversi
- Diversi processori, sistemi operativi, ecc.
- Però le operazioni base hanno tutte lo stesso tempo di esecuzione (circa) su un
particolare computer
Come tenere conto del valore dei dati? Di solito si stima T(n) per eccesso, ovvero nel caso
pessimo del valore dei dati. A seconda del problema, la definizione di “caso pessimo” assume
significati diversi (es. per algoritmo di ricerca: caso in cui il valore cercato non è presente
nell'insieme).
Si possono anche fare stime di:
- caso ottimo
- caso medio (con ipotesi statistiche, ad es. lista di numeri e numero da cercare
generati in maniera casuale)
T(n) = O(n)
T(n) = k
Ma quanto vale k?
Acharya Virasena (792-853), monaco matematico indiano studia il concetto di ardh accheda
cioè il numero di volte in cui un numero è divisibile per due
8
- Ad es: 256 = 2 (cioè, 8 = 𝑙𝑜𝑔 2
256)
- Divisibile per due 8 volte: 128, 64, 32, 16, 8, 4, 2, 1
𝑘 𝑘
In generale un numero 𝑛 = 2 è divisibile per due esattamente 𝑛 = 2 volte
- Altri numeri (non potenze di 2):
- Si usa la divisione intera
- es: 21/2=10, 10/2=5, 5/2=2, 2/2=1
Ripetiamo il ragionamento; dopo ogni confronto rimane da esaminare la metà degli elementi
precedenti
- Confronto 1: lista di n elementi
- Confronto 2: sottolista di n/2 elementi
- Confronto 3: sottolista di n/4 elementi …
- Dopo k confronti: sottolista di 1 elemento
Quindi numero k di confronti è proprio il numero di volte in cui n è divisibile per due
Ardhaccheda
𝑇(𝑛) = 𝑂(𝑙𝑜𝑔 2
𝑛)
In generale: 𝑙𝑜𝑔 2
(𝑛) < 𝑛
- Il numero di confronti effettuati dalla ricerca binaria è sempre minore di quello della
ricerca lineare
In un certo linguaggio di programmazione (ad es. Java) un computer esegue un confronto in
−8
10 nanosecondi (10 s)
𝑛
- In generale con n dischi il numero di mosse è 2 −1
Il numero di mosse è funzione esponenziale del numero n di dischi, non esistono algoritmi
più veloci.
Complessità di un problema:
Definizione: la complessità di un problema è data dalle prestazioni del più veloce algoritmo
(noto) in grado di risolverlo.
Classi di complessità:
Definizione: un algoritmo è
- efficiente se le sue prestazioni (caso pessimo) sono al più polinomiali, ovvero
2 3 𝑘
𝑂(𝑙𝑜𝑔 2
𝑛), 𝑂(𝑛), 𝑂(𝑛 ), 𝑂(𝑛 )… 𝑂(𝑛 )...
- inefficiente se le sue prestazioni (caso pessimo) sono almeno esponenziali, ovvero
𝑛 𝑛
𝑂(2 ), 𝑂(𝑛 )...
Esempio in figura
- per valori piccoli di n i grafici si intersecano
2
- per 𝑛 > 1 (e per sempre) 𝑛 >𝑛
𝑛 2
- per 𝑛 > 4 (e per sempre) 2 >𝑛
2 𝑘 𝑛
In generale, per n grande 𝑙𝑜𝑔 2
(𝑛) < 𝑛 < 𝑛 <𝑛 <2
Esercizi algoritmi:
Esercizio 1:
Esercizio 2:
Se l'algoritmo di ricerca dicotomica impiega 1 millisec. a effettuare una ricerca su 1 000 000
di elementi, quanto tempo impiega a effettuare una ricerca su 1 000 000 000 di elementi?
Il logaritmo di ricerca binaria per cercare un elemento in un insieme di 1 000 000 000 elementi
fa 30 confronti.
30
1 000 000 000 è circa 2 quindi la ricerca compie circa 30 confronti
Esercizio 3:
Input: lista di numeri;
Output: numero m;
m prende il valore del primo elemento della lista;
Finché (la lista non è finita)
- Passa all'elemento successivo;
- Se (elemento corrente > m)
- m prende il valore dell'elemento corrente;
- Altrimenti
- m mantiene il valore precedente;
Output: m
𝑇(𝑛) = 𝑂(𝑛)
Esercizio 4:
Rappresentazione de ’informazione:
Simboli e informazione:
Rappresentazione digitale:
In informatica per rappresentare qualsiasi informazione si usano solo due simboli perché due
simboli si possono far corrispondere facilmente a stati fisici di un dispositivo elettronico (ad
es. transistor “acceso” o “spento”).
Definizione: BIT (Binary digIT): unità minima di informazione, che può assumere solo due
valori (ad es. “0” e “1”).
Esempio:
DVD: Digital Versatile Disc
- Oggi sorpassato da altre tecnologie (blue ray,…)
Plastica trasparente pressata:
- Buchi (pit) e sporgenze (land)
- Pit disposti in spirale dal centro verso l'esterno
Quanti valori?
Con un bit posso rappresentare solo 2 valori, è una risorsa limitata. Con una sequenza di n bit
posso rappresentare molti più valori. Quanti?
- Si possono creare tanti “codici” quante sono le possibili combinazioni dei bit
Potrei scegliere sequenze di 4 bit con cui posso generare 16 combinazioni (codici); bastano
per rappresentare 15 valori, e ne avanza uno.
Potrei definire questa associazione valore/simbolo
𝑛
Con n bit si possono creare 2 simboli
𝑛
Nulla di strano: con n cifre decimali si possono rappresentare 10 numeri, è lo stesso
principio
Sequenze di bit: byte
Numeri binari:
Proverbio: nel mondo ci sono 10 tipi di persone: quelli che capiscono il codice binario e quelli
che non lo capiscono.
Quantità e numeri:
Le quantità sono nella natura, i numeri nelle nostre menti, sono un’invenzione umana,
esistono infatti civiltà “anumeriche”; ci sono molti schemi diversi di numerali.
2 1 0
Esempio:434 = 4 × 10 + 3 × 10 + 4 × 10
Altre basi:
- Base 60
- Si può contare fino a 12 con una mano
- Pollice indica le 3 falangi delle altre 4 dita
Due simboli
Rimasto in uso
- Angoli
- Coordinate geografiche
- Tempo
- Base 20
- Si può contare fino a 20 con le dita
delle mani e dei piedi
Tre simboli
- Quatre-vingt-neuf…
Lingua Oksa Pmin (Nuova Guinea)
Esempi:
1 0
(10) 2
= (1 × 2 +0×2 ) 10
= (2) 10
3 2 1 0
(1001) 2
= (1 × 2 +0×2 +0×2 +1×2 ) 10
= (9) 10
La rappresentazione binaria è più naturale per i computer perché è più facile costruire circuiti
logici che distinguono tra due livelli invece che dieci.
A volte si usa la notazione posizionale in base 16, esadecimale (abbreviato in hex) – Notare
4
che 16 = 2
- Notazione comoda per rappresentare numeri binari con poche cifre
- Servono 16 simboli per rappresentare le cifre!
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
- Dove le lettere A,B,C,D,E,F, rappresentano le “cifre” 10,11,12,13,14,15
Esempio:
3 2 1 0
𝐶1𝐴0 = 𝐶 × 16 + 1 × 16 + 𝐴 × 16 + 0 × 16 = 49568
Da base 16 a base 2
- Ogni cifra hex diventa un gruppo di 4 bit
- (𝐹9) 16 = (1111 1001) 2
Digitalizzare il testo: caratteri e codici
Ad esempio:
- Caratteri di punteggiatura . , ; : ! ? ...
- Caratteri “non stampabili” “A capo”, “spazio”, “tabulazione”, …
- Numeri, simboli matematici, caratteri non latini, ecc.
Codice ASCII:
Limiti:
- Non basta per rappresentare i caratteri dei linguaggi diversi dall’inglese
- Lingue latine (ad es. lettere accentate), nord europee (ä, å, æ, ð, ø, ...), ecc.
Significa
- Il carattere “%”
- Ha il codice ASCII 37 (Decimal, ovvero base 10)
- Ovvero il codice ASCII 25 (Hex, ovvero base 16)
11 0
Infatti (25) 16
= 2 × 16 + 5 × 16 = 2 × 16 + 5 = 37
- Quindi ha il codice ASCII 0100101 (in base 2)
Codificare in ASCII:
Decodificare da ASCII:
Per decodificare un testo ASCII, occorre ripercorrere il processo contrario alla codifica.
Significa
- Il carattere “Ô
- Ha il codice ASCII esteso 11000011 (base 2) ottenuto componendo i due sottocodici
di 4 BIT a inizio riga e colonna
Osservazione: i primi 128 codici sono gli stessi di ASCII, per compatibilità
Significa
- Il carattere “δ”
- Ha il codice Unicode 03B4 (base 16) ottenuto componendo i due sottocodici di 3 e 1
cifre esadecimali a inizio colonna e riga
- Ovvero il codice 948 (base 10)
- Ovvero il codice 0000 0011 1011 0100 (base 2)
UTF-8:
Esempio
- Sinistra: codice produttore
- Destra: codice prodotto
Schema generale:
Altri codici: QR code
“Quick response” code, codice bidimensionale sviluppato nel 1994 da Toyota per tracciare
parti in fabbrica
- Leggibile in diversi orientamenti
- Leggibile anche quando il 30% dell'immagine è occluso (con la correzione di errore
più robusta)
QR code: struttura
Byte e controllo di errore: errori in bit e byte
Controllo di parità:
Si tratta di una semplice tecnica di rilevamento di errori, ad ogni byte di dati si aggiunge un
nono bit
- Vale 0 se i bit che valgono 1 sono pari, 1 altrimenti
- Così in un gruppo di 9 bit quelli che valgono 1 devono essere sempre pari.
- Se non è così: errore
Byte: etimologia
Werner Buchholz, IBM, giugno 1956, nome “a prova di errore” per l'unità di memoria; la scelta
del nome venne da questo spunto: dopo il bit (pezzettino) c'è il bite (boccone)
Si scelse di usare la “y” al posto della “i” come tecnica di prevenzione dell'errore: la
dimenticanza della “e” avrebbe potuto trasformare un bite in un bit!
Esercizi:
Esercizio 1:
Soluzione:
5
- 2 = 32numeri interi
00000, 00001, 00010, 00011, 00100, … , 11110, 11111
9
- 2 = 512numeri interi
12
- 2 = 4096numeri interi
Esercizio 2:
Soluzione:
2
1. Sono 4 = 2 valori, quindi 2 bit
- quattro codici: 00, 01, 10, 11
2. Sono 7 valori, quindi 3 bit
- 8 codici, uno rimane inutilizzato: 000, 001, 010, 011, …
4
3. Sono 12 valori, quindi 4 bit (perché 2 = 16)
- 4 codici inutilizzati
7
4. Sono 100 valori, quindi 7 bit (perché 2 = 128)
- 28 codici inutilizzati
Esercizio 3:
Si supponga che la temperatura di questa stanza venga comunicata tramite la luce della
stanza stessa
- Si sa che i valori di temperatura sono sicuramente compresi tra 15 e 28 gradi, estremi
inclusi
- La luce può avere solo due stati (accesa, spenta) e il suo stato viene letto una volta al
secondo
Es.: accesa, accesa, spenta, accesa, spenta, spenta, ...
Soluzione:
- Valori possibili: 14; simboli a disposizione: 2
4
- Servono sequenze di 4 bit: 2 = 16valori
- Servono 4 secondi per comunicare un valore
Esercizio 4:
Soluzione:
2 1 0
- 1×2 +0×2 +1×2 = (5) 10
5 4 3 2 1 0
- 0×2 +0×2 +1×2 +0×2 +1×2 +1×2 = (11) 10
6 5 3 2 0
- 1×2 +1×2 +1×2 +1×2 +1×2 = 64 + 32 + 8 + 4 + 1 = (109) 10
6 4 3 1
- 1×2 +1×2 +1×2 +1×2 = 64 + 16 + 8 + 2 = (90) 10
Esercizio 5:
Esercizio 7:
Soluzione:
1 0
- 𝐶 × 16 + 1·16 = 12·16 + 1 = (193) 10
2 1 0
- 10 × 16 + 15·16 + 10·16 = (2810) 10
5 3 2 1 0
- 12 × 16 + 15 × 16 + 15 × 16 + 3 × 16 + 3 × 16 = (12648243) 10
- … Fatelo voi …
Esercizio 7bis:
Esercizio 8:
Esercizio 9:
Esercizio 10:
Soluzione:
⎼ (101011) 2
= (43) 10
⎼ (4𝐷) 16
= (77) 10
⎼ (01010101) 2
= (85) 10
⎼ (89) 10
Esercizio 11:
Kepler-186f, sistema Kepler186, costellazione del Cigno, 500 anni-luce dalla terra, è un
esopianeta abitabile, e la lingua parlata dai suoi abitanti è composta da 352 suoni (quasi tutti
gorgoglii).
Quante cifre esadecimali deve avere un codice di tutti questi suoni?
Soluzione:
9
Servono 9 bit, perché 2 = 5120
8
Invece2 = 256, quindi 8 bit non bastano
- Quindi servono 3 cifre esadecimali
Esercizio 12:
Soluzione:
23 byte
- sono tutti caratteri ASCII, un byte l'uno
- bisogna contare anche spazi e punteggiatura
9 byte
- tutti caratteri ASCII (quindi 1 byte l'uno), tranne π che fa parte della sezione “Greek
and Coptic” (quindi 2 byte)
Esercizio 13:
Sapendo che il codice ASCII della lettera “A” (maiuscola) è (65)10, decodificare le seguenti
parole
- 01000010 01000101 01001001
- 01000110010001010100010001000101
Soluzione:
Esercizio 14:
Sapendo che il codice ASCII della lettera “a” (minuscola) è (97)10, decodificare il messaggio di
questa simpatica maglietta
Soluzione:
Come prima
- (121) (111)
10 10
(117) (97)
10
(114)
10
(101)
10
(100)
10
(117)
10
(109)
10
(98)
10 10
Informazione multimediale:
Rappresentare l'informazione multimediale:
Multimedia “lineare”
- La presentazione del contenuto procede in maniera lineare,
senza controllo di navigazione da parte dell'utente
- Ad esempio: cinema
Multimedia “non-lineare”
- La presentazione del contenuto viene controllata in maniera interattiva
- Ad esempio: videogiochi, ipertesto, ...
Nella rappresentazione raster: l’immagine viene vista come un insieme di punti di colore,
viene suddivisa per mezzo di una griglia in sotto porzioni, dette pixel; il raster va bene per
immagini complesse o irregolari (vettoriale per immagini regolari, es. grafici).
Definizione pixel (da Picture Element) unità elementare che compone un'immagine, o un
monitor
- un computer (monitor) visualizza un’immagine riproducendo i pixel che la
compongono
- Più pixel → più qualità
Monitor/immagini:
- indicata con divisioni verticali e orizzontali
Es: immagine con risoluzione 800x600 ha 480000 pixel
- Immagine 1024x800 ha 819200 pixel
https://upload.wikimedia.org/wikipedia/commons/6/63/Vector_Video_Standards.svg
Nei monitor la qualità dipende non solo da risoluzione ma anche da dimensione (lunghezza
diagonale); l’unità di misura più utile: densità di pixel
- Pixels per inch, PPI, o dots per inch, DPI
- N. di pixel per unità di superficie
- Migliore indicatore di qualità
- Es.: monitor 15 pollici
- risoluzione 1024x768
- diagonale 15, quindi lati 12x9 pollici
- 1024/12=768/9 = 85
- quindi 85 PPI
Pixel e bit:
Per tradurre un’immagine in BIT occorre pensare a ogni pixel come a un punto di colore
- Convenzione: rappresentiamo pixel dal basso in alto e da sinistra a destra
Se associamo a ogni colore una codifica binaria, ogni pixel corrisponde a una sequenza di
BIT
Esempio:
Esempio:
Definizione: colori primari, insieme di colori che si possono combinare in varie proporzioni per
produrre una gamma di colori
- … Combinare in maniera additiva, sottrattiva, ...
Esempio: puntatore mouse sul monitor, molti pixel bianchi (sfondo) prodotti da luci RGB
sommate a piena intensità; alcuni pixel neri (contorno della freccia)
prodotti da luci RGB spente
Per ognuno dei 3 colori (subpixel) si possono avere 256 livelli di luminosità
- Quindi la luminosità di un subpixel è codificata in un byte (8 bit, 28
= 256 combinazioni)
- Il numero di colori diversi è 256x256x256:
- Circa 16,7 milioni
Modificare intensità di un colore
Si può aggiungere qualsiasi quantità al byte di un colore, ma il risultato deve essere minore di
255, altrimenti errori di trabocco!
Quindi lo spazio di un'immagine è il n. di bit (o byte) per pixel moltiplicato per il n. di pixel
Es.: immagine bianco e nero risoluzione 800x600
- 1 BIT/PIXEL x (800x600)PIXEL =
= 1 BIT/PIXEL x 480000 PIXEL =
= 480.000 BIT = 60.000 BYTE
Circa 60 KByte
Formato GIF:
Esempio:
Dimensioni file
- Una coppia lunghezza-colore occupa 2 byte
- In questo caso tre coppie: 6 byte
- In realtà compressione LZW: in generale va meglio
- In realtà ci sono altri pezzi: formato, tabella colori, ecc.
Esempio:
Come prima, ma questa volta gruppi di 5 pixel, il formato GIF preferisce strisce di colori
orizzontali anziché verticali.
GIF animate:
Un singolo file .gif può contenere molte immagini
- Codificate una dopo l’altra all’interno del file
Formato JPEG:
Inventato dal Joint Photographic Experts Group di ISO (International Standard Organization)
- Formato con perdita di informazione, lossy
- Nato con lo scopo di standardizzare diversi formati per immagini con compressione
di qualità
- Codifica colore a 24 bit
- Il grado di compressione può essere regolato dall’utente
- Si possono raggiungere dei livelli di compressione alti (10:1 o più, contro il 4:1 del GIF)
Definizione: livello di compressione, rapporto tra dimensione del file non compresso e quello
compresso.
Codifica percettiva
- Sfrutta limiti della percezione visiva umana
Esempio: grafica vettoriale a diversi livelli di risoluzione; la risoluzione in questo caso è data
dal numero di punti dell’oggetto che si vogliono rappresentare
Video (cenno):
Cos’è il suono:
Un oggetto vibrante (corda, tamburo, ecc.) fa vibrare l'aria attorno a sé, le vibrazioni (onde di
pressione) si trasmettono all'orecchio e fanno vibrare il timpano
- Intensità: dipenda da ampiezza dell'onda sonora
- Frequenza: numero di vibrazioni al secondo
Due domande
1) Quale frequenza di campionamento?
2) Come rappresentare il valore di un campione?
Più è alta, meglio è (maggiore qualità, come per la risoluzione nelle immagini)
Esempio: frequenze presenti nel parlato (vocali) arrivano al massimo a 4 KHz (ovvero 4000
Hz). Allora nelle trasmissioni telefoniche si usa una frequenza di campionamento di 8 KHz
(8000 campioni al secondo).
Valore di un campione:
Ogni campione ha una ampiezza che rappresenta il valore dell'ampiezza dell'onda (pressione
acustica dell’aria, segnale elettrico prodotto da un microfono...) nell’istante di
campionamento.
Rappresentazione digitale
- Campione → sequenza di bit che ne codifica l’ampiezza
Analogia con immagini
- Ogni pixel ha un colore (in bit)
- Ogni campione ha un’ampiezza (in bit)
Esempio semplificato:
3 bit
- Un bit per il segno
- 3 valori positivi e 3 negativi
- Tutti i valori nella striscia blu (larga) vengono quantizzati a (10)2
Digitalizzazione
- Suono rilevato dal microfono (che trasduce onda acustica in onda elettrica)
ADC (Analog-to-Digital Converter)
- Convertitore analogico-digitale
- Segnale elettrico (analogico) viene campionato e trasformato in segnale digitale
Co (Compressor)
- Eventualmente il suono viene compresso (mp3, ecc.)
Riproduzione
- Cammino inverso
Dec (De-compressor)
- Eventualmente suono viene decompresso
DAC (Digital-to-Analog Converter)
- Convertitore digitale-analogico
- Segnale campionato ri-trasformato in segnale elettrico
Alla fine segnale elettrico riprodotto da un altoparlante (diffusore, cuffie)
- Trasduzione da onda elettrica a onda acustica
Bisogna sapere
- Quanti byte per campione
Es: 2,3,4 byte sono valori tipici
- Quale frequenza di campionamento
Es.: 8 KHz, oppure 44.1 KHz, oppure 48 KHz
- Quanti canali
Es.: 2 canali per una tipica canzone registrata in stereo
Quindi un file audio occupa
“Qualità CD”: 2 byte per campione, 2 canali stereo, freq. di campionamento 44.1 KHz
- Quindi un file audio qualità CD occupa
4 byte x 44100 x durata in secondi
Definizione: bitrate
- Bit al secondo, ovvero numero di bit necessari per codificare/trasmettere un secondo
di audio
Formati e compressione
Formato mp3:
Inventato dal MPEG di ISO (per video e audio), standardizzato nel 1991 è un formato con
perdita di informazione, lossy. Il grado di compressione può essere regolato dall’utente, che
può scegliere
- Frequenza di campionamento, ad es. 44.1 KHz
- Bitrate (in Kbit al secondo), ad es. 192 Kbit/s
Si possono raggiungere livelli di compressione alti (10:1 o più contro meno di 2:1 per FLAC)
La codifica percettiva sfrutta i limiti della percezione umana del suono; idea principale:
mascheramento
- Un suono può essere reso inudibile da un altro suono simultaneo (o quasi) a
frequenza vicina
Domanda mal posta: a seconda del contesto e della codifica può significare molte cose
diverse; ad esempio
- Il numero intero positivo (15796257) 10
- Il colore RGB (241, 8, 33) – ultimi 3 byte
- Quattro caratteri di ASCII esteso: NU ñ B S !
- Due campioni audio: L:+241; R:+281
Architetture:
Architettura di un computer:
Architettura: elementi hardware (fisici) di un computer, loro funzioni e connessioni; quasi tutti
i computer odierni hanno architettura simile
- Server, personal computer, laptop, tablet, smartphone, embedded computer in
automobili, elettrodomestici, ...
Il modello di von
Neumann:
Autore del primo documento che descrive una macchina elettronica nella cui memoria
vengono registrati dati e programma; l'architettura dei moderni computer è molto simile a
quella descritta nel documento.
- Sono quindi dette Macchine di von Neumann
- In realtà già prima di allora esistevano molte macchine che adottavano questa
architettura
i bus sono la quinta componente del modello di Von Neumann e hanno lo scopo di mettere in
comunicazione le altre parti tra loro
CPU (Central Processing Unit), cuore del computer, spesso definita “processore”
- Individua ed esegue le istruzioni del programma
- Effettua elaborazioni aritmetiche e logiche con la sua unità aritmetico-logica
- Reperisce dati dalla memoria e altri dispositivi periferici e ve li rispedisce dopo averli
elaborati
- È costituita da uno o più chip (miliardi di transistor interconnessi)
Dal punto di vista logico, tre parti principali
- Unità aritmetico-logica (Arithmetic-Logic Unit, ALU): operazioni aritmetiche e logiche.
- Unità di controllo: governa il funzionamento
- Registri: spazi di memoria ad accesso molto veloce per dati e istruzioni da eseguire
Unità di controllo:
- Esegue le istruzioni dei programmi
- Coordina le attività del processore
- Controlla comunicazione tra CPU e memoria
Svolge la sua attività in modo ciclico e ha un funzionamento ciclico scandito dall’orologio
di sistema (clock)
- Frequenza di clock: ad es. 1.8GHz (Gigahertz), 1.8 miliardi di cicli al secondo
Il Contatore di Programma:
Program Counter (PC): “il PC del PC”
- È un registro “speciale” della CPU
Ogni istruzioni ha un indirizzo
- Indirizzo della locazione di memoria in cui è scritta
Il registro PC contiene l'indirizzo della prossima istruzione in
memoria da eseguire
- Nella fase di “fetch” viene letta in memoria l'istruzione il cui indirizzo è contenuto nel
PC
- Poi il PC si incrementa
- Incremento dipende da lunghezza istruzioni
- Es.: istruzioni a 32 bit, il PC si incrementa di 4 byte
Le operazioni che si eseguono sulla memoria sia primaria che secondaria sono operazioni di
lettura e scrittura.
È veloce (tempi di lettura/scrittura di circa 10-50 nanosecondi), ma è costosa.
Memoria RAM
Consente sia lettura che scrittura dei dati e dei programmi in essa contenuti; contiene dati in
fase di modifica e programmi che devono essere disponibili alla CPU.
È una memoria volatile
- Ovvero, perde i dati quando si spegne il computer
“Accesso casuale” significa che il tempo per accedere a una cella non dipende dalla sua
posizione (indirizzo)
- In realtà questo è vero anche per la ROM
Memoria ROM
Viene scritta una volta sola alla fabbricazione (a volte anche ROM riscrivibili)
- Contiene i programmi necessari all’avvio del computer, programmi che devono essere
sempre disponibili
Ad es. programma BIOS (Basic Input/Output System), che viene eseguito all'avvio del
computer
Conserva dati e programmi anche quando il computer viene spento
- È una memoria non volatile
A tecnologia ottica
- CD-ROM, come un CD audio; capacità ~700 MByte; sola lettura
- CD-R (Recordable), può essere scritto dall’utente (una volta; più volte se CD-RW)
- DVD, (Digital Versatile Disk, capacità 4.7 Gbyte)
- Blue-Ray (capacità 50 GByte)
Gerarchia di memoria:
Dispositivi di Ingresso/Uscita:
Linguaggi di programmazione:
Programmi assemblatori:
Problemi:
- Istruzioni assembly uguali a istruzioni macchina, ne servono molte per eseguire
operazioni semplici
- Lo stesso programma per un'altra CPU deve essere riscritto (linguaggio macchina
diverso)
Breve storia
- Anni ‘50: primi linguaggi ad alto livello
- FORTRAN, BASIC, COBOL, ...
- Anni ‘60 e ‘70: programmazione strutturata
- Pascal, C, ...
- Anni ‘80 e ‘90, programmazione orientata agli oggetti
- C++ , Java, ...
Programmi compilatori:
Sistemi operativi:
Storia:
Unix
- 1960, Bell Labs. Molti OS basati su questo
MS-DOS (Disk Operating System)
- Primo OS (1980) utilizzato in personal computer IBM, realizzato da Bill Gates e Paul
Allen.
MS Windows
- Inizialmente (Win 1.0-3.11, 1985-93) solo interfaccia grafica a finestre per MS-DOS,
poi vero OS (Win 95, XP, Vista, 8, 10…)
Mac OS
- Classic (1984-2001), poi MacOS X basato su Unix
Linux ...
Struttura:
Operating system (OS)
Software fondamentale di un computer
Formato da programmi per
- Gestire efficientemente computer e dispositivi
- Creare interfaccia con l’utente
Struttura “a cipolla”
- Insieme di livelli, l'utente solo le operazioni del livello più alto e ignora quelle di tutti gli
altri
OS multiprogrammati (multitasking)
Più programmi (“processi”) possono essere eseguiti in contemporanea dalla(dalle) CPU
- OS gestisce la(le) CPU in modo che dedichi una frazione del proprio tempo a ciascun
processo
- Alcuni processi possono avere “priorità” più alta
- Se un processo si ferma (ad es. in attesa di dato dall’utente) la CPU può
eseguire le istruzioni di altri
OS multiutente
Computer può essere utilizzato da più utenti (anche in contemporanea)
- OS gestisce la memoria assegnando uno spazio diverso a ogni utente
- OS stabilisce livelli di autorizzazioni (permessi) per stabilire quali utenti possano
accedere a file e programmi condivisi
- OS prevede utenti speciali “amministratori” che possono gestire l'intero sistema
Reti:
Quanti comunicano
- Broadcast (o multicast), una singola fonte e tutti gli ascoltatori (ad es. radio o TV), o
molti ascoltatori (ad es. una rivista specializzata)
- Point-to-point, una singola fonte e un singolo ascoltatore (ad es. telefono)
Comunicazione su internet:
point-to-point asincrona
- e-mail, invece della posta tradizionale
point-to-point sincrona
- VoIP, invece del telefono
multicasting
- mailing list, chat, blog, invece di riviste specializzate
broadcasting e podcasting
- le pagine web possono sostituire radio e tv
La nuvola di internet:
Struttura generale che connette tra loro tutti i computer connessi a internet
Architettura client-server:
Modello generale: computer (client) richiede servizi a un altro (server). Nel caso di internet
- Client: vuole accedere a informazione (ad es. una pagina web)
- Server: contiene informazione richiesta
ARPANet:
Progenitore di Internet, la prima rete fu fisicamente costruita nel 1969 collegando… 4 nodi
- Univ. California LA
- Univ. Stanford
- Univ. Santa Barbara
- Univ. Utah
Il progetto sotto il controllo delle Università, fu un utile strumento per scambiare conoscenza
- Rete rinominata Internet
Architettura gerarchica
- Computer di utenti finali connessi a ISP locali
- ISP locali a loro volta collegati a ISP regionali (a volte
di estensione nazionale)
- ISP regionali collegati a ISP internazionali
Protocollo TCP/IP
Transmission Control Protocol / Internet Protocol
Indirizzo IP
- Ogni computer connesso a Internet ha un indirizzo numerico univoco
IPv4 (versione 4)
- Quattro numeri separati da punti
- n.n.n.n dove 0 ≤ n ≤ 255 (quindi 4 byte)
- Es. l'indirizzo IP del Lab. di Informatica Musicale (LIM) di Unimi (www.lim.di.unimi.it) è
159.149.133.149
Indirizzi IP: v4 e v6
IPv4
8
- Per ogni byte ci sono 2 = 256valori (da 0 a 255)
4
- In totale un indirizzo IPv4 permette di indirizzare 256 = 4294967296 indirizzi IP
disponibili
- Ciò nonostante gli indirizzi si stanno esaurendo …
Pacchetti IP
“Inviare info su Internet è come spedire il proprio romanzo da Tahiti all'editore a New York
usando solo cartoline”
[Vint Cerf, co-inventore di TCP/IP ]
Ovvero: informazione inviata a piccoli pezzi (“pacchetti”), ciascuno dei quali segue una strada
diversa.
L'informazione da inviare è divisa in una sequenza di pacchetti di dimensione prefissata.
Ogni pacchetto IP contiene
- Una “unità” di informazione
- L’indirizzo IP del destinatario
- Un numero progressivo
Dimensione di un pacchetto IP:
- “Intestazione”: 12 byte
- Indirizzo IP mittente e destinatario: 4+4 byte
- Dati (“unità di informazione”): max 65528 byte 2
I 13 server “radice”
In realtà esistono molti siti “specchio” (mirror) che duplicano le macchine originali
DNS: esempio
Collegamento a internet
Residenziale, tramite provider
- L’utente collega il computer a un computer del provider tramite modem (ad es. ADSL)
- Computer del provider connesso a Internet, agisce da tramite (ripetitore) per il cliente
Tramite LAN
- Organizzazione (azienda, ecc.) crea LAN (detta anche “intranet”)
- LAN usa internamente un proprio protocollo (es. ethernet) e si collega a Internet con
“gateway”:
- Gateway (“porta di passaggio”): dispositivo che gestisce il traffico tra due reti
diverse (ad es. internet che usa TPC/IP e una intranet che usa ethernet)
Ethernet
Inventato nel 1973 (Robert Metcalfe)
- Ogni computer è collegato al canale e può inviare messaggi rilevati da tutti gli altri,
che pescano quelli diretti a loro
- Un computer invia un messaggio quando “sente” che nessun altro lo sta facendo
- Analogia: barzellette raccontate a turno
- Rete “broadcast” per comunicazione point-to-point
Servizi di rete
Internet è una infrastruttura su cui si possono creare diverse applicazioni o servizi
- Domain Name System
- Posta elettronica
- Trasferimento file
- Chat
- World Wide Web
Tutti usano il modello client-server ma ciascun servizio di rete definisce:
1) Un software per il client (con interfaccia utente)
2) Un software per il server
3) Un protocollo di comunicazione
Browser
Client web, applicazione interfaccia tra utente e WWW, mascherando complessità di Internet
- Comunica con server web per ottenere risorse
- Interpreta ed elabora codice HTML e altri file multimediali per visualizzare contenuto
di pagine
Motori di ricerca:
Servizio che aiuta ricerca di documenti su web, ricerca basata su una richiesta (query) che
usa parole chiave (keyword).
Il risultato è una lista di risorse Web che contengono la/e parola/e chiave richiesta/e.
Funzionamento base:
- Crawling: raccolta e catalogazione preliminare di un insieme di dati presenti sul web
“Offline”, ovvero non durante una richiesta
- Risposta a query: lista di contenuti ordinati per rilevanza rispetto alla richiesta
Risposta veloce grazie al crawling preliminare offline
Google:
Nato nel 1996 come progetto di ricerca da Larry Page e Sergey Brin, studenti di dottorato a
Stanford, California
- Inventano algoritmo PageRank che ordina per rilevanza risultati di query
- Società fondata nel 1998
Nome: storpiatura di “googol”
100
- Il grande numero 10 , 1 seguìto da 100 zeri
- Grandi quantità di informazioni
- Homepage dal design minimale
- Perché non sapevano HTML!
Crawling
“To crawl”: camminare/strisciare su ragnatela; un programma crawler (o spider, o robot) visita
tutte le pagine web che riesce a trovare
- Parte da una prima “to-do” list di URL
- Segue tutti i link ad altri URL che trova nelle pagine che visita
Crea un indice
- Lista di “token” (parole o elementi di testo), e di URL associati a ciascun token
- Continuamente aggiornato
Esempio:
N.B. Se ci sono parole che fanno parte di un'ancora, nel loro indice viene aggiunto l'URL a cui
puntano, non quello della pagina in cui si trovano
Indice di google
Dimensioni: più di 1017 byte (backuppato)
- Grande anche perché in realtà le liste contengono anche altre info
- posizioni delle parole nelle pagine, meta parole, ecc.
Il web invisibile:
Invisible web, o deep web, o hidden web; parti del www che non sono indicizzate dai motori di
ricerca, per varie ragioni
- Limitate capacità dei programmi crawler
- Protezione con password
- Servizi a pagamento
- Attività illegali (dark web)
Dimensione: impossibile da conoscere, alcune stime approssimative e
non affidabili
Dark web:
Contenuti accessibili solo attraverso reti che garantiscono anonimato
Esempio: Onion Routing (OR)
- Messaggi incapsulati in strati di cifratura
- Come gli strati di una cipolla
The Onion Routing project (Tor)
- Implementazione più famosa di OR
- Rete aperta (insieme di server) per anonimato, e browser
- Attività illegali ma non solo
Query:
Elaboratore delle query (interrogazioni)
- Riceve dall'utente dei token e li cerca nell'indice
- Risponde velocemente (decimi di s) perché l'indice è stato creato in precedenza con
crawling
Esempio di query:
Oppure (equivalente):
L'elaboratore delle query cerca pagine che contengono “abilitazione” e “volo” e “acrobatico”;
per questo si dice che è una AND-query.
Query avanzate:
Query:
Query:
Operatori logici possono essere combinati usando parentesi, come quelli aritmetici
(mandorla OR limone OR gelsi) AND granita
- Trova pagine con “granita” e una tra le altre tre
mandorla OR limone OR gelsi AND granita
- Significato diverso: trova pagine con “mandorla”, oppure “limone”, oppure “granita” e
“gelsi”
Web visto come piattaforma di sviluppo collettivo, con nuovi servizi che consentono di
manipolare contenuti e inserirne di nuovi
Conseguenze:
- Utenti: da lettori passivi a partecipanti attivi
- Contenuti: da risorse standardizzate generate da pochi provider a contenuti molto
eterogenei generati dagli utenti
- Comunità: la partecipazione di molti utenti favorisce il cosiddetto social networking
Blog: spazio personale, diario online pubblico che tutti possono leggere e commentare
Wiki: dizionari collaborativi a cui chiunque può aggiungere modificare informazioni
Media sharing/tagging: scambio/annotazione di info multimediali (Flickr, YouTube, ecc.)
Cloud computing: applicazioni web (strumenti di produttività, office, ecc.) accessibili da
browser e dati memorizzati in rete
Community: supporto alla creazione di comunità virtuali (Facebook, LinkedIn, ...)
Blog:
Etimologia: weblog (Jorn Barger, 1997), storpiato in “we blog” (Peter Merholz, 1999)
- Nato come diario personale online (~1995)
- Poi canale di comunicazione (politica, news, ecc.)
- Tool software per blog (es. WordPress)
Tipologie
- Blog personali
- Blog collaborativi
- Blog “aziendali”
- Microblog
Hanno dato origine a social network come Twitter,Facebook, ...
Wiki:
Etimologia: Wikiwikiweb (primo wiki)
- Ward Cunningham (1994)
- Da wiki-wiki shuttle bus dell'aeroporto di Honolulu, usato col significato di quick
Dizionario/enciclopedia collaborativa
- Ogni utente registrato può contribuire
- Tutte le versioni rimangono memorizzate e si può tornare a versioni precedenti
Esempio più famoso: wikipedia
- Circa 10 milioni di articoli, 250 lingue
- Affidabilità grazie a “controllo sociale”
- Nessuno sfruttamento commerciale (licenza CC)
Cloud computing:
Etimologia: da sempre ARPAnet e Internet vengono
rappresentati come una nuvola
Dati, programmi e risorse non devono più necessariamente risiedere sul PC personale
- Ospitati “in the cloud”
- Condivisi tra utenti e dispositivi
Esempi
- Dropbox, Google drive e suite office, ...
Cloud computing:
Vantaggi
- Zero investimenti
- Disponibilità immediata
- Prezzo flessibile
- Rischi ridotti
- Sicurezza demandata a chi gestisce il servizio cloud
Rischi
- Sicurezza informatica e privacy degli utenti
- Continuità del servizio offerto
- Forti limitazioni in caso di non accessibilità del servizio (mancanza di
connessione di rete, servizio temporaneamente o definitivamente non
operativo, ...)
Social network:
Aggregazione di comunità sulla base di svariati interessi:
- Divertimento, lavoro, hobby, incontri, ...
Facebook: tuttora social con maggior numero di utenti ma: scandalo russiagate, privacy
utenti, calo utenti attivi e giovani,...
Computational social media:
Social media studiati da varie discipline
Informatica
- Usare dati di social media per problemi informatici (“big data” per machine learning)
- Analisi automatica (profilazione di utenti, raccomandazione automatica, struttura
della rete)
Comunicazione, marketing
- Effetti su produzione e consumo di altri media, diffusione di notizie (“citizen
journalism”)
- Pubblicità virali, branding
- Comunicazione aziendale
Web 3.0:
Termine generale che ingloba vari sviluppi e tecnologie
- Da Web “read-write” a Web “read-write-understand”