Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


La Computazione e l'Informatica: Architettura e Memoria di Calcolatore, Appunti di Elementi di Informatica

Una panoramica introduttiva all'informatica, distingue tra informatica teorica e applicata, e descrive la nascita del calcolatore digitale. Viene inoltre esplorata l'architettura di von Neumann e la memoria di calcolatore, inclusa la memoria primaria e secondaria. Il testo illustra inoltre il ruolo dei bus e delle periferiche di input/output.

Tipologia: Appunti

2019/2020

Caricato il 28/02/2020

veronica-tomasini
veronica-tomasini 🇮🇹

4.5

(2)

10 documenti

1 / 14

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INFORMATICA
Nel linguaggio comune il termine “informatica” viene usato per riferirsi a tre aspetti:
1. operativo: un insieme di applicazioni e manufatti (i computer);
2. tecnologico: una tecnologia che realizza quelle applicazioni;
3. culturale: una disciplina scientifica che fonda e rende possibile quella tecnologia.
Si può pensare all'informatica come alla scienza che si occupa dello studio dei fondamenti teorici dell’informazione, degli algoritmi di elaborazione
automatica delle informazioni, dell’implementazione di questi algoritmi, e, solo alla fine, dell’uso del calcolatore.
Lo studio dell'informatica migliora le facoltà creative, logiche e cognitive; è intrinsecamente multidisciplinare; è uno strumento con cui modellare i
problemi.
Le branche più comuni dell’informatica:
Informatica teorica (Teoria dell'informazione, Teoria della computazione, Algoritmi e strutture dati, Teoria dei linguaggi di programmazione)
Informatica applicata (Architettura dei calcolatori, Sistemi e architetture Information Technology (IT), Reti di calcolatori, Basi di dati, Sicurezza
informatica e crittografia, Interazione uomo-macchina, Intelligenza artificiale, Elaborazione digitale dei segnali, Programmazione, Sviluppo software,
Sviluppo web, Sviluppo sistemi integrati)
NASCITA DEL CALCOLATORE:
Il termine calcolatore designa genericamente un sistema di elaborazione dati, nato in forma meccanica, sviluppatosi in forma analogica e giunto poi
alla forma digitale. Il più antico strumento di calcolo fu l’abaco, in uso già 4000 anni fa in Cina. I primi veri progenitori dell’elaboratore moderno
videro la luce agli inizi del XIX secolo. Nel 1804 Joseph Marie Jacquard introdusse una nuova tecnologia per i telai in grado di controllare il
movimento di aghi, filo e tessuto attraverso schede perforate, automatizzando così la procedura di tessitura. Charles Babbage elaborò una
macchina di calcolo in grado di compiere operazioni aritmetiche, ma non fu mai realizzata. Fu Ada Lovelace (considerata oggi la prima
programmatrice della storia), ad accorgersi delle vere potenzialità della macchina di Babbage: sebbene fosse stata progettata per svolgere solo
calcoli matematici, Ada riconobbe la possibilità di programmare la macchina per altri fini. In questa versatilità risiede la principale differenza tra una
calcolatrice tradizionale e un calcolatore.
Gottfried Wilhelm Leibniz sviluppò la logica come disciplina matematica e formale, con i suoi scritti sul sistema numerico binario. Nel suo sistema,
l'uno e lo zero rappresentano i valori vero e falso. Le sue idee vennero riprese da George Boole, che pubblica la propria algebra booleana, creando
un sistema nel quale è possibile trattare ogni relazione logica attraverso l'utilizzo di formule algebriche. Le operazioni (come l'addizione, la
sottrazione e la moltiplicazione) vengono sostituite da operazioni logiche con valori di congiunzione, disgiunzione e negazione utilizzando solamente
numeri binari (ossia costituiti dalle sole cifre 0 e 1). Alla fine del XIX secolo, Herman Hollerith, un funzionario statunitense dell’ufficio per il
censimento, sviluppò una macchina tabulatrice, sempre a schede perforate, per automatizzare le operazioni di censimento. Il successo e la richiesta
di queste macchine fu tale che nel 1896 Hollerith fondò la Tabulating Machine Company, che nel 1924 divenne la International Business Machine
(IBM). Tra gli antenati degli anni '30 del calcolatore, figura il Memex, macchina immaginaria progettata da Vannevar Bush. L’idea era quella di un
sistema di archiviazione di dati utilizzato a scopi personali. Il dispositivo era descritto come una scrivania dotata di schermi traslucidi, una tastiera,
un set di pulsanti e delle leve. Il Memex avrebbe reso possibile la creazione da parte dell'utente di collegamenti tra foto e documenti, e per questo
motivo viene oggi ricordato come primo supporto per l'approccio all'ipertesto. Alan Turing formalizzò un modello di calcolatore universale e
dimostrò come ogni funzione calcolabile si possa eseguire attraverso un algoritmo installato su una Macchina di Turing, ma dimostrò anche come
per alcuni algoritmi non sia possibile sapere a priori se siano eseguibili in un tempo finito o infinito.
EVOLUZIONE DEL CALCOLATORE
Generazione 1: I tubi a vuoto (valvole) Nel 1939, fu la volta del matematico e fisico John Vincent Atanasoff e del suo allievo Clifford Berry i quali
costruirono l’Atanasoff Berry Computer, meglio noto come ABC. Si tratta del primo calcolatore digitale totalmente elettronico, ma mai brevettato.
Nel 1945, John von Neumann definisce l'architettura per calcolatori digitali programmabili tutt'ora in uso nella maggior parte dei dispositivi moderni
di questo tipo. La peculiarità dell'architettura di von Neumann risiede nel fatto che dati e programmi condividono la stessa memoria. Nel 1946
venne presentato l’ENIAC, il primo calcolatore elettronico basato interamente su tecnologia a valvole. Progettato presso l’Università della
Pennsylvania, fu il primo vero calcolatore dell’era elettronica in quanto eliminava tutti i dispositivi meccanici. L’ENIAC era in grado di compiere
operazioni molto complesse in pochissimo tempo per l'epoca, ma pesava 300 tonnellate e occupava 170 metri quadrati. Quella delle dimensioni
rimase per lungo tempo una delle più grandi sfide dell’industria dei calcolatori. Nel 1948, Claude Shannon introdusse il termine bit (contrazione di
binary digit), da lui coniato per designare l'unità elementare binaria di informazione (vero e falso, o 0 e 1).
Generazione 2: I transistor
Nel 1954, l’IBM propose il primo calcolatore commerciale con memoria su nastro magnetico. Tra le più importanti innovazioni di quegli anni, vi
furono l'uso dei transistor al posto dei tubi a vuoto e l’evoluzione dei linguaggi di programmazione. Nel 1959 venne lanciato l’IBM 705, che usava il
FORTRAN, un linguaggio di programmazione molto più vicino a quello umano rispetto alle istruzioni comprensibili dal calcolatore. I problemi
principali che ostacolavano la diffusione commerciale del calcolatore restavano i costi elevati e la dimensione di queste macchine.
Generazione 3: I circuiti integrati Il problema delle dimensioni durò fino al 1964, quando l'azienda italiana Olivetti introdusse Programma 101, da
molti considerato il primo personal computer (PC) della storia, in quanto disponeva delle principali caratteristiche dei grandi calcolatori dell'epoca,
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Anteprima parziale del testo

Scarica La Computazione e l'Informatica: Architettura e Memoria di Calcolatore e più Appunti in PDF di Elementi di Informatica solo su Docsity!

INFORMATICA

