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


Introduzione all'Informatica: Algoritmi, CPU e Sistemi Operativi, Slide di Elementi di Informatica

Una introduzione all'Informatica, dalla definizione di termini fondamentali come algoritmi, programmi, software, hardware e database, alla storia del computer e della sua evoluzione. Vengono inoltre descritte le definizioni di Sistema Informativo e ICT, e vengono presentati i primi studi sulla codifica binaria e la creazione del primo computer programmabile, lo Z3. Il testo conclude con una panoramica della potenza di calcolo dei moderni computer e della loro diffusione in tutti i settori.

Tipologia: Slide

2018/2019

Caricato il 20/10/2021

Utente sconosciuto
Utente sconosciuto 🇮🇹

4

(1)

7 documenti

1 / 21

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INFORMATICA PER I BENI CULTURALI
Cosa è l’Informatica? «Informatica» deriva dal termine francese «Informatique» coniato nel
1962 da Dreyfus. Esso è dato dalla contrazione di «Information» e «automatique».
Letteralmente dunque Informatica significa «trattamento automatico dell’informazione».
Sebbene il termine «Informatica» non implichi l’esistenza o l’uso del computer, in realtà,
nella sua accezione attuale, è strettamente legato al questo strumento. Possiamo dire quindi
che l’Informatica è la scienza del computer e dello studio di come utilizzarlo per facilitare
la nostra vita. Gli anglosassoni infatti, sempre molto pratici, non parlano di Informatica ma di
«computer science»L’informatica è una scienza relativamente recente e tuttavia
complessa e articolata e soprattutto trasversale a moltissime discipline. Essa infatti
rappresenta ormai un elemento pervasivo della nostra società cosicché impararne i
fondamenti è importante come imparare la grammatica di una lingua. Obiettivi del corso La
alfabetizzazione Informatica “...la comprensione dell’approssimazione informatica allo studio
dei fenomeni, osservazione, ipotesi, sperimentazione, verifica... il bisogno nel mondo
moderno di pensare in modo informatico, di capire come molte volte i nostri problemi siano
problemi informatici anche se appaiono come problemi quantitativi o qualitativi», o anche .....
«la conoscenza e le competenze necessarie per manipolare in modo effettivo le richieste
informatiche di diverse situazioni». Angel Balderas Puga
Rita Colwell* asseriva che l’informatica avrebbe giocato un ruolo unificatore nella ricerca in
diverse scienze dato che permette di legare tra loro diversi campi della conoscenza; se fino
a poco tempo fa la scienza aveva due componenti, la teoria e la sperimentazione, oggi ne
ha una terza «la simulazione al computer, che lega gli altri due» *Direttrice del National
Science Foundation degli Stati Uniti fino al 2004
CAPITOLO 1 – INTRODUZIONE ALL’INFORMATICA Alcune definizioni
Algoritmo – sequenza di operazioni da svolgere per risolvere un dato problema
Programma traduzione di un algoritmo nel linguaggio del computer; tutti i
computer utilizzano un unico linguaggio; noi abbiamo elaborato dei linguaggi
intermedi (più facili per noi) che poi vengono tradotti al computer (con degli appositi
linguaggi di traduzione)
Software – la parte immateriale connessa al funzionamento di un computer
Hardware - la parte materiale connessa al funzionamento di un computer
Database - insieme organizzato di dati in cui le informazioni sono strutturate e
collegate tra loro secondo un particolare modello logico
Sistema Informatico - insieme di computer e apparati in grado di comunicare
secondo una data architettura e attraverso i quali sia possibile realizzare determinate
applicazioni Alcune definizioni
Sistema Informativo - è il sistema informatico più tutte le informazioni prodotte e le
procedure che vengono messe in atto da un dato soggetto (p.e. una azienda) per
gestire e diffondere tali informazioni
ICT (Information & Communication Technology) è l'insieme dei metodi e delle
tecnologie che realizzano i sistemi di trasmissione, ricezione ed elaborazione di
informazioni
Internet (Inter Networking) - È la più grande rete di computer. Lo scambio di dati
avviene lungo le linee telefoniche attraverso il protocollo TCP/IP.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Anteprima parziale del testo

Scarica Introduzione all'Informatica: Algoritmi, CPU e Sistemi Operativi e più Slide in PDF di Elementi di Informatica solo su Docsity!

INFORMATICA PER I BENI CULTURALI

Cosa è l’Informatica? «Informatica» deriva dal termine francese «Informatique» coniato nel 1962 da Dreyfus. Esso è dato dalla contrazione di « Informati on» e «automati que ». Letteralmente dunque Informatica significa «trattamento automatico dell’informazione». Sebbene il termine «Informatica» non implichi l’esistenza o l’uso del computer, in realtà, nella sua accezione attuale, è strettamente legato al questo strumento. Possiamo dire quindi che l’Informatica è la scienza del computer e dello studio di come utilizzarlo per facilitare la nostra vita. Gli anglosassoni infatti, sempre molto pratici, non parlano di Informatica ma di « computer science » L’informatica è una scienza relativamente recente e tuttavia complessa e articolata e soprattutto trasversale a moltissime discipline. Essa infatti rappresenta ormai un elemento pervasivo della nostra società cosicché impararne i fondamenti è importante come imparare la grammatica di una lingua. Obiettivi del corso La alfabetizzazione Informatica “...la comprensione dell’ approssimazione informatica allo studio dei fenomeni, osservazione, ipotesi, sperimentazione, verifica... il bisogno nel mondo moderno di pensare in modo informatico , di capire come molte volte i nostri problemi siano problemi informatici anche se appaiono come problemi quantitativi o qualitativi», o anche ..... «la conoscenza e le competenze necessarie per manipolare in modo effettivo le richieste informatiche di diverse situazioni». Angel Balderas Puga Rita Colwell* asseriva che l’informatica avrebbe giocato un ruolo unificatore nella ricerca in diverse scienze dato che permette di legare tra loro diversi campi della conoscenza; se fino a poco tempo fa la scienza aveva due componenti, la teoria e la sperimentazione, oggi ne ha una terza «la simulazione al computer, che lega gli altri due» *Direttrice del National Science Foundation degli Stati Uniti fino al 2004 CAPITOLO 1 – INTRODUZIONE ALL’INFORMATICA Alcune definizioniAlgoritmo – sequenza di operazioni da svolgere per risolvere un dato problema ➔ Programma – traduzione di un algoritmo nel linguaggio del computer; tutti i computer utilizzano un unico linguaggio; noi abbiamo elaborato dei linguaggi intermedi (più facili per noi) che poi vengono tradotti al computer (con degli appositi linguaggi di traduzione) ➔ Software – la parte immateriale connessa al funzionamento di un computer ➔ Hardware - la parte materiale connessa al funzionamento di un computer ➔ Database - insieme organizzato di dati in cui le informazioni sono strutturate e collegate tra loro secondo un particolare modello logico ➔ Sistema Informatico - insieme di computer e apparati in grado di comunicare secondo una data architettura e attraverso i quali sia possibile realizzare determinate applicazioni Alcune definizioni ➔ Sistema Informativo - è il sistema informatico più tutte le informazioni prodotte e le procedure che vengono messe in atto da un dato soggetto (p.e. una azienda) per gestire e diffondere tali informazioni ➔ ICT (Information & Communication Technology) – è l'insieme dei metodi e delle tecnologie che realizzano i sistemi di trasmissione, ricezione ed elaborazione di informazioni ➔ Internet (Inter Networking) - È la più grande rete di computer. Lo scambio di dati avviene lungo le linee telefoniche attraverso il protocollo TCP/IP.

