Informatica/ Ing. Meccanica/ Ing. Edile/ 2015

Transcript

Informatica/ Ing. Meccanica/ Ing. Edile/ 2015
Informatica/ Ing. Meccanica/ Ing. Edile/ 2015-2016
Mario Verdicchio/
Appunti dalla lezione 1/
Il termine “informatica” deriva dalla fusione di due parole:
• informazione, e
• automatica.
Spiegherò i concetti legati alla parola “automatica” in una lezione successiva,
concentrandomi per ora sul termine “informazione”.
Naturalmente nel contesto di questa disciplina per “informazione” non intendiamo l’insieme
di notizie che otteniamo per mezzo dei cosidetti “organi di informazione” (come agenzie
giornalistiche, uffici stampa, giornali, telegiornali, etc.), ma qualcosa di molto più semplice:
per “informazione” intendiamo un insieme di dati, dove un “dato” è un insieme di simboli
organizzati in maniera strutturata. Ad esempio, la prima riga di questo documento riporta
un dato. Attenzione: un dato esiste indipendentemente dal significato che gli attribuiamo. Il
fatto che “meccanica” abbia un certo significato per chi legge non è determinante per il
dato costituito dalla sequenza di simboli “m”, “e”, “c”, “c”,…e così via,
Possiamo definire l’informatica allora come segue:
Informatica: la disciplina che si occupa dell’elaborazione automatica
dell’informazione, intesa come insieme di dati (sequenze strutturate di
simboli).
Elaborare vuole dire manipolare, modificare, trasformare. Ogni sistema che opera
trasformazioni può essere visto come un artefatto che riceve delle entità di vario genere, le
trasforma, e poi le restituisce trasformate. Ciò che entra in un sistema viene chiamato
input, ciò che esce da tale sistema viene chiamato output, e la trasformazione dell’input
nell’output può essere visto come un servizio che il sistema ci offre. Non tutti i sistemi
operano per fornirci un servizio: un sistema naturale come un albero riceve in input
energia dal sole, dal suolo, etc. e la trasforma in un output di legno, foglie e frutti
indipentemente da noi. Il discorso è diverso per i sistemi artificiali: gli ingegneri si
adoperano per costruire sistemi che operino trasformazioni utili all’uomo. Nel caso dei
sistemi informatici, sia l’input sia l’output sono dati, e il sistema opera manipolando tali
dati.
Possiamo studiare un sistema esclusivamente dal punto di vista esterno, interessandoci al
solo rapporto che c’è tra l’output e l’input (tipicamente l’output è una funzione dell’input,
ossia, riprendendo la definizione di funzione matematica, ad ogni input corrisponde uno e
un solo output). In questo caso si dice che adottiamo un approccio “black-box”, in cui il
sistema è visto come una scatola nera, il cui contenuto è a noi invisibile.
Se invece decidiamo di osservare l’intero del sistema, per capire quale siano i meccanismi
che regolano la trasformazione dell’input nell’output, allora l’approccio è quello della
“white-box”: un contenitore trasparente che ci permette di vedere che cosa succede al suo
interno.
Se adottiamo un approccio “white-box” e andiamo ad osservare quello che succede
all’interno di un tipico sistema informatico di oggi, noi vedremmo quanto segue:
La cosa potrebbe lasciare perplessi: non si era detto che in informatica i sistemi ricevono,
trasformano e restituiscono dati? Che cosa c’entrano gli impulsi elettrici?
Lo sviluppo a partire dalla metà del XX secolo delle tecnologie elettroniche ha fatto sì che
si costruissero sempre più frequentemente sistemi informatici per mezzo di circuiti
elettronici (molto più veloci di tecnologie alternative come, ad esempio, la meccanica).
Questo non vuol dire che non si possano realizzare sistemi informatici in altri modi: ad
esempio Pascal costruì la “Pascaline” – una macchina calcolatrice per addizioni e
sottrazioni – nel XVII secolo, quando ancora l’elettronica non era stata inventata e i sistemi
di elaborazione erano costituiti da un gran numero di ruote dentate.
Riferimenti per la foto:
"Arts et Metiers Pascaline dsc03869" by Blaise Pascal. Licensed under Creative
Commons
Attribution-Share
Alike
3.0
via
Wikimedia
Commons
http://commons.wikimedia.org/wiki/File:Arts_et_Metiers_Pascaline_dsc03869.jpg#mediavi
ewer/File:Arts_et_Metiers_Pascaline_dsc03869.jpg
Quindi, per motivi di convenienza oggi si costruiscono i sistemi informatici con le
tecnologie elettroniche anziché quelle meccaniche. Rimane ancora la questione del
legame tra gli impulsi elettrici e i dati. La stessa questione si pone con la Pascaline di
Pascal: se si tratta di una macchina calcolatrice, vuole dire che in input e in output ci sono
dei numeri; qual è il legame tra l’input e l’output effettivi di una Pascaline (ossia posizioni di
dischi e quadranti metallici) e i numeri che dovrebbe elaborare? La risposta è la stessa e
costituisce uno dei concetti fondamentali dell’informatica, quello di codifica.
Codifica: corrispondenza biunivoca tra un insieme qualisiasi di elementi e un
sottoinsieme dei numeri naturali.
Per esprimere un certo numero n sulla Pascaline occorre posizionare i suoi dischi in una
determinata posizione e tale posizione deve essere l’unico modo per rappresentare n e
non deve rappresentare nessun altro numero. Queste condizioni si rendono necessario
per evitare ambiguità e interpretazioni errate nell’uso del sistema.
Per fare un esempio più vicino alla vita di chi legge, gli stessi studenti di UniBG sono stati
“codificati” all’atto dell’iscrizione per mezzo della matricola che è stata loro assegnata: ogni
studente ha una sola matricola e nessun altro studente ha la sua stessa matricola – in
questo modo si è creato un sistema con cui fare riferimento a tutta l’informazione legata
agli studenti per mezzo di un numero, ossia di un dato facilmente elaborabile dai sistemi
informatici.
La codifica su cui si basano i sistemi informatici costituiti da circuiti elettronici è la
seguente:
• i circuiti elettronici ricevono in input impulsi elettrici che variano tra due specifici
valori di tensione: uno basso e uno alto (per i sistemi attuali tali valori sono 0 Volt e
5 Volt, ma questo è un dettaglio tecnologico che potrebbe cambiare in futuro senza
modificare il funzionamento di questi sistemi)
• i circuiti elettronici restituiscono in output gli impulsi elettrici che si ottengono
applicando agli impulsi in input le trasformazioni necessarie, per le quali i circuiti
sono stati costruiti; anche gli impulsi elettrici in output sono compresi tra i valori
basso e alto di tensione
• la corrispondenza coi numeri naturali è questa: al valore di tensione bassa
corrisponde il numero 0 e al valore di tensione alta corrisponde il numero 1
Se teniamo in mente questa corrispondenza, allora possiamo interpretare il funzionamento
del circuito elettronico in maniera più interessante per l’informatica: non stiamo più
osservando impulsi elettrici che entrano in un sistema e vengono trasformati in altri impulsi
che vengono mandati in output, bensì una sequenza di 0 e 1 (a seconda dei valori di
tensione presenti) che viene trasformata in un’altra sequenza di 0 e 1 in uscita dal sistema.
Nasce spontanea una domanda:
“I sistemi informatici sono sistemi che elaborano esclusivamente sequenze di 0 e 1?”
La risposta è sì, ma sarebbe semplicistico fermarsi qui. Tramite la cosiddetta “codifica
binaria”, che vedremo nella prossima lezione, le sequenze di 0 e 1 possono essere
trasformate biunivocamente in sequenze di cifre da 0 a 9, ossia in numeri nel sistema
decimale come siamo abituati ad usarli. Di fatto, i sistemi informatici sono sistemi che
elaborano numeri. Non a caso i sistemi informatici più comuni si chiamano calcolatori:
elaborano numeri, ossia eseguono calcoli, cioè operazioni che prendono numeri in input
(gli operandi) e restituiscono altri numeri in output (il risultato). Il temine inglese computer
ha lo stesso significato – il computer è un sistema che computa, ovvero esegue calcoli.
Da questo punto di vista è facile capire come si possa considerare l’informatica come una
branca della matematica (ovviamente con l’aggiunta fondamentale degli aspetti
ingegneristico-tecnologici che ci aiutano a costruire i circuiti elettronici di cui sono costituiti
i calcolatori).
Queste considerazioni appaiono naturali quando usiamo i sistemi informatici (che
includono non solo i computer, ma anche gli smartphone, i navigatori, i termostati e tutti i
sistemi che comportano elaborazione di dati) come delle calcolatrici per fare di conto. Un
po’ meno ovvio è il legame con la matematica quando usiamo gli stessi sistemi per vedere
film, ascoltare musica, fare foto.
In realtà si tratta sempre di arricchire i sistemi informatici con le codifiche necessarie a
trasformare un fenomeno naturale come la luce che ci permette di vedere immagini oppure
le onde sonore che ci permettono di sentire suoni e musica in rappresentazioni numeriche
elaborabili dai computer.
Ad esempio, nel caso dei suoni e della musica, il nostro orecchio ci peremette di sentirli
perché il suono si trasmette sotto forma di onde nell’aria (nel vuoto il suono non si
trasmette) e possiamo costruire un modello matematico di tali onde per mezzo delle
funzioni sinusoidali e tracciare un grafico. Una funzione matematica è costituita da un
numero infinito di punti che necessiterebbero di un tempo infinito per essere elaborati uno
ad uno, motivo per cui ci accontentiamo di considerarne solo alcuni, per mezzo della
tecnica del campionamento (si considera un certo numero di punti della curva nell’unità di
tempo – tale rapporto si chiama frequenza di campionamento, e più alta è la frequenza,
più campioni si hanno). La curva è tracciata in un piano cartesiano, quindi a ciascun
campione corrisponde una coppia di numeri. Ecco che dall’onda sonora abbiamo costruito
una sequenza (di coppie) di numeri. La musica elaborata dal computer è appunto una
sequenza di numeri (ad es. un file MP3) che può essere trasferita da un computer all’altro
(come avviene quando acquistate un brano su iTunes). Per riprodurre il suono originale
bisogna procedere in maniera inversa: a partire dalla sequenza di numeri tracciamo una
versione approssimata della) curva che fornirà indicazioni su come stimolare con impulsi
elettrici la membrana di un altoparlante che ricreerà l’esperienza uditiva per le persone
intorno.
Se la frequenza di campionamento è troppo bassa, la qualità del suono riprodotto ne
risente perché la ricostruzione della curva differisce molto dall’onda sonora originale.
Anche con frequenze molto alte, però, non si avrà mai la ricostruzione dell’onda originale
perché, come già detto, trattasi di funzione matematica costituita (almeno dal punto di vista
teorico) da una serie infinita di punti. L’orecchio umano ha una soglia di sensibilità oltre la
quale non può andare, quindi campionando in maniera adeguata non riusciamo a
distinguere la ricostruzione dall’originale.
Anche se non ce ne accorgiamo, rimane questa distinzione, che riflette la differenza che
c’è tra i fenomeni cosiddetti analogici e quelli digitali. Parliamo di fenomeni analogici
quando un fenomeno naturale viene descritto con un fenomeno, appunto, analogo, della
sua stessa natura: per rimanere nel contesto musicale, i dischi di vinile sono un artefatto
analogico perché la forma sinusoidale delle onde sonore dell’esibizione originale sono
riprodotte, in dimensioni molto ridotte, nei solchi del disco. La puntina segue queste
incisioni e il suo movimento comanda (tramite diverse parti connesse all’interno del
giradischi) l’altoparlante. I file MP3, invece, permettono la riproduzione di musica per
mezzo della tecnologia digitale: il dito con cui premiamo tasti (digitus in latino) non c’entra,
c’entrano invece le cifre (digit in inglese) con cui sono codificati i campioni registrati.
Di fatto si parla di tecnologia digitale o digitalizzazione ogni volta che un fenomeno viene
descritto, per mezzo di un’opportuna codifica, sotto forma di una sequenza di numeri.
Per concludere, è vero che i sistemi informatici sono “semplicemente” sistemi che
elaborano sequenze di numeri, ma con essi possiamo occuparci di qualunque fenomeno
che sia digitalizzabile.