Nel linguaggio comune il termine “informatica” viene usato per riferirsi a tre aspetti:

  1. operativo : un insieme di applicazioni e manufatti (i computer);
  2. tecnologico : una tecnologia che realizza quelle applicazioni;
  3. culturale : una disciplina scientifica che fonda e rende possibile quella tecnologia. Si può pensare all'informatica come alla scienza che si occupa dello studio dei fondamenti teorici dell’informazione, degli algoritmi di elaborazione automatica delle informazioni, dell’implementazione di questi algoritmi, e, solo alla fine, dell’uso del calcolatore. Lo studio dell'informatica migliora le facoltà creative, logiche e cognitive; è intrinsecamente multidisciplinare; è uno strumento con cui modellare i problemi. Le branche più comuni dell’informatica: Informatica teorica (Teoria dell'informazione, Teoria della computazione, Algoritmi e strutture dati, Teoria dei linguaggi di programmazione) Informatica applicata (Architettura dei calcolatori, Sistemi e architetture Information Technology (IT), Reti di calcolatori, Basi di dati, Sicurezza informatica e crittografia, Interazione uomo-macchina, Intelligenza artificiale, Elaborazione digitale dei segnali, Programmazione, Sviluppo software, Sviluppo web, Sviluppo sistemi integrati) NASCITA DEL CALCOLATORE : Il termine calcolatore designa genericamente un sistema di elaborazione dati, nato in forma meccanica, sviluppatosi in forma analogica e giunto poi alla forma digitale. Il più antico strumento di calcolo fu l’abaco, in uso già 4000 anni fa in Cina. I primi veri progenitori dell’elaboratore moderno videro la luce agli inizi del XIX secolo. Nel 1804 Joseph Marie Jacquard introdusse una nuova tecnologia per i telai in grado di controllare il movimento di aghi, filo e tessuto attraverso schede perforate, automatizzando così la procedura di tessitura. Charles Babbage elaborò una macchina di calcolo in grado di compiere operazioni aritmetiche, ma non fu mai realizzata. Fu Ada Lovelace (considerata oggi la prima programmatrice della storia), ad accorgersi delle vere potenzialità della macchina di Babbage: sebbene fosse stata progettata per svolgere solo calcoli matematici, Ada riconobbe la possibilità di programmare la macchina per altri fini. In questa versatilità risiede la principale differenza tra una calcolatrice tradizionale e un calcolatore. Gottfried Wilhelm Leibniz sviluppò la logica come disciplina matematica e formale, con i suoi scritti sul sistema numerico binario. Nel suo sistema, l'uno e lo zero rappresentano i valori vero e falso. Le sue idee vennero riprese da George Boole, che pubblica la propria algebra booleana, creando un sistema nel quale è possibile trattare ogni relazione logica attraverso l'utilizzo di formule algebriche. Le operazioni (come l'addizione, la sottrazione e la moltiplicazione) vengono sostituite da operazioni logiche con valori di congiunzione, disgiunzione e negazione utilizzando solamente numeri binari (ossia costituiti dalle sole cifre 0 e 1). Alla fine del XIX secolo, Herman Hollerith, un funzionario statunitense dell’ufficio per il censimento, sviluppò una macchina tabulatrice, sempre a schede perforate, per automatizzare le operazioni di censimento. Il successo e la richiesta di queste macchine fu tale che nel 1896 Hollerith fondò la Tabulating Machine Company, che nel 1924 divenne la International Business Machine (IBM). Tra gli antenati degli anni '30 del calcolatore, figura il Memex, macchina immaginaria progettata da Vannevar Bush. L’idea era quella di un sistema di archiviazione di dati utilizzato a scopi personali. Il dispositivo era descritto come una scrivania dotata di schermi traslucidi, una tastiera, un set di pulsanti e delle leve. Il Memex avrebbe reso possibile la creazione da parte dell'utente di collegamenti tra foto e documenti, e per questo motivo viene oggi ricordato come primo supporto per l'approccio all'ipertesto. Alan Turing formalizzò un modello di calcolatore universale e dimostrò come ogni funzione calcolabile si possa eseguire attraverso un algoritmo installato su una Macchina di Turing, ma dimostrò anche come per alcuni algoritmi non sia possibile sapere a priori se siano eseguibili in un tempo finito o infinito. EVOLUZIONE DEL CALCOLATORE Generazione 1: I tubi a vuoto (valvole) Nel 1939, fu la volta del matematico e fisico John Vincent Atanasoff e del suo allievo Clifford Berry i quali costruirono l’Atanasoff Berry Computer, meglio noto come ABC. Si tratta del primo calcolatore digitale totalmente elettronico, ma mai brevettato. Nel 1945, John von Neumann definisce l'architettura per calcolatori digitali programmabili tutt'ora in uso nella maggior parte dei dispositivi moderni di questo tipo. La peculiarità dell'architettura di von Neumann risiede nel fatto che dati e programmi condividono la stessa memoria. Nel 1946 venne presentato l’ENIAC, il primo calcolatore elettronico basato interamente su tecnologia a valvole. Progettato presso l’Università della Pennsylvania, fu il primo vero calcolatore dell’era elettronica in quanto eliminava tutti i dispositivi meccanici. L’ENIAC era in grado di compiere operazioni molto complesse in pochissimo tempo per l'epoca, ma pesava 300 tonnellate e occupava 170 metri quadrati. Quella delle dimensioni rimase per lungo tempo una delle più grandi sfide dell’industria dei calcolatori. Nel 1948, Claude Shannon introdusse il termine bit (contrazione di binary digit), da lui coniato per designare l'unità elementare binaria di informazione (vero e falso, o 0 e 1). Generazione 2: I transistor Nel 1954, l’IBM propose il primo calcolatore commerciale con memoria su nastro magnetico. Tra le più importanti innovazioni di quegli anni, vi furono l'uso dei transistor al posto dei tubi a vuoto e l’evoluzione dei linguaggi di programmazione. Nel 1959 venne lanciato l’IBM 705, che usava il FORTRAN, un linguaggio di programmazione molto più vicino a quello umano rispetto alle istruzioni comprensibili dal calcolatore. I problemi principali che ostacolavano la diffusione commerciale del calcolatore restavano i costi elevati e la dimensione di queste macchine. Generazione 3: I circuiti integrati Il problema delle dimensioni durò fino al 1964, quando l'azienda italiana Olivetti introdusse Programma 101, da molti considerato il primo personal computer (PC) della storia, in quanto disponeva delle principali caratteristiche dei grandi calcolatori dell'epoca,