WWW (World Wide Web) – con questo termine si definisce il principale servizio in Internet, che rende possibile l’accesso alle informazioni e ai servizi resi disponibili in Internet. ➔ Alcuni Cenni Storici L’abaco L’Abaco è stato il primo strumento che l’uomo abbia mai costruito per riuscire a semplificare i procedimenti di calcolo aritmetico, in Mesopotamia circa 2300 anni prima di Cristo. Consentiva di svolgere operazioni elementari come la somma e la sottrazione. L’abaco permetteva di memorizzare alcuni risultati intermedi per poterli riutilizzare nei passaggi successivi. Non è una macchina automatica. Le prime calcolatrici Prima di arrivare a concepire il computer come oggi noi lo conosciamo, diversi geni del passato si sono inventati un sacco di macchine strane e talvolta strabilianti, nel tentativo di superare l’enorme problema di “far lavorare una macchina da sola” senza che l’uomo dovesse intervenire fisicamente durante lo svolgimento dell’algoritmo. Infatti, ogni volta che l’uomo è costretto a intervenire nel processo di calcolo, tutto si rallenta e aumenta enormemente la possibilità di commettere degli errori. La «pascalina» La pascalina è uno strumento di calcolo inventato nel 1642 dal matematico francese Blaise Pascal , considerato il precursore della moderna calcolatrice. Consente di addizionare e sottrarre numeri composti da un massimo di dodici cifre, operando automaticamente i riporti. La «macchina aritmetica» di Poleni Un vero salto di qualità lo fece il ricercatore veneziano Giovanni Poleniche nel 1709 costruì una innovativa “macchina aritmetica” automatica. La sostanziale differenza consiste nell'introduzione di un organo meccanico, detto traspositore, che consente l'automazione della moltiplicazione attraverso la memorizzazione del fattore sul numeratore, evitando la necessità della continua impostazione del numero. La macchina di Poleni inoltre si differenzia dai dispositivi precedenti per il tentativo di rendere automatico anche il funzionamento: grazie al motore a peso infatti, Poleni ha limitato l'intervento umano alla sola impostazione del calcolo, lasciando alla macchina l'esecuzione del lavoro. Il genio di Leibniz È difficile dire cosa fu Gottfried Wilhelm von Leibniz: scienziato, matematico, logico, giurista, storico, filosofo. Certamente è considerato uno dei più grandi matematici di tutti i tempi, che pose con Newton le basi del calcolo infinitesimale; è anche ritenuto il precursore dell’informatica e del calcolo automatico. Egli fu pure inventore di una calcolatrice meccanica detta «Macchina di Leibniz» ma il suo contributo all’informatica fu ben più importante. Infatti, tra le sue più grandi invenzioni si può annoverare quella del « Sistema Binario » e i suoi studi sulla aritmetica del sistema binario, successivamente ripresi e approfonditi dal matematico britannico George Boole. Il «Telaio Jacquard» Un altro tassello verso il primo antesignano del computer fu posto dal francese Joseph Marie Jacquard nel 1801. La sua più importante creazione è considerata il «Telaio Jacquard», che è un tipo di telaio per tessitura. A questo Jacquard aggiunse un macchinario che permetteva la movimentazione automatica dei singoli fili di ordito e la possibilità di produrre tessuti complessi, con il lavoro di un solo tessitore. Questo risultato veniva ottenuto utilizzando dei cartoni perforati per impostare il disegno e la trama della tessitura. In pratica utilizzava delle schede perforate per automatizzare parte del processo. Babbage e la sua incredibile macchina Tutte le invenzioni che abbiamo visto hanno messo sul piatto diversi ingredienti, tutti molto buoni: la macchina aritmetica, la logica binaria, la scheda perforata, ma per fare un piatto come si deve bisognava fare un po’ di ordine e inventarsi una ricetta. La prima ricetta «seria» fu di Charles Babbage, forse la figura più emblematica di questo percorso verso il computer. Charles Babbage, fu uno scienziato inglese nato nel

Le prime Macchine Programmabili Elettromeccaniche Quella della Analytical Engine fu dunque la prima idea di macchina programmabile, ancorché mai realizzata, dalla quale presero l’avvio diversi studi, tra i quali quelli importantissimi sulla programmazione di Ada Lovelace, figlia del poeta George Byron. Il grande limite di questa macchina, rimasta allo stato potenziale, era però chiaro: si trattava di una macchina completamente meccanica, troppo grande, troppo complicata e troppo costosa per poter essere effettivamente realizzata. Tuttavia, il suo progetto fu il preludio della successiva era del calcolatore elettronico che si sviluppò a partire dagli inizi del ‘900 coi primi dispositivi a relé che aprirono la strada a nuovi percorsi di ricerca: primi fra tutti quelli sulla rappresentazione delle informazioni in forma digitale. Ricordiamo che i primi studi sulla rappresentazione binaria dell’informazione furono condotti nel ‘600 da von Leibniz e questi stessi studi vennero ripresi e approfonditi verso metà dell’800 da George Boole, il fondatore della logica matematica. Primi cenni sulla codifica binaria Questi primi studi e i successivi sulla rappresentazione delle informazioni in forma digitale sono alla base dell’invenzione del computer come oggi noi lo conosciamo. La comunicazione di un dato o di una informazione può avvenire in diversi modi: gli uomini, per esempio, comunicano attraverso fonemi quando utilizzano il linguaggio verbale o attraverso caratteri, se utilizzano un linguaggio scritto. Si può comunicare anche a gesti o in altri modi, l’importante è che dall’altra parte ci sia qualcuno (o qualcosa) che recepisca il messaggio. Secondo le teorie diShannon e Weaver di fine anni ‘40, la comunicazione prevede il seguente schema: fonte →codifica →canale →decodifica →destinazione Primi cenni sulla codifica binaria Uno dei tanti e diversi modi di comunicare, più adatto alle macchine che all’uomo, utilizza la codifica binaria. Ma cosa significa in questo caso codifica binaria? Significa che l’informazione viene costruita e comunicata attraverso delle combinazioni di 0 e 1 e due soli simboli sono sufficienti per codificare qualsiasi cosa: un’immagine, un video, una musica. Se qualsiasi informazione può essere convertita in sequenze di 1 e 0 o meglio di “acceso” e “spento”, allora è possibile, utilizzando degli interruttori, codificare e trasmettere qualsiasi informazione. È per questo motivo che l’impiego del Relè (e poi del transistor) ha di fatto aperto la strada all’invenzione del computer. Il computer di Zuse Arriviamo così al primo computer programmabile della storia, completamente automatico: lo Z3, realizzato da Konrad Zuse nel 1941. Si trattava di una macchina composta da oltre 2000 relè in grado di utilizzare stringhe di 22 bit. Il fatto di poter utilizzare 22 bit per codificare una informazione significava che, per esempio, potevano essere rappresentati numeri in notazione decimale fino a 4.194.303. In seguito, fu dimostrato che Z3 è una macchina Turing Completa , che è un requisito fondamentale per ottenere la patente di computer. Ma cosa significa che una macchina è Turing Completa? Alan Turing Non si può parlare di informatica senza parlare di Alan Turing, un brillante e geniale matematico britannico, nato nel 1912 a Londra e purtroppo morto suicida nel 1954. Il suo lavoro fu in buona parte antecedente a quello di Zuse e le sue teorie furono fondamentali a quest’ultimo per concepire e realizzare le sue macchine: prima Z1 e poi Z2 e Z3. La macchina di Turing La «Macchina di Turing» fu la più importante invenzione di Alan Turing. Per la verità non si tratta di una macchina in senso stretto - anzi, non lo è proprio – quanto piuttosto del modello teorico di una macchina ideale, che non esiste come oggetto reale e non è nemmeno realizzabile. E allora, come possiamo descrivere con parole semplici questa invenzione rivoluzionaria? Secondo quanto concepito da Turing nel 1936 ( On ComputableNumbers, with an Application to the Entscheidungsproblem) questa macchina ideale è capace di eseguire qualsiasi tipo di calcolo su numeri e simboli. Essa

utilizza un «nastro» diviso in celle su cui si possono effettuare operazioni di lettura dei dati memorizzati e di scrittura di nuovi dati attraverso una «testina» in grado di spostarsi lungo il nastro. La macchina è data da un insieme di regole (il «programma» potremmo dire) che definiscono come avvengono queste operazioni di lettura e di scrittura e che effetti generano, o meglio, quali cambiamenti di stato producono nella macchina. La fondamentale importanza della Macchina di Turing risiede nel fatto che essa permette di compiere - teoricamente - qualsiasi tipo di elaborazione realizzabile tramite una macchina elettronica e da questo punto di vista la Macchina di Turing è il modello teorico della macchina più potente realizzabile. Per questo motivo essa viene utilizzata per verificare la potenza dei nuovi sistemi di calcolo i quali possono essere definiti « Turing equivalenti » quando sono in grado di realizzare tutte le computazioni possibili con una Macchina di Turing. Lo Z3 di Zuse viene considerato come il primo computer della storia perché è stato il primo del quale è stata dimostrata la «Turing Equivalenza». Le prime Macchine Programmabili Elettroniche John von Neumann, il calcolatore umano John von Neumann fu un matematico e informatico ungherese naturalizzato statunitense. Nato a Budapest nel 1903 fu uno dei più grandi scienziati del XX secolo. Era dotato di capacità mnemoniche e di calcolo straordinarie: a sei anni riusciva ad eseguire a mente divisioni tra due numeri di otto cifre e poteva conversare in greco antico. A dieci anni parlava con buona padronanza sei lingue. Ma al di là di queste simpatiche doti, la sua fama è dovuta piuttosto ai fondamentali contributi che egli diede alla matematica, alla fisica, all’economia e ovviamente all’informatica. Il progetto ENIAC Negli anni ‘40 von Neumann venne impiegato all’interno del «Progetto Manhattan» data la sua esperienza nella modellazione dei fenomeni esplosivi. Il Progetto Manhattan fu un programma militare di ricerca e sviluppo che negli Stati Uniti portò alla realizzazione delle prime armi nucleari durante la Seconda Guerra Mondiale. In quegli anni von Neumann venne a sapere degli studi che erano in corso presso il BallisticResearchLaboratory per costruire un calcolatore completamente elettronico, denominato ENIAC (Electronic Numerical Integrator And Computer). ENIAC utilizzava come componente principale la Valvola Termoionica , un interruttore con funzioni analoghe a quelle del relè, ma totalmente elettronico. ENIAC fu il primo calcolatore «commerciale» della storia. Nonostante utilizzasse l’elettronica era esageratamente grande: Utilizzava 18.000 valvole termoioniche, occupava una superficie di 180mq, pesava 30 tonnellate e assorbiva una potenza di 300KW. Aveva un grande limite dato dal fatto di non impiegare una memoria propria e di poter quindi eseguire solamente operazioni predeterminate. EDVAC, il primo calcolatore moderno Nel 1945 von Neumann scrisse un rapporto dal titolo “First draft of a report on the EDVAC” nel quale pose le basi di quella che sarebbe stata conosciuta negli anni a venire come “Architettura di von Neumann”, la stessa che è alla base dei computer come noi li conosciamo oggi. EDVAC rappresenta un passo importante per diversi motivi: era un calcolatore elettronico; operava in logica binaria, diversamente da ENIAC che utilizzava la logica decimale; era basato sulla architettura di von Neumann e impiegava uno spazio di memoria (di ben 5,5 Kb!) per il programma. Era ancora un po’ grande (occupava più di 45 mq e pesava quasi 8 tonnellate) ma piuttosto veloce per quel tempo: poteva moltiplicare due numeri in circa 3 millisecondi. Olivetti ELEA 9003, primo computer a transistor ELEA, il primo computer di seconda generazione: realizzato a transistor , fu costruito nel 1960 da Olivetti. fu commercializzato in una quarantina di esemplari il primo dei quali fu installato presso le Industrie Marzotto di Valdagno nel vicentino La potenza computazionale della serie 9003 rimase insuperata per alcuni anni potendo realizzare circa 10.000 operazioni al secondo.