ma era sufficientemente compatto da stare su una scrivania. Tuttavia non aveva uno schermo: le informazioni erano trasmesse all'utente per mezzo di un nastro di carta stampata. Parallelamente, la Digital Equipement Corporation introdusse il suo primo minicomputer, il PDP-8, dotato di uno schermo molto rudimentale (sostanzialmente un oscilloscopio). Generazione 4: Il microprocessore Agli inizi degli anni ’70, la Intel Corporation sviluppò il microprocessore, il primo circuito integrato capace di contenere l’intera unità di calcolo di un calcolatore. In seguito venne commercializzato quello che viene oggi considerato il primo PC della storia per come lo intendiamo oggi, l'Apple II, con il suo sistema operativo chiamato Apple Dos. Solo quattro anni dopo, nel 1981, l’IBM brevettò il suo primo PC, destinato a imporsi come standard di riferimento con il sistema operativo MS-Dos prodotto dalla software house Microsoft. Generazione 5: Il calcolo parallelo e la rete Tra gli anni '80 e '90 si sono affermate in rapida successione tecnologie come le interfacce grafiche, la possibilità di compiere più operazioni in parallelo, e l'avvento di Internet, coadiuvate da un costante incremento della potenza di calcolo e delle capacità di memorizzazione. PROBLEMI, ALGORITMI E PROGRAMI Un algoritmo può essere definito come un metodo per risolvere in modo efficiente, univoco, universale, formalmente preciso e finito un problema. Le proprietà fondamentali di un algoritmo sono:  finitezza delle operazioni da svolgere;  non ambiguità del linguaggio in cui sono scritte le operazioni da effettuare. Questo significa che le istruzioni devono essere scritte in un linguaggio codificato e formale;  universalità della procedura algoritmica, nel senso che essa deve valere per tutti i problemi dello stesso genere;  completezza, ossia dichiarazione esplicita di tutte le operazioni necessarie allo svolgimento del compito. Infine, un programma può essere definito come un algoritmo scritto in un linguaggio comprensibile al calcolatore, che si appoggia a dei dati organizzati secondo una determinata strategia, vincolato dalle risorse disponibili. INFORMAZIONE E CODIFICA L’informazione può essere definita come un insieme di dati espressi mediante una rappresentazione simbolica ed inseriti in un contesto interpretativo. In generale, per rappresentare le informazioni è possibile adottare sistemi di simboli diversi. La corrispondenza tra simbolo proprio ed informazione si chiama codifica dell’informazione. Un codice è un insieme di simboli e di regole. Queste ultime sono necessarie a definire l’uso e il significato dei simboli. Codificare un’informazione significa determinare una corrispondenza fra i segni di un codice e i dati che costituiscono l’informazione e il suo significato. Di una stessa informazione sono possibili diverse codifiche che usano regole e segni diversi. Ad esempio, in un ristorante si può trovare un cartello con la scritta “vietato fumare” o più semplicemente il simbolo della sigaretta con il divieto (si possono utilizzare codici differenti per dire la stessa cosa).  attività di codifica e decodifica Non dovendo risultare ambiguo il messaggio, ad un simbolo può corrispondere una sola informazione. Riduzione del numero dei simboli: È possibile costruire un codice che consenta di rappresentare lo stesso numero di informazioni diverse utilizzando un numero inferiore di simboli. Ciò significa ridurre il numero di simboli a disposizione senza tuttavia ridurre il numero di informazioni che possono essere codificate. E' evidente che, avendo meno simboli a disposizione, la rappresentazione di un’informazione richiederà una combinazione di più simboli e quindi una maggiore lunghezza dei messaggi codificati. Importante è anche la posizione/ordine di questi simboli affinchè esprimano quello che vogliono esprimere. Codifica binaria: Normalmente si usa la numerazione decimale posizionale, dove una cifra assume un valore dipendente dalla posizione che occupa nel numero. Adottando una numerazione in base 10 si hanno 10 cifre con le quali costruire i numeri: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Esistono molti altri tipi di numerazione in cui il numero di cifre è minore a 10, come ad esempio nella numerazione binaria. Questa fu inventata nel XVII secolo da Gottfried Liebniz e si basa sull’utilizzo di soltanto due cifre: 0 e 1. La differenza è che mentre nella numerazione decimale il valore si misura in potenze di 10, nel caso della numerazione binaria il valore si misura in potenze di 2. A parità di valore da scrivere con la numerazione binaria, è necessario impiegare molte più cifre. Questo tipo di numerazione divenne fondamentale con l’avvento dei calcolatori elettronici, poiché le due cifre 0 e 1 sono intuitivamente associabili ai due possibili stati fisici del calcolatore, come ad esempio passaggio/non-passaggio di corrente attraverso un cavo elettrico; polarizzazione/non-polarizzazione di una sostanza magnetizzabile; carica elettrica positiva/negativa di una sostanza. Per manipolare ed elaborare informazioni (numeri, testo, immagini, audio, video), il calcolatore ha bisogno che queste siano codificate attraverso un codice composto dai soli simboli di 0 e 1. Tale rappresentazione dell’informazione prende il nome di rappresentazione binaria o rappresentazione digitale. Un bit (binary digit) rappresenta l’unità minima di informazione, ossia una sola unità informativa che può avere valore 0 o 1. Per poter rappresentare un numero maggiore di informazioni sarà necessario combinare i bit in sequenze. Unità di misura dell'informazione digitale: In informatica, dopo il bit, un'altra unità di misura fondamentale è il byte. Un byte è formato da una sequenza di 8 bit contigui e può rappresentare 256 informazioni diverse. Questo dipende dal fatto che, avendo 8 bit a disposizione e potendo assumere ogni bit due valori (0 e 1), è possibile definire 28 all’ottava=256 diverse combinazioni di bit. Come per ogni unità di misura, anche il byte