parallela dei sistemi multicore) che di fatto hanno spostato l’attenzione dalle tecnologie di integrazione alle architetture. La potenza di calcolo Questo grafico mostra la crescita della potenza di calcolo del computer a partire dal AnalyticalEngine di Babbage a oggi. I moderni computer desktop hanno la capacità computazionale del cervello di un topolino, ma non manca molto che raggiungano e superino le capacità del cervello umano (ma solo in termini di n. di operazioni al secondo) La storia recente - il computer per tutti Il Computer di casa Un passo importante per la diffusione di questa nuova tecnologia fu lo sviluppo del computer desktop. Le origini di queste macchine si possono far risalire agli appassionati che costruivano i computer in casa attraverso combinazioni di chip. I due più famosi furono Steve Jobs e Stephen Wozniak che costruirono un «Home Computer» commercialmente valido e nel 1976 fondarono la Apple Computer. Home Computer Macintosh, più conosciuto come Mac, fu la fortunata famiglia di computer commercializzati da Apple a partire dal 1984 e basati sistema operativo Mac OS. Il suo nome deriva da una varietà di mela, McIntosh per l’appunto, che è anche il famosissimo logo dell’azienda. Il Macintosh 128K fu il primo computer con interfaccia grafica e mouse di serie; esso introdusse il concetto di “scrivania virtuale”, basata sulla cosiddetta interfaccia WIMP (Windows, Icons, Mouse, Pointer). Questo tipo di interfaccia fu un successo mondiale in quanto sfruttava la facilità d’uso del mouse, associato al moderno concetto di “desktop”. Il PC (Personal Computer) Nel 1981, IBM introdusse il suo primo computer desktop che fu chiamato: personal computer (PC). Il software di base (il Sistema Operativo MSDOS) era stato sviluppato da due giovani imprenditor: Bill Gates e Paul Allen, fondatori della Microsoft Corporation. Il Personal Computer fu un grande successo tant’è vero che il termine PC è tuttora ampiamente utilizzato e spesso abbinato ai termini desktop o laptop. MS-DOS MS-DOS fu realizzato da Microsoft su richiesta di IBM che nel 1981 cercava un sistema operativo da utilizzare nella sua gamma PC IBM. Microsoft che a quel tempo era impegnata principalmente con lo sviluppo di BASIC (un linguaggio di programmazione) non si fece sfuggire l’occasione: per rispondere velocemente a IBM, contattò una compagnia di Seattle - la Seattle Computer Products - dove poco prima un giovane programmatore, Tim Paterson, aveva sviluppato un Sistema Operativo denominato 86-DOS. Il 86-DOS funzionava sui processori Intel della serie 8086: gli stessi che utilizzava IBM sui PC e Gates e Allen assunsero Paterson nel maggio del ‘81 per adattarne il codice alle specifiche di IBM. In luglio ne acquisirono i diritti per 75.000$ e ad agosto dello stesso anno IBM lo offriva coi suoi PC insieme ad altri due Sistemi Operativi. Tuttavia il maggiore costo dei due sistemi alternativi a MS-DOS resero di fatto una scelta obbligata quella di vendere assieme ai PC un solo Sistema Operativo: MS-DOS Internet e il Web Mentre il ventesimo secolo volgeva al termine, si faceva strada la possibilità di collegare i singoli computer in un sistema mondiale di comunicazione: Internet. In questo contesto, Tim Berners-Lee (uno scienziato britannico che al tempo lavorava al CERN di Ginevra) propose un sistema (Server HTTP, Browser Web, e linguaggio HTML) grazie al quale i documenti memorizzati sul computer potevano essere collegati tra loro attraverso Internet, producendo un labirinto di informazioni collegate chiamato il World Wide Web (spesso abbreviato in "Web"). Per rendere accessibili le informazioni furono sviluppati dei «motori di ricerca» con lo scopo di "setacciare" il Web e "categorizzare" i risultati. Principali attori in questo campo sono Google, Yahoo e Microsoft.

Lo Smartphone Nel frattempo, la miniaturizzazione dei dispositivi di calcolo è continuata (Moore) e i computer desktop sono stati affiancati dai computer portatili e poi dagli SmartPhone. Oggi, minuscoli computer sono incorporati all'interno di vari dispositivi. Ad esempio, le automobili ora contengono dei minuscoli e potentissimi computer che utilizzano i sistemi di posizionamento globale (GPS), il monitoraggio del funzionamento del motore e dell’intera autovettura e forniscono servizi di comando vocale per il controllo di sistemi audio e di comunicazione del telefono della vettura. Al giorno d’oggi – Internet of Things Probabilmente l'applicazione più potenzialmente rivoluzionaria oggi si ritrova proprio nelle capacità di espansione dei telefoni portatili. Questi «Smartphone» sono dotati di una ricca gamma di sensori e interfacce tra cui fotocamere, microfoni, bussole, touch screen, accelerometri (per rilevare l'orientamento e il movimento del telefono), e una serie di tecnologie wireless per comunicare con altri smartphone e computer. Il potenziale è enorme. Infatti, molti sostengono che lo Smartphone avrà un effetto maggiore sulla società rispetto al PC. Lo studio delle applicazioni riservate a questi dispositivi e al mondo che generalmente viene detto del «Internet of Things» è vastissimo e alcune applicazioni le vedremo alla fine del corso. Lo sviluppo futuro è previsto soprattutto in ambito urbano, nel monitoraggio e nel controllo di tutti gli aspetti più dinamici di quella che viene definita «Smart City». Al giorno d’oggi – il Web 2.0 – 3.0 – 4.0 Anche per quanto riguarda il Web siamo solo agli inizi. Oggi siamo ancora immersi nel Web 2.0 (il Web sociale o delle persone) ma abbiamo già un piede nel Web 3.0 (il Web semantico o dei dati) e andiamo verso il Web 4.0 (Agenti personali intelligenti) CAPITOLO 2 – ALGORITMI E COMPUTER Il concetto di Algoritmo Nella nostra carrellata storica abbiamo visto che molti hanno tentato per secoli di costruire delle macchine automatiche in grado di realizzare delle operazioni e di produrre dei risultati senza l’intervento dell’uomo: da Pascal e Poleni a Babbage e poi Turing, Zuse fino ai grandi scienziati e imprenditori moderni. Fare delle operazioni in maniera automatica significa: realizzare degli algoritmi senza che sia dovuto l’intervento dell’uomo. Poiché questo è l’unico scopo di una macchina automatica e poiché noi siamo interessati a capire come funziona una tale macchina, sarà utile, prima di proseguire, cercare di comprendere bene cosa sia un algoritmo. Il dizionario Treccani lo definisce più o meno così: 0 3 2 3 “Termine, derivato dall’appellativo al-Khuwārizmī del matematico MuhammadibnMūsa del 9° sec., originario di quello che è l’attuale Uzbekistan, che designa qualunque schema o procedimento sistematico di calcolo. Con un algoritmo si tende a esprimere in termini matematicamente precisi il concetto di procedura generale, di metodo sistematico valido per la soluzione di una certa classe di problemi”. Se questa definizione non è abbastanza chiara, proviamo più semplicemente a dirlo così: “un algoritmo è una sequenza finita di operazioni da svolgere per risolvere un dato problema”. Perché vi ho presentato queste due definizioni, così diverse, di algoritmo? Perché ancora oggi non esiste una «definizione di algoritmo» che ne definisca pienamente il concetto in termini formali, ci si deve accontentare di definizioni più o meno intuitive come quella prima evidenziata. Uno dei tentativi più riusciti è quello proposto da Turing con la sua «macchina» ed è proprio per questo motivo che la Macchina di Turing è ancora oggi lo strumento più

una forma che sia compatibile con il nostro computer; viene fatto un « progetto » per trascrivere l’algoritmo utilizzando un linguaggio che la macchina sia in grado di comprendere Questa rappresentazione dell’algoritmo si chiama « programma » e l’intero processo di sviluppo del programma, la sua codifica in forma comprensibile alla macchina e l’inserimento in memoria, viene detto « programmazione ». Il programma viene verificato in una fase di «testing» in cui le funzionalità del programma vengono valutate (rispetto alle specifiche) ed il programma viene utilizzato da persone diverse per individuarne eventuali malfunzionamenti Infine, si ha l’attività di «manutenzione» per ulteriori correzioni, adattamenti a diverse piattaforme, evoluzioni etc. Dall’algoritmo al programma In linea teorica, una volta che viene scoperto un nuovo algoritmo che realizza un dato compito (per esempio l’algoritmo di Euclide per trovare il Massimo Comun Divisore di due numeri interi, l’algoritmo per comprimere la musica in mp3 o le immagini in jpg), questo viene dato per acquisito e non viene richiesto di comprenderne il funzionamento. In questo senso l’algoritmo rappresenta un «mattone fondamentale» che non viene ulteriormente messo in discussione. Soprattutto nell’informatica moderna, questo concetto è ampiamente utilizzato e un grandissimo numero di questi «mattoni» si trovano nel Web ad uso e consumo dei programmatori e degli appassionati di tutto il mondo. Algoritmi e Società Oggi l’informatica si è affermata come la scienza degli algoritmi. L'ambito di questa scienza è molto ampio, attingendo e interagendo con diverse discipline come la matematica, l’ingegneria, la psicologia, la biologia, l’economia aziendale, le scienze ambientali, la linguistica etc... Questo implica che i ricercatori in diversi rami dell'informatica possono avere delle idee anche molto diverse di cosa sia l’informatica e di quale sia il suo scopo. Ad esempio, un ricercatore che lavora nel campo delle architetture di computer può avere in mente che la scienza dell’informatica sia legata per lo più all' avanzamento tecnologico ; un ricercatore nel campo dei database può vedere informatica come la ricerca di modi sempre più efficienti per archiviare e rendere l’ informazione accessibile e contribuire ad una società più consapevole e trasparente; un ricercatore nel campo delle applicazioni per l’ambiente può pensare di poter contribuire ad un mondo più pulito e uno nel campo dell'intelligenza artificiale può considerare l’informatica legata allo studio dell’intelligenza umana e dei comportamenti , immaginando società future dove le macchine avranno un ruolo preponderante. Queste sono visioni parziali in cui si perde di vista il quadro generale e si perde di vista il ruolo vero dell’informatica che non è quello di cambiare il mondo quanto piuttosto quello di rispondere ad alcuni quesiti (in quanto scienza degli algoritmi). Quali problemi possono essere risolti con un approccio di tipo algoritmico? Come può essere reso più semplice scoprire e definire un algoritmo? Come possono essere migliorate le tecniche di rappresentazione e di comunicazione degli algoritmi? Come possono essere analizzate e comparate le caratteristiche di diversi algoritmi?Come possiamo utilizzare gli algoritmi per manipolare l’informazione? Come possiamo applicare degli algoritmi per produrre comportamenti intelligenti? Che impatto può avere l’applicazione degli algoritmi sulla società? Rispondere a queste domande presuppone di operare con un elevato grado di astrazione il che significa: ignorare i dettagli interni di un dato oggetto, per concentrasi sulle sue proprietà esterne*. *Liberamente tratto da «Computer Science: an overview 11° ed» - j. Brookshear (Pearson 2012) Il Computer Ripartiamo dalla definizione di Computer: «Macchina in grado di elaborare dati, automatica e programmabile» e dalle sue due componenti fondamentali: • La componente fisica ovvero «Hardware»; • La componente immateriale ovvero «Software» Hardware Software

Il Computer La prima cosa da fare per cercare di spiegare il computer è quella di porsi la seguente domanda: Perché il computer è diventato uno strumento così importante e pervasivo della nostra società? Perché tutta l’informazione del pianeta può essere tradotta attraverso sequenze di impulsi elettrici. Immagini, testi, voce, dati, film, musica, vengono codificati in sequenze di BIT 0110011100110... A differenza della mente umana che è in grado di affrontare e risolvere problemi nuovi utilizzando capacità cognitive, intuizione e ragionamento, il computer, che è una macchina, è invece un semplice « esecutore » di istruzioni impartite dall'esterno. Le istruzioni vengono impartite attraverso un algoritmo studiato per risolvere un problema a partire da dei dati di input affinché si produca un risultato in output, attraverso l’elaborazione dei dati stessi. Il computer, in quanto mero esecutore di algoritmi, deve essere opportunamente istruito e ciò avviene ad opera di un programmatore capace di comunicare e interagire con la macchina attraverso dei linguaggi di programmazione che possono essere ad alto, medio o basso livello di astrazione. Il più basso livello di astrazione è il cosiddetto « linguaggio macchina ». A questo punto potremmo porci delle nuove domande: • Cosa sono i BIT e cosa è la codifica digitale? • Cos’è un programma e come lo si rappresenta? • Cosa è che fa lavorare il computer? • Che cosa ne governa il funzionamento? • Come possono i computer dialogare fra di loro? • Quali rischi corriamo quando utilizziamo un computer? BIT e BYTE Abbiamo già visto che i computer hanno bisogno di un proprio linguaggio per poter comunicare tra loro e con gli esseri umani. Così come gli uomini utilizzano dei simboli elementari nel proprio linguaggio (fonemi per linguaggio verbale; caratteri per linguaggio scritto), anche il computer utilizza delle proprie entitàelementari che noi codifichiamo in: 0e1-BIT (BinarydigIT) Tutta l’informatica è costruita su questi due simboli. Perché vengono utilizzati solo i due simboli 0 e 1? La ragione è già detta e facilmente intuibile: dal punto di vista tecnologico è molto facile rilevare il passaggio o meno di una corrente all’interno di un conduttore. Sarebbe altresì molto difficile e dispendioso costruire dei circuiti in grado di distinguere tra dieci segnali diversi (0..9). Quella binaria invece è una «informazione di stato» molto semplice che può assumere soltanto due valori: vero/falso; acceso/spento; si/no. In pratica: • La corrente c’è => 1 • La corrente non c’è => 0 Attraverso diverse combinazioni di 1 e 0 può essere rappresentato, in un computer, l’intero « Universo delle Informazioni ». Il BIT è l’elemento fondamentale di informazione ma normalmente viene aggregato in un insieme che costituisce esso stesso un elemento importante in informatica. Questo è il BYTE, che è costituito da una sequenza di 8 BIT. Poiché ad un BYTE può essere associato uno dei nostri caratteri, esso talvolta viene anche detto «carattere». Il BYTE è anche l’entità elementare utilizzata nella memorizzazione. Un altro termine importante da conoscere e che spesso viene utilizzato come riferimento è «WORD» che è dato da 2 BYTE e LONGWORD ( BYTE). Con WORD si rappresentano per esempio i piccoli interi, con LONGWORD gli interi e i numeri reali, e così via. I multipli del BIT e del BYTE È importante a questo punto fare una breve panoramica su quelli che sono i «multipli» del BIT/ BYTE che ci servono per rappresentare, per esempio, la capacità di memoria o la velocità di un dispositivo di archiviazione. • KILO k ≈ un migliaioKb (Kilobit) – KB (Kilobyte) • MEGA M ≈ un milione. Mb (Megabit) – MB (Megabyte) • GIGA G ≈ un miliardo. Gb (Gigabit) – GB (Gigabyte) • TERA T ≈ mille miliardi Tb (Terabit) – TB (Terabyte) È importante sottolineare che i valori dati (come potenze di 2) valgono quando si parla di supporti di memorizzazione, non nel caso ci si riferisca a questi valori per misurare la velocità di trasmissione. Per esempio, quando vi interconnettete a Internet e vi viene segnalato che state scaricando un file alla velocità di 300Kb/s, sappiate che in questo caso 300K vale 300.000 e non 307.200 (300X1024). La velocità media di connessione a livello

La CPU – Instruction Set Come nelle lingue naturali, composte da fonemi, parole e frasi e così via, anche nel linguaggio dei computer, il linguaggio macchina , i simboli dell'alfabeto utilizzato (1 e 0) sono organizzati in « parole » e queste ultime possono essere utilizzate per comporre « frasi » secondo delle ben precise regole grammaticali. Le frasi del linguaggio macchina sono dette «istruzioni», ogni istruzione ordina al processore di eseguire un'azione elementare che va a modificare lo stato interno del computer: • come la lettura di una locazione di memoria; • l’esecuzione della somma dei valori contenuti in due registri; • l’incremento di un contatore; • .... Struttura della CPU La CPU (microprocessore) rappresenta il cuore del Computer e per questo è detta Unità di Elaborazione «Centrale». La CPU governa il Computer impartendo «ordini» a tutti gli altri organi e interpretando le istruzioni che noi stessi gli diamo: direttamente mediante comandi del SO o indirettamente con dei programmi. In informatica possiamo trovare anche altri operatori booleani: NAND (NOT AND) - AB 001 011 101 110 NOR (NOT OR) - AB 001 010 100 110 XOR (OR esclusivo) - AB 000 011 101 110 Le istruzioni sono generalmente costituite da una parola iniziale detta opcode ( operationcode ), che specifica l’operazione da eseguire, seguita da altre parole che specificano gli eventuali operandi (o dati) a cui l'azione deve essere applicata (per esempio «somma 10, 5»). Il formato e la sintassi delle operazioni sono propri di ciascun processore e sono contenute nel Instruction Set di quel dato processore, appunto. Per completezza diciamo che, mentre i processori di un tempo (scalari) potevano eseguire una sola operazione per volta, quelli attuali sono in grado di eseguire più operazioni simultanee sullo stesso processore (i.e. nei processori superscalari per il calcolo parallelo) o più operazioni su più processori integrati in un unico chip (multi core). La CPU - Registri I Registri sono delle piccole unità di memoria locale che servono a mantenere fisicamente vicini alla ALU le informazioni che in quel momento sono essenziali per eseguire la elaborazione richiesta (i.e. metto gli operandi nei registri prima di sommarli). Il valore di tutti i registri ad un dato istante, rappresentano lo « stato » della CPU in quell’istante. La CPU – Unità di Controllo L’ultima componente della CPU che funge da vero e proprio «cervello» del nostro computer è l’Unità di Controllo (UC). Essa effettua un controllo su tutti gli altri componenti e inoltre svolge la delicata operazione di «interpretare» l’istruzione ricevuta e di impartire i conseguenti «ordini» a tutti gli organi coinvolti: ALU, Registri, Unità di Uscita etc..affinché l’istruzione sia di fatto eseguita. L'unità di controllo ad ogni clock riceve in Input: 1. il codice operativo dell’istruzione da eseguire; 2. i segnali di flag che determinano lo stato della CPU; 3. i segnali di controllo. E produce in Output: 1. Segnali di controllo e di trasferimento dati Tutte le Memorie del Computer CPU e Memoria lavorano in simbiosi, infatti: programcounter (PC): memorizza l’indirizzo della prossima istruzione; instructionregister (IR): contiene l’istruzione da eseguire; memoryaddressregister (MAR): contiene l’indirizzo della locazione di memoria da leggere o scrivere; memory data register (MDR o MD): serve a scambiare dati tra la CPU e la memoria; program status word (PSW): è il registro dei flag che che memorizza particolari condizioni; control register (RC) è il registro per i segnali di controllo (ready, wait, write, read,...). Vediamo ora cosa fa una CPU quando esegue una istruzione

I dati e i programmi risiedono in Memoria centrale. Il compito della CPU è quello di eseguire le istruzioni di un programma presente in memoria centrale leggendo e scrivendo i dati, pure in memoria centrale. Come funziona la CPU Il ciclo di lavoro di un processore è solitamente suddiviso in quattro fasi: 1. acquisizione dell'istruzione ( fetch ): il processore preleva l'istruzione dalla memoria, all'indirizzo specificato dal Program Counter 2. decodifica ( decode ): viene decodificato il operation code dell’istruzione; questo fornisce informazioni anche su quali dati prelevare in memoria (gli operandi) 3. esecuzione ( execute ): l’istruzione viene eseguita 4. riscrittura ( writeback ): si ritorna all’inizio del ciclo. Il numero di cicli che il processore è in grado di svolgere in un secondo, ne determina la velocità. 1. Si acquisisce l’indirizzo corrente dalla memoria - in base all’indirizzo del Program Counter (PC) - e lo si inserisce nel Registro degli Indirizzi di Memoria (MAR) 2. Si incrementa il PC per predisporsi per la successiva istruzione 3. Se serve prelevare un dato dalla memoria questo viene caricato nell’apposito registro MDR. Questa eventuale operazione (sulla memoria) viene eseguita al ciclo successivo 4. Il contenuto di MAR va nel Registro delle Istruzioni (IR) 5. La Control Unit decodifica il tipo di istruzione contenuta in IR 6. Se l’istruzione è un «salto» si aggiorna PC e si torna allo Start

  1. Altrimenti viene eseguita l’istruzione: la Control Unit genera una serie di segnali che realizzano l’istruzione 8. Si torna allo Start (o si finisce) completando il « ciclo macchina ». La CPU quindi esegue una ad una le istruzioni affidatele dal programma utilizzando i dati che le sono stati forniti in ingresso (tramite la Tastiera, il mouse, il microfono etc..) e che ora risiedono in memoria centrale e generando dei risultati (a monitor, verso i dispositivi audio etc..). Per esempio, quando scriviamo una lettera con un programma di videoscrittura possiamo controllare a Monitor il risultato e alla fine, una volta che abbiamo terminato, archiviare definitivamente il risultato (la lettera in questo caso) in una memoria di massa in quello che viene detto un File e poi se vogliamo, anche inviarlo a una Stampante. Tutte le operazioni elementari eseguite dalla CPU, che sottintendono quelle di più alto livello appena citate, non riusciamo a percepirle perché operiamo nei confronti del computer mediante una serie di comandi che rendono trasparente sia l’architettura del computer stesso, sia le modalità di esecuzione dei programmi. Il Sistema Operativo Ma cosa è che rende trasparente all’utilizzatore tutte queste operazioni? Si tratta del « SISTEMAOPERATIVO » una componente fondamentale del computer che però questa volta non è di tipo Hardware, ma ditipo Software. Analogamente al cervello umano che col sistema nervoso governa il funzionamento delle attività del corpo, il Sistema Operativo supervisiona le attività della macchina in cui si trova e di tutte le sue componenti: la memoria di massa, la memoria centrale, il processore, le schede accessorie, il lettore cd, la stampante, il mouse, la tastiera etc. Il Sistema Operativo permette all'utente di interfacciarsi facilmente al sistema hardware, evitandogli una

del Sistema Operativo c’è anche quello di gestire file e cartelle o meglio del File System. In questo caso il SO si occupa di operazioni quali: archiviare e proteggere le risorse, renderle disponibili agli utenti di una rete, gestire le modifiche a tali risorse. Questi strumenti includono per esempio la gestione delle cartelle condivise, la crittografia dei dati e così via. Quando una cartella è condivisa, il SO si preoccupa che gli utenti che vi accedono tramite la rete siano autorizzati e che più utenti non effettuino modifiche contemporanee. Lashell In generale la Shell del sistema operativo può utilizzare una interfaccia di tipo testuale, a riga di comando, ovvero una interfaccia grafica (GUI= Graphical User Interface). È detta Shell, ossia guscio, perché rappresenta lo strato «visibile» intorno al sistema operativo. La progettazione di una Shell è condizionata soprattutto dal tipo di periferiche che saranno utilizzate col computer (tastiera, mouse, touchscreen etc.) che sono l'interfaccia diretta tra uomo e macchina. Dal software di sistema al software applicativo Software applicativo La Shell (Interfaccia Utente) permette di interagire con la macchina attraversoun interprete di comandi. Un programma applicativo (o applicazione o anche app) è un programma per computer progettato per eseguire un gruppo di funzioni coordinate, attività o attività a beneficio degli utenti. Esempi di applicazioni sono: un word processor, un foglio di calcolo, un programma di contabilità, un browser web, un lettore multimediale, un simulatore di volo aeronautico, un programma di grafica, un programma di elaborazione video, un programma di calcolo strutturale, un programma GIS etc. Software Open SourceFedora è un Sistema operativo basato su Kernel Linux. • Blender è una 3D creation suite che supporta una grande varietà di operazioni di elaborazione grafica: modeling, animation, rendering, motiontracking, video editing e altro. • Debian è un sistema operativo multi-architettura per computer, composto interamente da software libero. • Apache HTTP Server, o più comunemente Apache, è la piattaforma server Web modulare più diffusa, in grado di operare su una grande varietà di sistemi operativi, tra cui UNIX/ Linux, Microsoft Windows e OpenVMS.

  • WordPress è una piattaforma software di «Personal Publishing» e di Content Management System (CMS) per la creazione e distribuzione di siti Internet. Si parla di software open-source (OSS) quando il codice sorgente viene reso disponibile con una licenza in cui il titolare del copyright prevede il diritto di studiare, modificare e distribuire il software a chiunque e per qualsiasi scopo. Il software open-source può essere sviluppato in maniera aperta e collaborativa da parte di community che si costituiscono allo scopo. Lo sviluppo di software open-source, o sviluppo collaborativo da più fonti indipendenti, genera un ambito di progetto sempre più diversificato e in grado di essere sostenuto nel lungo termine. Un rapporto del 2008 dal Gruppo Standish afferma che l'adozione di modelli di software open-source ha portato a un risparmio di circa 60 miliardi di dollari all'anno per i

consumatori. Linguaggi di Programmazione Tutta l’informatica ruota intorno all’attività della «programmazione» nella quale le idee e le esigenze vengono tradotte in algoritmi e in programmi da fornire al computer. Per realizzare un programma serve un linguaggio di programmazione. CAPITOLO 4 – CODIFICA DELL’INFORMAZIONE I Codici Binari Tra tutti gli argomenti che affronteremo questo è quello un po’ più tecnico. Infatti ci viene chiesto di abbandonare per un attimo il nostro consueto modo di pensare i numeri per poterli rappresentare come vengono «visti» all’interno di un Processore. Vedremo dunque come diversi elementi di informazione possono essere rappresentati all’interno di un computer affinché questi possa elaborarli. Noi parleremo soprattutto di «numeri» e di come questi possano essere manipolati. I numeri infatti stanno alla base di tutte le tipologie di informazione che normalmente consideriamo siano elaborate dal nostro computer: immagini, testi, suoni etc.. Numeri sono anche le combinazioni di segnali che la Control Unit trasmette ai diversi apparati per «comandarli». Il primo problema che ci poniamo è il seguente: come possiamo codificare un certo numero di oggetti, utilizzando i simboli che ha a disposizione il computer? Ora, il problema di codificare degli oggetti non è certamente oscuro: tutti i giorni noi ci confrontiamo con l’esigenza di codificare dei concetti e degli oggetti, tanto che non ci facciamo nemmeno caso. A ben guardare però tutto viene codificato nella nostra società: i beni di una società hanno un numero di inventario; una scatoletta di tonno o di piselli ha un suo proprio codice a barre; noi stessi siamo codificati attraverso il nostro codice fiscale, i nostri stessi pensieri sono codificati tramite il linguaggio… Ora però ci troviamo all’interno di un computer e quindi per poter codificare qualsiasi cosa dobbiamo utilizzare i simboli che abbiamo a disposizione e che sono, come abbiamo visto: 0e1. Dunque, per rappresentare un dato oggetto o una data istruzione dovremo utilizzare una opportuna sequenza di 0 e di 1 che ovviamente deve essere univoca per ciascun oggetto. Se abbiamo due soli oggetti la questione è banale: alla mela il codice 0 e alla pera il codice 1,ma se abbiamo un cesto di frutta? Come debbono essere combinati tra loro i BIT per poter rappresentare tutta l’informazione di cui abbiamo bisogno? Come con l’alfabeto, che ci mette a disposizione 21 caratteri con cui siamo stati capaci di scrivere tutta la nostra storia, così, allo stesso modo, pur con soli due BIT, noi possiamo fare altrettanto. La prima cosa che vediamo è che con tre BIT siamo capaci di codificare otto diversi oggetti. Allora, la regola generale è che: con «n» BIT possiamo rappresentare 2n oggetti. Ora noi non siamo interessati all’applicazione di alcun criterio di associazione tra oggetti e sequenze di BIT, ma semplicemente vogliamo capire come trasformare una sequenza di BIT in un numero che siamo in grado di capire «al volo». Prima di fare questo dobbiamo però fare una premessa su cosa sia un «Sistema di Numerazione». Sistema di numerazione Un sistema di numerazione è costituito da: 1. Un insieme di «Simboli elementari» (le cifre); 2. Un insieme di «Regole» che definiscono come rappresentare un numero con le cifre a disposizione. Sui numeri così definiti è possibile applicare un insieme di «Operazioni». Nella nostra vita quotidiana noi siamo abituati ad utilizzare il « Sistema Decimale » e lo facciamo sostanzialmente perché da sempre, per far di conto, si sono utilizzate le dita, che sono dieci. Il nostro attuale sistema di numerazione però non è l’unico possibile e un esempio alternativo molto noto è quello del sistema utilizzato nell’antica Roma. I Romani avevano più difficoltà di noi a far di conto perché il loro sistema, che adottava dei simboli e

multimediali (immagini, video, suoni) hanno per l’uomo un carattere « analogico ». Questo significa che tali informazioni possono essere rappresentate da grandezze continue che a loro volta possono essere rappresentate tramite numeri reali (quindi con precisione teoricamente infinita). Quando si passa al mondo digitale una grandezza analogica può essere «campionata» così da ricavarne dei valori interi approssimati:per esempio, di una immagine si può rilevare la composizione del colore in ogni mmq. I valori che rileviamo, possono essere convertiti in numeri binari ed essere trasferiti nella memoria di un computer. La codifica delle immagini In una immagine in bianco e nero, senza gradazioni di grigio, ciascun elemento di immagine (pictureelement = PIXEL ) è codificato: • 0=> bianco predominante • 1=> nero predominante Per convenzione l’immagine viene ricomposta su una griglia ordinata dal basso verso l’alto e da sinistra verso destra. La qualità dell’immagine dipende dalla fittezza del campionamento e quindi dal numero di pixel/ cm di cui è composta: la « risoluzione ». La dimensione è espressa in numero di pixel nella forma righe X colonne. Se abbiamo la necessità di codificare diverse gradazioni di grigio, dobbiamo utilizzare più bit per ciascun pixel: per esempio, con 8 bit possiamo rappresentare 28=256 livelli di grigio. Se invece vogliamo utilizzare l’informazione del « colore » dobbiamo tenere presente che questo è dato dalla composizione dei tre colori: Red, Green, Blue (RGB). RGB è un modello di colore di tipo additivo dove la somma dei colori Rosso, Verde e Blu (delle loro lunghezze d’onda) produce un aumento della luminosità fino a che si ottiene il bianco (tricromia). Ciascuno dei tre colori è a sua volta dato da una gradazione che il più delle volte viene espressa con 8 bit (0-255). Nel bianco abbiamo le tre componenti a 255; nel nero le tre componenti valgono tutte 0. Con questa tecnica è possibile rappresentare fino a 16,8 milioni di colori. La compressione delle immagini Abbiamo visto che un’immagine a colori è caratterizzata da tre Byte per ciascun pixel. Poiché una immagine di buona qualità, catturata per esempio con una reflex digitale, può tranquillamente essere composta da oltre 20 milioni di pixel, capiamo subito che memorizzare anche una singola immagine può comportare l’impiego di notevoli risorse. Per ottimizzare lo spazio di memoria utilizzato possono essere adottati degli algoritmi di compressione: • Senza perdita di informazione impiegano delle tecniche del tipo: viene costruito una sorta di dizionario contenente gruppi di punti che si ripetono frequentemente, quindi l’immagine viene ricodificata utilizzando il dizionario. Per esempio, se abbiamo 345 pixel di colore A seguiti da 514 di colore B e da 18 di colore C, possiamo codificare quella parte di immagine con 345A514B18C. Alcuni noti formati lossless sono il PNG, TIFF, GIF (quest’ultimo per immagini fino a 256 colori). • Con perdita di informazione sonoimpiegatiquandoabbiamoachefareconimmaginiconmilionidi colori dove i metodi lossless risultanomenoefficientiacausadellefrequentivariazioni.Tra i metodi lossy, il più noto è JPEG che utilizza una combinazione di varie tecniche progettate per sfruttare le limitazioni dell’occhio umano: una prima tecnica considera il fatto che l'occhio umano è più sensibile alle variazioni di luminosità che ai cambiamenti di colore. Così, a partire da un'immagine che è codificata in termini di componenti di luminanza e di crominanza, il primo passo è quello di mediare i valori di crominanza su una matrice quadrata di due per due pixel. Questo riduce l’informazione di crominanza di un fattore quattro conservando però tutta l’informazione originale di luminosità. Il risultato è un significativo grado di compressione senza una notevole perdita di qualità dell'immagine. Il passo successivo è quello di dividere l'immagine in blocchi da otto per otto pixel ecomprimere i dati di ciascun blocco separatamente. Questo viene fatto applicando una tecnica matematica nota come «Trasformata Discreta del Coseno» i cui dettagli non ci interessano. Quello che invece interessa è che questa trasformazione converte il blocco originale otto per otto calcolando una funzione i cui coefficienti rispecchiano la relazione che interviene tra i pixel del blocco piuttostoche il loro

reale valore. In questa funzione i valori inferiori ad una data soglia sono posti a zero in quanto i relativi valori sarebbero non percepibili dall’occhio umano. Per esempio, se il blocco originale conteneva un motivo a scacchi, il nuovo elemento potrebbe riflettere un uniforme colore medio senza che debba essere rispettata la distribuzione originale dei pixel. A questo punto possono essere applicate le tecniche losslesspiù tradizionali che abbiamo già visto, con lo scopo di comprimere ulteriormente l’immagine. Tutte insieme le tecniche standard di base del JPEG riescono normalmente a comprimere immagini a colori di un fattore almeno 10 arrivando spesso anche a fattori 30 senza che vi sia una sostanziale perdita di qualità. Compressione di Audio e Video Gli standard più comunemente utilizzati per la codifica e la compressione di audio e di video sono stati sviluppati dal Motion Picture Experts Group sotto la guida di ISO. L’acronimo dello standard deriva proprio dal nome del gruppo che l’ha sviluppato. MPEG comprende una varietà di standard per le diverse applicazioni. Per esempio, le necessità per le trasmissioni TV ad alta definizione sono diverse da quelle per le videoconferenze e così saranno diversi gli standard di compressione dei segnali. Le tecniche impiegate da MPEG sono piuttosto complicate e a noi non interessa dettagliarle; basti sapere che queste sono basate sul fatto che il video non è altro che una sequenza di immagini che fornisce l’impressione del movimento. Per comprimere tali sequenze, solo alcune delle immagini (gli I-frame) sono codificate nella loro interezza (normalmente in formati simili al Jpeg) mentre delle immagini che si trovano tra gli I-frame vengono codificate solo le differenze con l’immagine di riferimento. Per quanto riguarda l’Audio il sistema più noto per la compressione è il MP3, che fu sviluppato all'interno degli standard MPEG. Infatti, l'acronimo MP3 non è altro che l'abbreviazione di MPEG layer 3. MP3 sfrutta le proprietà e le limitazioni dell'orecchio umano, rimuovendo quei dettagli che non è in grado di percepire: • Una delle tecniche adottate è chiamata «temporalmasking» e si basa sul fatto che per un breve periodo, dopo un suono di forte intensità, l'orecchio umano non è in grado di rilevare i suoni più tenui che altrimenti in condizioni normali sarebbero udibili. • Un altra, chiamata «frequencymasking» considera che un suono ad una data frequenza tende a mascherare i suoni più tenui che ricadono nell’intorno della sua frequenza. Sfruttando queste caratteristiche, MP3 può essere utilizzato per ottenere una notevole compressione dei segnali audio, mantenendo tuttavia il suono nei pressi della qualità di un CD. Vale la pena di puntualizzare che tuttavia, nella compressione audio e video, non è detto che l’obiettivo principale sia il contenimento dello spazio di archiviazione. Molto spesso ciò che conta in questi casi è la « trasmissione » dell’informazione (es. streaming audio o video). Se abbiamo un video in cui ciascun frame pesa 1 MB e una linea di trasmissione che non sopporta più di 10 Kb/s non ci sarà alcuna possibilità di successo. Normalmente la trasmissione video richiede un « transfer rate » di alcune decine di Mb/s mentre per la trasmissione audio sono sufficienti 64 Kb/s. L’organizzazione della Memoria Ora che abbiamo visto come viene codificata l’informazione, torniamo ad occuparci di una componente fondamentale del nostro computer, la Memoria , dove i dati codificati vengono posti prima che siano elaborati: -Registri e Cache memory – memorie di supporto alle attività di elaborazione -La memoria principale RAM (Random Access Memory) – volatile -La memoria ROM (Read Only Memory) – per memorizzare il programma di avvio del computer -Memorie di massa (HD, pennette, Cdrom etc..) – per memorizzare in maniera permanente grandi quantità di informazioni La Memoria principale Quando si parla di Memoria Centrale di un Computer, ci si riferisce ad una serie di dispositivi in grado di immagazzinare dati e di trasferirli ad elevata velocità,