Grazie a campionamento e quantizzazione è possibile ottenere una sequenza digitale di numeri (discreta nel tempo o nello spazio e nell'ampiezza) che approssimi a piacere il segnale continuo originale. Nel caso dei suoni la frequenza di campionamento (il numero di volte al secondo con cui si misurano le variazioni di pressione) determina quali siano i suoni più acuti rappresentabili, mentre la quantizzazione determina la soglia del volume minimo rappresentabile. Nel caso delle immagini il campionamento corrisponde alla risoluzione, e la quantizzazione determina la quantità di colori rappresentabili. Nel caso di un filmato il campionamento nel tempo corrisponde al numero di fotogrammi al secondo, mentre ogni singolo fotogramma lo si può considerare come un'immagine a sé. Rappresentazione digitale delle immagini: Per le immagini l’unità minima di informazione è rappresentata dal pixel (picture element – elemento dell’immagine). In sostanza si campiona l’immagine attraverso una griglia regolare in cui ogni cella è un pixel e a ogni pixel è associato un colore. Più la griglia è fitta, maggiore sarà il numero di pixel e di conseguenza migliore sarà la risoluzione dell’immagine. La codifica di un'immagine realizzata in questo modo è chiamata bitmap o raster. La risoluzione e la dimensione di un’immagine dipendono dal numero di pixel da cui è composta: un’immagine la cui griglia misura 800 colonne x 600 righe sarà divisa in 480000 pixel (0.48 megapixel). Ogni pixel rappresenta un punto di colore, la cui tonalità è descritta mediante una sequenza di bit. Se l’immagine è in bianco e nero sarà sufficiente un unico bit per descrivere ciascun pixel: 0 per il nero e 1 per il bianco. Se l’immagine è a colori sarà necessario un numero maggiore di bit per pixel, che dipende da come vengono codificati i colori. Un sistema per la rappresentazione digitale dei colori viene detto modello di colore, e ne esistono molti. La maggior parte usa i colori primari convenzionali per derivare tutte le possibili tonalità. Il più utilizzato è lo schema RGB, (Red Green Blue, rosso verde blu) che sono i colori primari su cui il modello è costruito. Per distinguere i colori l’occhio umano utilizza fotorecettori di tre tipi, rispettivamente più sensibili al rosso, al verde o al blu. Questi colori sono quindi detti primari perchè miscelandoli è possibile evocare la percezione di qualsiasi altro colore. Solitamente in RGB per ognuno dei tre colori primari è utilizzato un byte, per un totale di 24 bit per pixel. E' quindi possibile rappresentare 256 sfumature diverse per ogni colore primario, quindi complessivamente 256 x 256 x 256 colori diversi, cioè circa 16 milioni di tonalità di colore. In definitiva, la rappresentazione binaria di un’immagine è costituita da una sequenza di pixel, cioè gruppi di bit che descrivono il colore associato a ciascun punto. Se consideriamo un’immagine di dimensione 640 x 480 espressa secondo lo schema RGB, possiamo calcolare quanti byte saranno necessari per memorizzare tale immagine: 640 x 480 = 307200 pixel, ognuno dei quali richiede 3 byte per rappresentare il colore associato, quindi 307200 x 3 = 921600 byte = 900 KiB. Rappresentazione digitale dei suoni: Per i suoni l’unità minima di informazione è rappresentata da un campione di ampiezza, cioè il valore di ampiezza dell'onda sonora in un determinato istante. Gli esempi in Figura 2.7 e 2.8 si riferiscono proprio al suono (questa codifica prende il nome di Pulse Code Modulation, PCM). Un suono può essere descritto come la sensazione causata dall'oscillazione più o meno periodica dell'aria che incide sul timpano dell'ascoltatore. Oscillazioni di diversa ampiezza danno origine alla sensazione di volumi più o meno elevati, mentre il periodo delle oscillazioni incide sulla percezione di suoni gravi o acuti. L'orecchio umano può sentire suoni che oscillano da 20 fino a 20000 volte al secondo (da 20 a 20000 hertz, o Hz). Dunque, per il teorema di Nyquist-Shannon, in genere si campiona il segnale più di 40000 volte al secondo (solitamente 44100 o 48000). Tuttavia, per suoni particolari come la voce, tutte le oscillazioni sopra i 4000 Hz non hanno un particolare contenuto informativo; non è quindi raro vedere codifiche a 8000 campioni al secondo per applicazioni come telefonia o messaggistica vocale. Riguardo alla precisione di ogni campione audio, si è scelto un numero di bit consono a rappresentare la gamma di volumi a cui si è normalmente esposti, dal sussurro fino a rumori forti (ma sotto la soglia del dolore); questo valore è stato fissato a 16 bit. Tuttavia non è raro trovare suoni registrati a 24 bit, in modo da poter sfruttare una precisione maggiore durante le fasi di lavorazione di un prodotto, come può essere un disco musicale. Infine si noti che l'essere umano è dotato di due orecchie. Questo gli permette di localizzare la direzione da cui provengono i suoni. Per poter codificare (almeno in parte) questo tipo di informazione, solitamente vengono rappresentati segnali audio stereofonici, cioè composti da due sequenze di campioni, una relativa al canale sinistro ed una al canale destro. Esistono poi codifiche a più canali (come il 5.1, composto da 6 canali indipendenti), che permettono una maggiore precisione spaziale. In definitiva, la rappresentazione binaria di un suono è costituita da una sequenza di campioni, cioè gruppi di bit che descrivono il valore di pressione sonora di ciascun canale. A scopo esemplificativo si può calcolare la memoria necessaria a memorizzare un minuto di musica in qualità CD: 60 secondi x 44100 campioni al secondo x 16 bit per campione x 2 canali = 84672000 bit = 10584000 byte =10336 KiB = 10.1 MiB Rappresentazione digitale dei video: Per un video l’unità minima di informazione è rappresentata dal fotogramma, a sua volta composto da pixel. Un video quindi eredita quanto detto relativamente alle immagini, con l'aggiunta però di avere tante immagini quanti sono i fotogrammi di cui è composto, riprodotte ad una velocità sufficientemente alta da fornire, all'occhio umano, l'illusione del movimento. Per via del fenomeno di persistenza delle immagini sulla retina, l'occhio umano fatica a percepire come separate tra loro immagini che si susseguono ad una velocità minima di 10 o 15 fotogrammi al secondo (fps), dunque tale velocità è sufficiente per creare l'impressione del movimento. Tuttavia velocità più elevate consentono di creare un'illusione più realistica, e non è raro trovare codifiche a 25, 30, 50 o 60 fps.

Va inoltre considerato che anche in questo caso vale il teorema di Nyquist-Shannon: sarà capitato di vedere video in cui le pale di un elicottero sembrino ferme o girino molto lentamente; questo è il tipico effetto di aliasing temporale che ha luogo quando il movimento da codificare è molto superiore alla velocità con cui si campiona. Materiale registrato a fps più alti (come 120, 240, 300 o addirittura >1000) viene impiegato per la riproduzione in "slow motion" (movimento rallentato), viene cioè riprodotto ad una velocità inferiore per osservare nel dettaglio i movimenti del soggetto del video, altrimenti troppo veloci per essere notati. La tecnica opposta prende invece il nome di "stop motion"; in questo caso i fotogrammi sono registrati a distanza di diversi minuti l'uno dall'altro e poi riprodotti a fps tradizionali, in modo da rendere percepibili movimenti altrimenti troppo lenti per essere notati. Infine si noti che l'essere umano, in genere, è dotato di due occhi, che consentono la cosiddetta visione stereoscopica. Questo permette di valutare la distanza a cui si trovano gli oggetti grazie alle diverse informazioni che ogni occhio riceve. Per poter codificare (almeno in parte) questo tipo di informazione è possibile codificare video stereoscopici, cioè composti da due sequenze di fotogrammi, una relativa all'occhio sinistro ed una all'occhio destro. Queste due sequenze possono essere memorizzate: come aree diverse dello stesso fotogramma; come alternarsi di fotogrammi dell'una e dell'altra sequenza; come sequenze distinte (una successiva all'altra). In definitiva, la rappresentazione binaria di un video è costituita da una sequenza immagini, complete di un'indicazione della velocità a cui vanno riprodotte. A scopo esemplificativo si può calcolare la memoria necessaria a memorizzare un minuto di video in Full-HD a 30 fps: 60 secondi x 30 fps = 1800 immagini, ognuna delle quali con una risoluzione di 1920 colonne x 1080 righe = 2073600 pixel (circa 2 megapixel) 1800 immagini x 2073600 pixel x 24 bit per pixel = 89579520000 bit = 11197440000 byte = 10.43 GiB Elaborazione dei dati multimediali: La comodità di codificare il materiale multimediale nei modi descritti in precedenza risiede nel fatto che è possibile applicare modifiche ai dati in maniera molto efficiente sfruttando semplici operazioni matematiche. Si può notare come la conversione di una lettera maiuscola in una lettera minuscola si può ottenere sommando 32 al numero con cui è codificata. Lo stesso vale per i formati multimediali: se si volesse conferire una tinta rossa ad una foto basterebbe sommare una piccola costante a tutti i byte relativi a quel colore primario, tale da aumentare la quantità totale di rosso che giunge all'occhio. Analogamente, si può simulare l'eco in una registrazione sommando ad ogni campione il campione che lo precede ad una certa distanza. Principali formati multimediali: Lo studente più attento si sarà accorto che il numero di bit necessario alla memorizzazione di suoni, immagini e video è decisamente superiore a quanto suggerisce l'esperienza: quasi 1 MiB per una piccola immagine, 10 MiB per un audio di 1 minuto e addirittura 10 GiB per un breve video ad alta qualità. Questa discrepanza trova una giustificazione nel fatto che il modo in cui viene rappresentato nativamente un dato non corrisponde necessariamente al modo in cui viene archiviato in un contenitore. Vi sono infatti 3 modi di memorizzare l'informazione: in modo non compresso, in modo compresso senza perdita di informazioni (lossless), e in modo compresso con perdita di informazioni (lossy). I metodi di memorizzazione non compressi comportano un'occupazione di memoria che corrisponde alla memoria necessaria per la rappresentazione originale. A fronte di questo utilizzo smodato di memoria vi è il vantaggio di poter manipolare il materiale multimediale in modo diretto, senza passaggi intermedi necessari a convertire le informazioni in una forma comprensibile al calcolatore. Formati di questo tipo sono ideali per le fasi di lavorazione del bene multimediale. I metodi di compressione lossless si basano sull'idea di eliminare ciò che è ridondante, si evita cioè di memorizzare informazioni inutilmente ripetute. Questo comporta un risparmio di memoria che in media si aggira intorno al 50% dell'occupazione originale. Il costo di questo risparmio si riflette nella necessità di reintrodurre la ridondanza (decompressione) per poter elaborare le informazioni (fosse anche solo per visualizzare l'immagine su schermo o sentire il suono). Va comunque notato che la decompressione di un file lossless dà origine alle stesse informazioni di partenza, senza che sia scartato alcun dettaglio. Formati di questo tipo sono quindi l'ideale per l'archiviazione o la trasmissione di dati nella forma più conservativa, senza che però sia sprecata memoria. Infine, i metodi di compressione lossy si basano sull'idea di eliminare ciò che è irrilevante, si evita cioè di memorizzare informazioni non percepibili dall'utente. Viene quindi persa in modo definitivo tutta quell'informazione che in media non viene percepita. Questo comporta un oggettivo degrado dell'informazione, con la potenziale introduzione di artefatti e distorsioni non presenti nel dato originale. Il risparmio che ne deriva può arrivare fino al 90% dell'occupazione originale. Oltre all'oggettiva perdita di informazioni, il costo è che la decompressone in genere è più onerosa per il calcolatore in termini di potenza di calcolo richiesta. Inoltre, sebbene la decompressione sia sempre necessaria per la fruizione del dato originale, è caldamente sconsigliata la manipolazione dei dati e la successiva ricompressione lossy, in quanto si affronterebbe una nuova perdita di informazioni, con l'introduzione di sempre più distorsioni e artefatti. Formati di questo tipo sono ideali per la fruizione in streaming da parte dell'utente finale. Nella tabella seguente si illustrano i nomi di alcuni formati e contenitori di questo tipo, mentre in Figura 2.10 si può vedere un esempio di immagine che ha subito diverse ri-codifiche (decompressione e ricompressione) in formato JPEG. ANATOMIA DI UN CALCOLATORE Grazie al lavoro intellettuale di Alan Turing, è possibile modellare il funzionamento di un calcolatore come l’interazione tra componenti fisiche hardware e programmi software. Il termine hardware, letteralmente “ferraglia”, designa la parte fisica della macchina, composta da tutte le componenti materiali che ne consentono il funzionamento sulla base dei principi dell’elettronica. Ogni componente svolge una sua funzione di base: l'unità di calcolo o Unità Centrale di Elaborazione (CPU) si occupa di elaborare i dati ed in genere coincide con uno o più microprocessori; la memoria centrale, o di lavoro (Random Access Memory, RAM) contiene i dati in uso e/o i programmi in esecuzione; i bus permettono il trasferimento dei dati tra le diverse componenti;

 dischi fissi (hard disk): utilizzati per l’archiviazioni di programmi e dati e generalmente collocati all'interno del calcolatore. Esistono anche hard disk esterni, di solito collegabili tramite porte USB. Questi dispositivi sono composti da una pila di dischi metallici rotanti collegati a due testine di lettura/scrittura ciascuno (una per lato del disco). Le testine possono spostarsi dalla parte più esterna del disco alla parte più interna (il funzionamento è pressoché identico a quello dei vecchi lettori di dischi in vinile) e possono magnetizzare o smagnetizzare i vari blocchi dati in cui i dischi sono suddivisi;  supporti a lettura ottica (CD-ROM, DVD, Blu-Ray): sono utilizzati per la distribuzione del software e di grossi archivi di dati multimediali (testi audio, foto, video). Sono generalmente usati come supporto alla memorizzazione di dati in sola lettura e richiedono dispositivi dedicati, cioè i masterizzatori, per poter eseguire operazioni di scrittura. Il funzionamento meccanico di questi dispositivi è praticamente identico a quello degli hard disk: la principale differenza riguarda l'interazione della testina con il disco che, in questo caso, è basata su un principio ottico (la testina emana luce e riceve la luce riflessa dal disco);  memorie flash (chiavette USB, Solid State Drive, memory card): questa tipologia di memorie è di recente introduzione e funziona, come la memoria primaria, senza l'ausilio di parti meccaniche. Le memorie flash, generalmente basate su principi di fisica quantistica (come l'effetto tunnel), sono ad accesso casuale, molto più veloci di tutte le altre tipologie di memorie secondarie e permettono una notevole riduzione dei consumi (dovuta all'assenza di parti meccaniche). Negli ultimi anni si sta assistendo all'introduzione di supporti chiamati SSD (Solid State Drive) utilizzati come sostituti dei vecchi hard disk: questi nuovi dischi sono ancora molto costosi e non riescono a raggiungere la capacità di memorizzazione dei vecchi hard disk, ma garantiscono enormi incrementi della velocità di lettura e scrittura oltre che consumi ed emissioni sonore estremamente ridotte. Le periferiche: Oltre alla CPU e alla memoria primaria e secondaria, il calcolatore ha bisogno di dispositivi di input e output chiamati periferiche per supportare l'interazione con l’ambiente esterno. Le periferiche si collegano al calcolatore mediante interfacce di comunicazione (comunemente dette porte), e possono variare a seconda del tipo e della velocità di trasmissione. Inoltre, per ogni tipo di periferica esiste una scheda chiamata controller che viene connessa alla scheda madre e che ha il compito di gestire il comportamento della periferica. I dispositivi di input consentono di comunicare al calcolatore informazioni provenienti dall'utente o dall'ambiente esterno. I principali dispositivi di input sono: la tastiera , gli strumenti di puntamento (mouse), lo scanner , il microfono , le macchine fotografiche e le videocamere digitali. La tastiera è il dispositivo di input principale ed è comunemente affiancata dagli strumenti di puntamento. Oltre al popolarissimo mouse, un esempio di strumento di puntamento è il touchpad, molto diffuso sui calcolatori portatili e con funzionalità analoghe a quelle del mouse. In particolare, il touchpad è costituito da un’area sensibile al movimento e alla pressione delle dita che è collegata con il puntatore sullo schermo. Lo scanner è una periferica che si collega alla macchina, spesso usando una porta che è detta USB (Universal Serial Bus), che permette di rappresentare digitalmente una sorgente cartacea (una fotografia o un documento scritto). Microfoni, macchine fotografiche e videocamere digitali sono dispositivi analoghi a quelli tradizionalmente conosciuti, con la differenza che sono in grado di comunicare al calcolatore una versione digitale del suono, delle fotografie e dei video realizzati. I dispositivi di output consentono al calcolatore di comunicare all'esterno informazioni in esso contenute. I principali dispositivi di output sono: lo schermo , la stampante e le casse per la riproduzione del suono. E’ importante notare che nella maggior parte dei casi il collegamento al calcolatore di una periferica richiede, oltre al collegamento dei cavi alla porta adeguata, l’installazione di uno specifico software chiamato driver che ha il compito di gestire il flusso di dati diretto al e proveniente dal dispositivo, facendo in modo che la periferica funzioni correttamente. Esso rappresenta in pratica il vocabolario contenente il "linguaggio" di comunicazione della periferica. Oltre a quelle menzionate, esistono altre tipologie di periferiche. Tra le più comuni è possibile citare la scheda di rete, che permette di collegare un calcolatore ad altri calcolatori tramite una rete locale o la rete Internet, e il modem, che consente di far comunicare due calcolatori tramite la rete telefonica. Si tratta di due esempi di periferiche che sono simultaneamente di input e di output. IL RUOLO DEL SOFTWARE Se l'hardware è la componente materiale di un calcolatore, il software ne costituisce la componente immateriale. Il termine software (letteralmente "materia morbida") è l'insieme dei programmi che possono essere eseguiti da un calcolatore. In particolare, un singolo programma software è un insieme di istruzioni che un calcolatore, e più precisamente la CPU, deve eseguire per portare a compimento un certo compito (task). Microsoft Word è un esempio di programma software che contiene istruzioni per la creazione e la gestione di documenti. Nel contesto di Word, il pulsante che consente di formattare in grassetto un testo selezionato è una funzione software associata a un insieme di istruzioni che consentono di raggiungere l’obiettivo (cioè visualizzare in grassetto una data porzione di testo). Firefox o Chrome sono invece esempi di programmi software che si propongono come strumenti per reperire e visualizzare pagine web. E’ facile pensare a numerosi altri esempi di programmi software, ciascuno con le proprie caratteristiche e finalità. Ne risulta che esistono diverse tipologie di programmi software di cui è opportuno conoscere le specificità.

Tipologie di software: E’ consuetudine suddividere il software in due macro-categorie: il software di sistema e il software applicativo. Il software di sistema è l’insieme dei programmi che gestiscono le risorse e il comportamento del calcolatore. In questa categoria, il software più importante è il sistema operativo, un insieme di programmi che controlla e gestisce le funzionalità legate a CPU, memoria, periferiche e dispositivi di input/output collegati al calcolatore. Nel software di sistema sono inclusi i firmware e i driver. Il firmware è un software integrato in un dispositivo elettronico per svolgere funzioni specifiche, come l’avvio del dispositivo stesso. Un esempio di firmware è il BIOS (Basic Input-Output System) che è un firmware integrato sulla scheda madre del calcolatore con il compito di eseguire la procedura di avvio all'accensione della macchina. Il driver è un software che affianca uno specifico dispositivo e ne consente il corretto funzionamento. Il driver è normalmente installato all'interno del sistema operativo e consente al calcolatore di utilizzare il dispositivo. Ogni dispositivo possiede il proprio driver, e il driver è composto da un insieme di procedure che controllano le varie funzionalità del dispositivo. Ad esempio, una stampante, come ogni dispositivo collegabile a un calcolatore, è dotata del proprio driver, la cui installazione è necessaria affinché il calcolatore possa correttamente farne uso. Il software applicativo comprende tutti i programmi che consentono all'utente di eseguire compiti specifici. Sono esempi di software applicativo i programmi per la creazione e la gestione di documenti (es. Microsoft Word), i fogli di calcolo (es. Microsoft Excel), i browser per la navigazione su web (es. Mozilla Firefox), i programmi per la gestione della posta elettronica (es. Microsoft Outlook), i programmi per l’elaborazione delle immagini (es. Adobe Photoshop) e così via. Il sistema operativo: Il sistema operativo (SO) è il software di sistema più importante per il corretto funzionamento di un calcolatore e presiede numerose funzionalità. Da un lato, il sistema operativo si occupa di gestire le componenti fisiche del calcolatore. In particolare, sono di sua competenza funzioni come: o la gestione della CPU e della memoria principale (RAM). In ogni istante, il calcolatore esegue numerosi programmi. Per questo motivo, il sistema operativo deve stabilire come e in quale ordine questi programmi avranno accesso alla CPU, allocando inoltre lo spazio in memoria principale per ciascuno di essi; o la gestione dei file e la memorizzazione sui dispositivi di memoria secondaria. Il sistema operativo è dotato di un modulo denominato file system per la gestione dei file. Questo modulo presiede le operazioni di salvataggio/memorizzazione dei file e le corrispondenti operazioni di lettura/caricamento dei medesimi. Il file system utilizza un’organizzazione dei file in cartelle (directory) per favorire una gestione ordinata e intuitiva dello spazio disponibile da parte dell’utente; o l’interazione con le periferiche. Tramite i driver, il sistema operativo è in grado di comunicare con i dispositivi collegati al calcolatore consentendone il corretto funzionamento. Inoltre, il sistema operativo si occupa di gestire l’interazione fra l’utente e il calcolatore. In particolare, è compito del sistema operativo intercettare i comandi dell’utente e fare in modo che essi siano correttamente eseguiti orchestrando il funzionamento delle varie componenti del calcolatore che si rendessero necessarie. A tal fine, il sistema operativo è dotato di un’interfaccia, normalmente visuale, che consente all'utente di comunicare in maniera intuitiva e naturale con il calcolatore. Questa interfaccia è chiamata GUI (Graphical User Interface) e utilizza strumenti come finestre, pulsanti e puntatori per fornire all'utente gli strumenti necessari per invocare l’esecuzione dei comandi. Ad esempio, tramite gli strumenti di input come la tastiera e il mouse, l’utente può invocare la stampa di un documento. Il sistema operativo intercetta il comando e fa in modo che il documento richiesto sia passato alla stampante. Tramite il driver della stampante, il sistema operativo manda in stampa il documento e produce l’output richiesto. Quale sistema operativo? Il sistema operativo è lo stesso per tutti i calcolatori? La risposta è no: esistono sistemi operativi diversi, ognuno con le proprie caratteristiche e peculiarità. I sistemi operativi più diffusi e conosciuti sono Microsoft Windows, Linux, Apple Mac OS X e Android. Windows è un prodotto della società statunitense Microsoft e prende il nome dall'elemento che ne caratterizza l’interfaccia grafica: la finestra (window). Nel corso degli anni, le versioni di Microsoft Windows che sono andate succedendosi sono piuttosto numerose: Windows 95, 98, 2000, XP, Vista, 7, 8 e 10, solo per citarne alcune. Si tratta di un SO disponibile per numerose piattaforme, cioè installabile su calcolatori con diverse tipologie di microprocessore e scheda madre. Microsoft Windows è un SO commerciale, è dunque necessario pagare l’acquisto di una licenza per poterlo installare su un calcolatore. Linux è un SO non commerciale e può essere installato su un calcolatore senza dover pagare alcuna licenza. La prima versione nasce nel 1991 a opera di Linus Torvalds, un giovane studente da cui il sistema ereditò il nome. Si tratta di un SO estremamente versatile (ispirato ad un importante sistema dell'epoca chiamato UNIX) e, come Microsoft Windows, installabile su numerose piattaforme. Oggi questo SO è disponibile in svariate distribuzioni. Le diverse distribuzioni Linux condividono l’uso del medesimo nucleo (kernel) del sistema e si differenziano nei restanti moduli. Ne risulta che le varie distribuzioni possono presentare differenze anche sostanziali per l’utente. Sono esempi di distribuzioni Ubuntu, Fedora e SuSE. Mac OS X è un prodotto della società statunitense Apple ed è concepito per essere installato solo ed esclusivamente sui dispositivi di questo stesso produttore (PC o dispositivi mobili). Come Microsoft Windows, anche Mac OS X è un prodotto commerciale ed è necessario pagare una licenza per installarlo su un calcolatore; come Linux, anche questo SO è ispirato al SO UNIX. Android è un sistema operativo non commerciale sviluppato da Alphabet (azienda nota anche col nome Google) basato su Linux, ma ottimizzato per i dispositivi mobili (smartphone, tablet ecc). E’ possibile scegliere il sistema operativo da installare sul proprio calcolatore? In genere, all'acquisto del calcolatore, il sistema operativo è già installato (e l’eventuale licenza d’uso già pagata in caso di prodotto commerciale). Installare un nuovo sistema operativo può implicare l’acquisto di

 Software per grafica (disegno, fotoritocco, progettazione). Consentono la modifica e la manipolazione di immagini e oggetti di tipo grafico. Esempi di software di questo tipo sono Adobe Photoshop, Adobe Illustrator, Autocad e Gimp.  Software per la riproduzione audio e video. Esempi di software di questo tipo sono Windows Media Player, Video Lan Player, iTunes, QuickTime player e FooBar.  Software per la navigazione su web (browser). Consentono di reperire e visualizzare pagine web. Esempi di software appartenenti a questa categoria sono Microsoft Edge, Google Chrome, Safari, Opera e Mozilla Firefox.  Software per scrivere (sviluppare) software. Si tratta di complessi ecosistemi composti (nella forma più basilare) da un semplice applicativo capace di scrivere del testo non formattato e da un secondo applicativo (il compilatore) in grado di tradurre il testo scritto in un linguaggio di alto livello (il codice sorgente) in linguaggio comprensibile dal calcolatore (il codice macchina).  Software gestionali, concepiti e sviluppati per soddisfare le esigenze di realtà specifiche. I software di gestione di ospedali, biblioteche, uffici, magazzini sono esempi di questo tipo. I software gestionali sono commissionati dall'interessato (l'azienda che necessita del software per le proprie esigenze gestionali) ad una o più società di sviluppo software (software house) concordando le funzionalità da sviluppare e il prezzo da corrispondere. Come il calcolatore capisce come interpretare un file: Quando l'utente vuole visualizzare o modificare il contenuto di un file, il sistema operativo si occupa di eseguire l'applicazione più adatta per decodificare e manipolare i dati in esso contenuti. Ogni sistema operativo ha una strategia diversa per riconoscere la tipologia di un file (immagine, testo, suono, ecc). Le tecniche principali sono le seguenti: -Estensione: In Windows i caratteri successivi all'ultimo punto (".") determinano l'estensione del file (nascosta per impostazione predefinita). Ad ogni estensione è associata una applicazione predefinita, che può essere cambiata dall'utente. Si tratta di un metodo molto veloce per capire di che tipo è un file, ma se per errore l'estensione viene cancellata o cambiata possono insorgere dei problemi. -Metadati espliciti: In Mac OS X ogni file è accompagnato da un file nascosto con lo stesso nome, ma preceduto da un punto. Questo contiene informazioni aggiuntive che permettono al sistema operativo di tenere traccia di quale sia stata l'ultima applicazione che ha elaborato il file, e quindi di usarla nuovamente per l'interpretazione (senza l'obbligo che i file dello stesso tipo condividano la stessa applicazione predefinita). -Magic number: Un sistema più robusto dei precedenti perchè indipendente dal nome del file o da altri file collaterali (informazioni che si perdono facilmente) prevede l'utilizzo di dati addizionali salvati in testa al file (chiamate header o intestazione), e di convenzioni per interpretare tali dati. Questo metodo era utilizzato in sistemi UNIX, ma è in uso ancora oggi da parte di applicazioni specifiche. Una volta eseguita l'applicazione più adatta (secondo uno dei metodi precedenti) ad aprire ad esempio un'immagine con estensione ".tif", questa riconosce che il tipo di contenitore sia effettivamente TIFF grazie ad un codice salvato nei primissimi byte del file (in questo caso "4D 4D 00 2A"). Ogni tipo di file inoltre comprende nell'header anche informazioni circa la codifica utilizzata (che nel caso di un TIFF lossy o lossless, con indicazioni anche sulle dimensioni dell'immagine, la risoluzione e il profilo colore). INTRODUZIONE AI PERICOLI LEGATI ALL’INFORMATICA In meno di 60 anni l'informatica ha cambiato il mondo. Questa ondata di novità ha aperto molte possibilità e ha migliorato la vita di molte persone, ma si è abbattuta sulla società ad una velocità superiore alla sua capacità di adattamento, esponendo quindi la popolazione a rischi notevoli, specialmente per chi non ha una alfabetizzazione informatica. Uno dei rischi più grandi per la società è proprio quello di dipendere da sistemi così complessi senza conoscerli: da un lato diventa difficile interpretarne il comportamento e si tende a pensarli come un oracolo infallibile (quando invece sono fallibili, in quanto prodotto umano), dall'altro perchè la complessità comporta una certa difficoltà di manutenzione, e dipendere da qualcosa che non si sa riparare è un rischio notevole, che trasforma la tecnologia in una vulnerabilità. Un ulteriore rischio è quello del sovraccarico cognitivo (o information overload). Fenomeno che di per sé è sempre esistito, ma che ha avuto un grande impatto con l'avvento dell'informatica e di Internet. Si tratta di un disturbo che si manifesta quando si ricevono troppe informazioni, rendendo impossibile prendere decisioni o riuscire a concentrarsi su una singola informazione. Nel contesto dell'informatica, si parla di information overload in due circostanze: nel piccolo può essere causato da interfacce grafiche o siti web mal progettati, che inibiscono la capacità di discernere ciò che è importante da ciò che non lo è per via della mole di dati e del modo in cui le informazioni sono presentate. Esiste però anche una dimensione patologica del fenomeno, condizione in cui l'utente passa il tempo navigando compulsivamente da un sito all'altro o scorrendo la pagina di un social network, cercando informazioni sempre più complete o aggiornate, non riuscendo a fermarsi o a ricordarne alcuna, provando un iniziale ed effimero senso di piacere alla comparsa di nuove informazioni, che però lascia subito il posto al bisogno di ulteriori aggiornamenti, ricerca che viene percepita come un dovere o una necessità. La società odierna è plasmata dall'informazione e dalle tecnologie informatiche, attraverso un'influenza reciproca tra ciò che accade nel mondo reale e ciò che accade online. Questo estende il concetto di cittadinanza: la definizione di diritti e doveri deve tenere il passo con le possibilità offerte dalla tecnologia. Si tratta di un lavoro di aggiornamento legislativo e culturale tutt'altro che semplice, in cui non è sempre possibile applicare paradigmi tradizionali, e dove l'informatica stessa propone nuovi paradigmi (come ad esempio la radicalizzazione del principio di trasparenza e libero accesso ai dati che, insieme ai modelli di sviluppo partecipativi, è uno degli aspetti caratterizzanti la cultura Open Source e l'etica hacker). In sintesi, il calcolatore (in ogni sua forma) ha davvero una funzione strategica, e per questo l'infrastruttura va difesa, ma senza che vengano minate la libertà e la privacy dei singoli (ad esempio a seguito dell'introduzione di politiche di priorità di alcuni dati rispetto ad altri, che comprometterebbero la neutralità della rete senza che sussista alcuna ragione tecnica). A loro volta, però, gli utenti hanno responsabilità legate alla sicurezza del sistema e alla diffusione delle informazioni. Questa lezione è dedicata ai problemi di sicurezza informatica (ossia come difendere l'infrastruttura) e alle insidie sociali che sfruttano il mezzo informatico. Perchè la privacy è importante?

Quella corrente è definita da alcuni come l'epoca del capitalismo cognitivo, dove ciò che ha valore sono le idee e i beni immateriali (come i dati) più che i prodotti materiali. In questo contesto vale la pena chiedersi cosa si possa celare dietro ad un servizio gratuito come un social network, un servizio di messaggistica o un motore di ricerca. Per i servizi di questo tipo, caratterizzati dalla possibilità di caricare contenuti propri (dati personali e non), i dati stessi costituiscono la forma di pagamento per il servizio ricevuto. Nella maggior parte dei casi, infatti, chi offre il servizio monetizza il suo investimento attraverso la profilazione dell'utente (sotto l'esplicito consenso dell'utente stesso, fornito al momento della registrazione). Per profilazione si intende la raccolta di informazioni al fine di suddividere l'utenza in categorie di comportamento. I fornitori di servizi possono fare un triplice uso dei dati in loro possesso, e ognuno di questi usi nasconde potenziali insidie:  Utilizzo dei dati per la scelta di contenuti personalizzati: dalla cronologia delle ricerche o da ciò che si scrive nei servizi di messaggistica e di condivisione, il fornitore di servizi (attraverso opportuni algoritmi) può presentare all'utente contenuti conformi a quelli che sono i suoi interessi e le sue opinioni. Per quanto apparentemente utile, questo può portare all'involontario offuscamento di contenuti contrari al suo sentire, creando di fatto una bolla nella quale tutto sembra confermare il suo punto di vista, allontanandolo da una corretta percezione della realtà.  Vendita a terze parti di servizi basati sui dati di un utente: un fornitore di servizi può vendere a terze parti spazi pubblicitari personalizzati, dedicati cioè ad una specifica categoria di utenti. Sebbene possa fare piacere non vedere pubblicità completamente casuali, il rischio in questo caso risiede nel fatto che dai dati è possibile evincere con precisione anche quale sia la personalità dell'utente, inserzionisti malevoli interessati alla manipolazione dell'opinione pubblica potrebbero confezionare contenuti e pubblicità adatti a cambiare la percezione di un tema politico o sociale. Vendita dei dati a terze parti: i dati raccolti da un fornitore di servizi possono infine essere venduti a terze parti per svariati tipi di indagine, ad esempio per progettare nuovi prodotti in linea con i desideri dei possibili acquirenti. Tuttavia una volta che i dati sono in possesso di altri non è sempre facile capire l'uso che ne sarà fatto. Emblematico è il caso di Cambridge Analitica, che sfruttando la raccolta illegale di dati di milioni di utenti ha estratto il profilo psicologico di tutti coloro fossero indecisi riguardo alle preferenze di voto, ed in seguito, mediante pubblicità mirate al punto precedente, ha influenzato l'opinione pubblica cambiando le sorti di almeno due importanti votazioni del biennio 2016-2017, ingerendo così sugli equilibri geopolitici degli anni successivi. In risposta a questo tipo di pericoli, la Comunità Europea ha proposto la direttiva GDPR (Regolamento generale sulla protezione dei dati), che impone a chi ospita i dati degli utenti di esplicitare in sede di registrazione l'uso che ne verrà fatto, e di fornire gli strumenti per poterli interrogare ed eventualmente cancellare. Va infine sottolineato che ogni tipo di azione svolta online (visitare un sito web, mandare un messaggio, cercare qualcosa, ecc) lascia sempre tracce, sia sul proprio dispositivo sia in rete. Casi di utilizzi malevoli di queste tracce non sono rari, e per difendersi (almeno in parte) da questo tipo di pericoli si possono adottare soluzioni basate su: l'anonimizzazione, ossia l'offuscamento della propria identità attraverso strumenti specifici (sebbene sia un comportamento malvisto da alcuni fornitori di servizi, perchè il motivo dell'anonimizzazione potrebbe essere anche criminoso); modelli comportamentali, ossia adottare comportamenti intrinsecamente sicuri, come ad esempio considerare di pubblico dominio qualsiasi cosa si faccia con un calcolatore (fosse anche solo salvare una foto sul telefono, scrivere una mail personale o ricevere un messaggio privato) o compiere azioni casuali per inquinare i dati relativi al proprio comportamento; implementazioni normative, ossia leggi più severe che regolamentino la memorizzazione dei dati (sebbene scrivere queste leggi non sia affatto semplice, soprattutto alla luce del fatto che sono spesso i governi stessi a compiere azioni di massivo monitoraggio della rete, sfruttando le zone grigie della legislazione) Manipolazione sociale e fake news: Quello della manipolazione dell'opinione pubblica attraverso internet è un tema molto importante, tanto da essere oggetto di studio da parte della NATO. Unitamente al resto delle infrastrutture tecnologiche nel loro insieme, è considerato dagli eserciti nazionali alla stregua di un vero e proprio campo di battaglia (insieme a terra, mare, aria e spazio). Le operazioni tattiche svolte in questo dominio vengono perpetrate (da forze armate, governi, o semplici privati) attraverso un monitoraggio estensivo della rete e la diffusione di: notizie falsificate (fake news); notizie reali presentate in modo tendenzioso; condivisione di contenuti originali da parte di account fasulli (fake account). Il tutto confezionato ad arte per manipolare l'opinione pubblica. Un esempio lampante riguarda le violenze nel Myanmar del 2016, in cui è stata documentata un'attività di propaganda basata su fake news e utilizzo di fake account, diffusa attraverso i social network da parte dell'esercito di regime, che ha portato ad atti di violenza ai danni della minoranza musulmana Rohingya, tanto da essere classificata come genocidio dal Commissariato delle Nazioni Unite per i Diritti Umani. A complicare la situazione si consideri poi che, oltre a quello ideologico, ci può essere un secondo movente per la diffusione di fake news: quello economico. Alcuni social network infatti permettono all'utente di guadagnare denaro attraverso la pubblicità mostrata contestualmente alla fruizione di un suo contenuto. Alcuni soggetti sfruttano questo meccanismo di monetizzazione creando contenuti estremamente virali per massimizzarne la diffusione, e quindi il guadagno. Una delle caratteristiche che può rendere virale un contenuto è proprio la sua capacità di polarizzare l'opinione pubblica, facendo leva su temi controversi e divisivi. Spesso fake news indistinguibili da quelle confezionate per fini ideologici rientrano in questa categoria.

si riscontrano errori grossolani nel testo e anomalie tipografiche; i collegamenti presenti nel messaggio non portano dove dovrebbero (link sui quali è bene non cliccare mai); sono presenti allegati sospetti e non richiesti. Introduzione alla sicurezza informatica: Quello della sicurezza informatica è un tema complesso, ma di fondamentale importanza. I tre obbiettivi di questa branca dell'informatica si possono riassumere come: garantire la confidenzialità dei dati; garantire l'integrità dei dati; garantire la disponibilità dei dati. L'interesse nel garantire la confidenzialità dei dati può essere quello ovvio del segreto industriale (o simili), ma anche un più generico concetto di privacy e di protezione della persona dai rischi della manipolazione dell'opinione o dal furto di dati come password o numeri di carte di credito. Inoltre impedire l'accesso di estranei al proprio dispositivo è essenziale affinché questi non usino il calcolatore come tramite (schiavo) per perpetrare ulteriori attacchi a terzi. Perdere l'integrità dei dati significa che alcuni di questi hanno subito una modifica accidentale o malevola, diventando quindi non affidabili. Scenari tipici sono: non sapere che i dati hanno perso integrità (si pensi ad esempio ad un elenco in cui sono state contraffatte alcune voci) o l'eliminazione di alcuni dati in seguito ad un guasto. La disponibilità dei dati infine è necessaria per poterli usare. E' inutile avere dati integri e ben protetti se non vi si può accedere. Anche in questo caso è possibile perdere l'accesso in modo involontario o in modo doloso. La disponibilità dei dati è inoltre necessaria perchè un software possa svolgere le funzioni cui è preposto. I modi in cui confidenzialità, integrità e disponibilità possono essere messe a rischio sono innumerevoli, tanto che, in maniera semiseria, si definisce sicuro un sistema solo quando l'amministratore è soddisfatto del suo lavoro. Si tratta cioè di una misura soggettiva, perché da un punto di vista oggettivo non è possibile garantire la sicurezza totale. Infine, vista la confusione che a volte si riscontra su questo tema, vale la pena definire le due figure che spesso si associano al concetto di "violazione della sicurezza". In informatica si definiscono Cracker (o pirati informatici) coloro che si introducono in reti di calcolatori senza autorizzazione allo scopo di danneggiare il sistema informatico (per motivi ideologici, economici o politici). Si definiscono invece Hacker gli operatori molto esperti, che amano esplorare qualsiasi tipo di sistema informatico, sperimentando nuovi usi delle tecnologie, senza mai nuocere intenzionalmente. Questi ultimi sono caratterizzati da una particolare cultura ed etica, ed in genere è grazie a questi che le vulnerabilità vengono scoperte e corrette. I fattori di rischio: Da un lato la sfida della sicurezza si gioca sul campo delle tecnologie, ma non è da sottovalutare anche il lato umano. Per quanto riguarda le tecnologie, si adottano contromisure per combattere i tentativi di infrazione per mano di malintenzionati. Questi possono agire sfruttando la rete da una posizione remota (sfruttando anche il lavoro di altri calcolatori di cui hanno preso il controllo) o per mano mediata da software malevoli (malware) come virus, trojan, worm, spyware, ransomware e altre categorie di programmi che in un modo o nell'altro compromettono la sicurezza del sistema. I software malevoli possono essere distribuiti in modi diversi: inviati via mail, scaricati inavvertitamente da internet, installati credendo che siano un altro software. La principale linea di difesa verso queste minacce è il software storicamente chiamato antivirus (in realtà i sistemi moderni, detti di protezione degli endpoint, funzionano in modo diverso dai vecchi antivirus propriamente detti). Gli attacchi remoti invece fanno leva su vulnerabilità del sistema, difetti del software o dell'hardware che sono sfuggiti al controllo degli sviluppatori, non necessariamente per incompetenza, ma per l'intrinseca complessità del sistema nel suo insieme. Per evitare che si possano sfruttare le vulnerabilità del sistema, i prodotti commerciali segretano il loro codice sorgente confidando nella difficoltà di trovare falle semplicemente leggendo il codice macchina (sicurezza tramite segretezza). Tuttavia il segreto come unica forma di protezione è decisamente inaffidabile, il modello di software open source ad esempio opera all'opposto: attraverso la divulgazione del codice sorgente chiunque può controllare se vi siano problemi di sicurezza, inoltre è possibile accertare che il programma sia privo di malware nascosto al suo interno.

L'altro lato del problema della sicurezza informatica è il fattore umano. Di fatto, quest'ultimo aspetto causa più danni nella sicurezza del fattore tecnologico. Sono le persone infatti il sistema più facile da penetrare: password deboli, magari svelate ad un amico in luoghi pubblici; convinzione di non essere obiettivi interessanti per un attacco malevolo; installazione di software dalla dubbia provenienza; apertura di mail chiaramente sospette; nessun backup. Questi sono solo alcuni dei comportamenti che mettono a rischio la sicurezza di intere aziende o anche solo del proprio dispositivo personale. Tutti i tentativi di circuizione degli utenti ricadono nella categoria del social engineering (ingegneria sociale), una delle tecniche più usate dai pirati informatici. Alcune tecniche di difesa: Per proteggere la confidenzialità dei dati, esistono tecnologie come la cifratura dei dati. Queste tecnologie sono sempre più diffuse ed efficaci, ma fanno leva sul fatto che gli utenti imparino a considerare le loro password come qualcosa di molto importante. Ci sono tecnologie alternative al basare la sicurezza su informazioni che l'utente sa, come fare leva su oggetti che l'utente ha con sé (ad esempio le chiavi OTP - one time password, o i codici di verifica ricevuti sullo smartphone), per arrivare fino alla lettura di proprietà biometriche come le impronte digitali, che fanno leva su ciò che l'utente è. Per proteggere l'integrità dei dati da manomissioni il modo migliore rimane quello delle copie di sicurezza (backup). I backup possono essere fatti su dispositivi di archiviazione di massa di nostra proprietà o su spazi di archiviazione remoti. Una tecnologia che permette di controllare l'integrità dei dati è l'hashing, ossia la creazione di un codice di verifica molto piccolo, che però dipenda dalla totalità dei dati di interesse: se i dati cambiano, anche solo di una piccola quantità, l'hash cambierà di conseguenza, dando la possibilità all'utente di accorgersi che l'integrità rispetto ad un hash di riferimento è stata persa. La disponibilità dei dati può essere compromessa da diversi fattori: ransomware che criptano la memoria chiedendo un riscatto per decifrarla; tecnologie di memorizzazione o di codifica obsolete e non più supportate; connettività assente; permessi negati; sovraccarico dei server. Ognuna di queste cause prevede una sua tecnologia di prevenzione, ma (come per l'integrità) non per tutte esiste la possibilità di correzione del problema una volta che si manifesta. Infine, il modo migliore per proteggersi dalle vulnerabilità del software rimane quello di tenere il software aggiornato, in modo che possano essere corrette le vulnerabilità appena vengono trovate, e (per le aziende) di affidarsi a dei professionisti per lo sviluppo e la gestione dell'infrastruttura tecnologica, anche se apparentemente meno economici.