Trattato pratico di Matematica Informatica

…e con questo bel titolo già mi sono giocato almeno il 50% dei potenziali lettori 🙂

Niente panico: si parla solo di come fare due conti semplici per togliersi qualche dubbio su bit, byte e compagnia. Quella che segue non è una trattazione rigorosa sulla matematica binaria, i circuiti elettronici ed altre “robe di computer”: lascio questo compito ai testi specialistici. Cercherò di sfruttare ciò che ho imparato negli anni per spiegare nel modo più accessibile e “pratico” possibile il significato dei numeri e delle unità di misura in cui normalmente ci si imbatte quando si ha a che fare con computer e simili.

Non mi addentrerò in tanti dettagli, che richiederebbero altrimenti spiegazioni più rigorose ma poco interessanti per gli scopi pratici di questo post. Oltretutto io non sono propriamente del mestiere, quindi preferisco evitare imprecisioni e confusioni su ciò che credo di aver capito ma in realtà non ho capito per niente. Suggerimenti, integrazioni e precisazioni sono dunque più che mai benvenuti.

~•~•~•~

Partiamo dalle basi

Un classico dell’umorismo informatico:

Al mondo ci sono 10 tipi di persone al mondo: quelle che capiscono il sistema binario e quelle che non lo capiscono.

Seguitate a leggere se non l’avete capita.

Letteralmente, bisogna tenere a mente quale sia la “base di numerazione” che usa un computer rispetto a quella che usiamo noi non-computer. Noi contiamo in “base 10” (decimale) mentre i computer contano in “base 2” (binaria). Contare in “base N” significa usare N simboli (cifre) per scrivere i numeri (definire una quantità) e costruire gli stessi come somma di potenze della base. Di nuovo, niente panico: un esempio chiarirà il concetto, prendendo come “cavia” il numero 126 (mi limito per semplicità agli interi). In “base 10” usiamo le cifre da 1 a 9 più lo 0 (quindi 10 simboli) ed il numero 126 sarà così scomposto:

126=(1\times100)+(2\times10)+(6\times1) = (1\times10^2)+(2\times10^1)+(6\times10^0)

In base 2 useremo solo le cifre 0 e 1 e lo stesso numero sarà scomposto così:

126=(1\times64)+(1\times32)+(1\times16)+(1\times8)+(1\times4)+(1\times2)+(0\times1)

Analogamente a prima, le cifre utilizzabili nella numerazione in base 2 sono moltiplicate per le potenze della base fino al grado necessario ad ottenere il numero. Cominciamo a familiarizzare con alcune potenze di 2, ci serviranno presto:

64=2^6\quad32=2^5\quad16=2^4\quad8=2^3\quad4=2^2\quad2=2^1\quad1=2^0

In definitiva possiamo dire che 126_{10}=1111110_2, dove i pedici denotano la base di numerazione. Non serve imparare a convertire numeri da una base all’altra: si può fare facilmente persino dalla casella di ricerca di Google, scrivendo “convert <numero> in binary” per vedere comparire subito il risultato. L’importante è tenere a mente questa caratteristica per poi capirne le implicazioni: una cosa per volta.

I computer usano la base 2 perché è quella che rispecchia la natura fisica dei circuiti che li compongono. Non me ne vogliano i “puristi” dell’elettronica ma sostanzialmente si può dire che un computer è fatto da un mucchio di “interruttori”. Come tali, gli interruttori possono essere accesi (stato che equivale a 1) o spenti (stato che equivale a 0). Tanto basta per rappresentare ed operare sui dati che noi forniamo, macinati fino a diventare lunghe file (stringhe) di 0 e 1 facili da elaborare. Lunghe file… Ma lunghe quanto?

~•~•~•~

Entrino in scena i “bit”

Cominciamo a vedere le “unità di misura” con cui un computer lavora. Il bit (contrazione di “binary digit“) è una singola cifra binaria, 0 o 1, ed è la minima quantità possibile con cui si ha a che fare: un solo interruttore spento o acceso. Per rappresentare un dato si mettono in fila un certo numero di bit, formando un registro.

Fonte immagine switch

Il numero 126 usato nell’esempio di prima sarebbe rappresentato pressappoco così in uno di questi registri. C’è un pezzetto in più rispetto a prima ed il motivo è semplice: i registri utilizzati sono di lunghezza predefinita (8, 16, 32, 64 posizioni), non si possono “accorciare” quando il dato in essi immagazzinato richiederebbe un numero di cifre minore della lunghezza. Le posizioni inutilizzate a sinistra rimangono al valore 0.

Nel nostro esempio abbiamo quindi un registro a 8 bit; qualcosa comincia a suonare familiare? Potremmo non saperne niente di sistema binario ed elettronica ma ci potremmo ricordare che il glorioso NES (Nintendo Entertainment System) era una console a “8 bit” o che il pc che vorremmo acquistare ha un sistema operativo a “64 bit” (spesso preinstallato grrr… :evil:). In altre parole, l’hardware ed il software gestiscono registri di quella caratteristica lunghezza.

Ok, ma che significa tutto ciò? Per esempio se ho un sistema con grafica o audio a N bit, questo potrà rappresentare 2N colori o altrettante note diverse, ciascuna associata ad una delle sequenze: tante sono infatti le combinazioni possibili di 2 elementi (0 e 1) su N posizioni. La musichetta e la grafica di Super Mario Bros. su NES ce le ricordiamo tutti, no?

Facciamo ora una prova pratica con 23: le combinazioni possibili sono 8 ovvero:

000\quad001\quad010\quad011

100\quad101\quad110\quad111

Nel caso di 264 le possibilità sono un filino di più (18446744073709551616 ovvero oltre 18 trilioni ovvero 18 miliardi di miliardi): divertitevi a scriverle tutte! Attualmente 64 bit sono il limite massimo per l’hardware e il software disponibili.

Un’altra implicazione più “tecnica” riguarda la memoria RAM, per la quale ogni combinazione rappresenta un “indirizzo di memoria”. In pratica i programmi puntano ad una specifica cella di memoria RAM tramite una stringa. I sistemi operativi a 32 bit, ad esempio, potranno dunque gestire al massimo 232 = 4294967296 indirizzi di memoria (a meno di attivare opzioni che estendono questa capacità). Il concetto però è chiaro: più bit ci sono e meglio è.

Un po’ di amarcord: il mio primo pc (1987 o giù di lì) aveva la grafica CGA a 4 bit (16 colori e neanche tutti insieme!) mentre la prima scheda audio (anni e anni dopo) era a 8 bit (mitica Creative Sound Blaster!). Dopo qualche tempo, con un computer un po’ più serio, usavo il sistema operativo MS-DOS (versione 6.x) e il trisavolo Windows 3.11 che erano sistemi a 16 bit. Oggi utilizzo Windows XP/7 e varie distribuzioni GNU/Linux alcune delle quali a 64 bit, audio a 16 bit e video a 24 bit (16 milioni di colori).

~•~•~•~

Da numeroni a numerini

Come ogni unità di misura che si rispetti, anche il bit ha i suoi multipli che ci aiutano a maneggiare più agevolmente numeroni colossali come i 18 trilioni di cui sopra. Cominciamo con il primo multiplo che è il byte: 1 byte (B) = 8 bit (b). Occhio alle maiuscole! Più spesso ci si riferisce ai multipli del byte piuttosto che del bit.

Per complicarci la vita (o facilitarcela, a seconda dei punti di vista) esistono due classi di multipli del byte: una legata al sistema metrico decimale ed una alle potenze di 2 (lo avevo detto che sarebbero tornate utili!).

Vediamo in sintesi la prima classe (multipli di 10):

1000\text{ B}=1 \text{ kB (kilobyte)}\quad\to\quad1000\text{ kB}=1\text{ MB (Megabyte)}

1000\text{ MB}=1\text{ GB (Gigabyte)}\quad\to\quad1000\text{ GB}=1\text{ TB (Terabyte)}

Mi sono limitato ai multipli con cui si ha a che fare normalmente.

Analogamente la classe di multipli definita dalle potenze di 2 sarà così composta:

1024\text{ B}=1 \text{ KiB (kibibyte)}\quad\to\quad1024\text{ KiB}=1\text{ MiB (Mebibyte)}

1024\text{ MiB}=1\text{ GiB (Gibibyte)}\quad\to\quad1000\text{ GiB}=1\text{ TiB (Tebibyte)}

La pagina di Wikipedia relativa al Kibibyte riporta anche i multipli di ordine superiore per entrambi i casi.

La ragione di questo “raddoppio” è sempre la solita: noi siamo a nostro agio con la base 10, i mucchietti di circuiti invece con la base 2. Quando un computer misura una risorsa a sua disposizione (la RAM o lo spazio su disco ad esempio) conta nel modo che gli è più congeniale e poi, cortesemente, ci presenta il risultato in forma “umana”. Dunque non incontreremo spesso Kib, MiB e gli altri multipli di derivazione “binaria”, seppure la loro presenza sia determinante. Per esempio la memoria RAM si acquista in banchetti da 512 o 1024 MiB (impropriamente indicati con MB) piuttosto che da 500 o 1000 MB. Ciò è dovuto proprio alla necessità dell’hardware di misurare secondo i multipli binari.

~•~•~•~

Val più la pratica che la grammatica

Collage: Prima e dopo

Dopo la necessaria ma noiosissima teoria, diamo un senso pratico a queste quantità. Cosa può fare un singolo byte? Un byte può ad esempio rappresentare un carattere.

Esperimento: provate a creare un file di testo vuoto ed a verificarne la dimensione. Quindi scrivete un solo carattere (valgono anche lo spazio, la punteggiatura ed il ritorno a capo), salvate e ricontrollate. Mi credete adesso?

Partendo da qui, possiamo mettere nelle giuste proporzioni le dimensioni dei supporti di memorizzazione (cd, hard disk, pendrive) o della memoria RAM di un computer.

Un altro salto nel recente passato: qualcuno ricorda ancora i floppy disk, magari quelli da 5 1/4″? I più vecchi che io ricordi avevano la stratosferica capacità di 360 kB quindi 360000 caratteri. L’intera Divina Commedia occupa circa 500 kB (in formato testo semplice, scaricabile da LiberLiber). Immaginate quindi i 3 libri, per quanto possano essere fisicamente piccoli, spremuti dentro due dei vecchi floppy. Per fortuna che poi sono arrivati quelli da 1.44 MB!

Più tardi, quando i primi CD si affacciarono sul mercato, ci si strabiliava dei 650 MB di capacità che bastavano a contenere un’intera enciclopedia. Oppure 1300 volte la Divina Commedia. :-). Oggi trattiamo con le capacità nettamente superiori di DVD (4.7 o 8.5 GB), Blu-ray (> 50 GB), pendrive (attualmente fino a 64 GB) e hard disk (2 TB e in costante crescita). Quante volte ci va la Divina Commedia in 1 TB?

E con questo spero di aver chiarito un poco le idee a chi continua a chiedermi se 1 MB o 1 GB “è poco o è molto”, ed anche a chi pretende di mandarmi via mail qualche centinaio di MB di video delle vacanze. Una cosa è spedire una cartolina, un’altra cosa è spedire la Treccani.

Torniamo ai nostri sempre meno misteriosi byte: l’analogia 1 B = 1 carattere è corretta ma limitativa. Non esistono solo i file di testo e dunque urge un altro esperimento!

100 x 100 pixel

Questa volta consideriamo un’immagine in formato bitmap (BMP) di dimensioni 100 × 100 pixel, che si può creare anche con il più semplice programma di grafica (o con l’aiuto di Piet Mondrian). Questa sembra il vecchio monoscopio di fine trasmissioni… 🙂

Il formato BMP è una sorta di “tabella”: in ognuna delle celle è scritto il colore di ogni singolo pixel che compone l’immagine. Questa tabella avrà dunque 100 × 100 = 10000 celle. Ho salvato il file in formato colore a 24, 4 e 1 bit (monocromatico): ciò significa che ogni “cella” conterrà una definizione del colore di un pixel lunga 24, 4 e 1 bit. Facciamo due conti per stimare le dimensioni finali dei file (ai più curiosi il compito di verificare):

24\text{ bit/px}=3\text{ B/px}\times10000\text{ px}=30000\text{ B}=30\text{ kB}

4\text{ bit/px}=0.5\text{ B/px}\times10000\text{ px}=5000\text{ B}=5\text{ kB}

1\text{ bit/px}=0.125\text{ B/px}\times10000\text{ px}=1250\text{ B}=1.25\text{ kB}

Le ultime due notazioni sono improprie ma rendono più agevoli i conti. In realtà il “mezzo byte” ci sarebbe pure, ma facciamo finta di niente… Ad essere pignoli-pignoli-pignoli, la dimensione effettiva è leggermente maggiore perché il file contiene ulteriori informazioni che ne indicano il tipo: l”immagine monocromatica ad esempio è di 1662 B contro i 1250 B calcolati. Science: it works, bitches!

~•~•~•~

Mi dà un etto e mezzo di byte?

Quando compriamo un prodotto o un servizio informatico, spesso la “qualità” (e dunque il costo) dello stesso è determinata da una caratteristica in cui “compare” qualcosa che ha che fare con bit e byte. Vediamo quindi un po’ di capire per cosa spendiamo i nostri euro in via di estinzione.

Supporti di memorizzazione

Questa è la categoria più semplice da valutare: praticamente ne abbiamo parlato per tutto il tempo. Pensiamo quindi a cosa vorremmo mettere in un hard disk per scegliere il giusto “taglio”.

I file più “ingombranti” sono certamente i file video. Ho già ricordato la capacità di DVD / Blu-ray di cui potremmo voler fare una copia integrale: anche se non sempre sono pieni fino all’orlo, riempiranno comunque rapidamente lo spazio disponibile. Se questa è una nostra esigenza, ci orienteremo di sicuro verso i dischi più capienti (> 2 TB). Un video in AVI, MPG, MKV ed altri formati “compressi” oscilla tra 1 e 2 GB (film da 2 ore circa) a seconda della qualità.

Foto e musica sono sugli stessi ordini di grandezza: un buono smartphone può fare foto le cui dimensioni sono circa 5 MB (di solito JPG, un formato compresso per il quale non vale il calcolo fatto prima per il BMP). Dimensione simile possiede un MP3 a discreta qualità (4 minuti a 192 kbps). Il conto è presto fatto pensando a quante foto e quanta musica vogliamo essere capaci di immagazzinare. Calma, dei “kbps” parliamo subito…

I file multimediali hanno insito il legame con il tempo: una canzone dura mediamente 5 minuti, un film un paio d’ore. Il file dunque viene letto progressivamente, a differenza di un immagine o di un testo che sono caricati completamente alla loro apertura. Quanto grande deve essere il “pezzetto” di file da leggere per riprodurre un secondo di audio o di video ce lo dice il cosiddetto “bitrate” espresso appunto in kbps (kilobit per second – kb/s). Il bitrate equivalentemente indica quanto spazio serve a “descrivere” ogni secondo di audio o video. Come nell’esempio del file BMP, ciò definisce la qualità e permette di stimare la dimensione del file. Per il file MP3 di cui sopra il conticino è il seguente:

4\text{ min}=240\text{ sec }\times192\text{ kilobit/sec}=46080\text{ kilobit}=5760\text{ kilobyte}

Ed ecco spuntare poco più di 5 MB, come promesso. Sim Sala Bim! 😉 Con questo semplice conto tempo fa ho calcolato la qualità a cui convertire in MP3 un’intera discografia in modo da farla stare su un solo CD. Quindi queste astrusità possono servire anche nella vita reale, ma ciò non toglie che io passi per strano raccontandole…

Velocità di connessione (ADSL, LAN, Wi-Fi)

“Salve, siamo di TeleScocciaPhone, le offriamo una connessione ADSL 20 Mega con abbinato router Gigabit wi-fi N per chattare e facebookare fino a perdere la dignità ed il senso della realtà, attaccarsi ad Emule, Youtube e navigare come se non ci fosse un domani, tutto contemporaneamente e costantemente. Che fa, li prende?”

Partendo dall’assunto che la velocità di connessione che i gestori pubblicizzano è (altamente) teorica -tradotto: non si vedrà MAI- la dicitura “Mega” lasciata furbamente in sospeso significa ovviamente Mbit/s (Mbps – Megabit al secondo) e non MB/s. Avrete notato che ormai non uso più formulette dimostrative: confido che mi abbiate seguito fin qui.

Un buon test della velocità effettiva si può eseguire su Speedtest oppure scaricando il torrent di una distribuzione Linux diffusa (io ho scelto Kubuntu :-)). È bene inoltre considerare che, se da un lato del modem ci siamo noi che possiamo (teoricamente!) ricevere ad alta velocità, dall’altro lato c’è un server che potrebbe comunque non inviare alla stessa velocità (o le fonti/seed nel caso dei torrent). Personalmente ho una connessione a 8 Mbps con la quale faccio tutto quello che mi serve e mi avanza anche qualcosa. E ora vi dico perché.

A parte i torrent, un’altra attività che richiede “larghezza di banda” è lo streaming video (Youtube, Vimeo e compagnia): un video Flash con la massima qualità possibile di audio ed immagine richiede circa 6 Mbps (verificato qui), il che ci lascia ancora un piccolo margine di banda per la navigazione “leggera” con la mia connessione.

Per finire esaminiamo rapidamente cosa succede dal “nostro lato” del router. Se dal doppino telefonico arrivano i Mbps che ci concede il gestore, il router e le schede di rete (LAN o Wi-Fi) assicurano velocità ben più elevate e più vicine al valore dichiarato.

La LAN (cavo Ethernet) viaggia a 100 o 1000 Mbps (queste ultime schede sono dette anche Gigabit), il Wi-Fi “g” e lo standard attuale “n” arrivano rispettivamente a 54 e 450 Mbps di picco. I conticini soliti li state facendo voi, vero?

Per quanto possano essere notevoli le “perdite” nella trasmissione (in particolare per il wireless), difficilmente dovremmo preoccuparci di basse velocità di navigazione. A maggior ragione se si condividono file tra i computer di casa o i dischi di rete.

Sempre per fare un esempio reale, comodamente seduto sul divano posso vedere un film salvato sul pc desktop facendo lo streaming via Wi-Fi sul portatile. La velocità massima di trasferimento che ho ottenuto è di oltre 5 MB/s (sì, stavolta sono megabyte), che occasionalmente può scendere fino a 2-3 MB/s. Posso pensarla così: se ce la faccio a copiare il film in un tempo minore della sua durata, allora posso farne anche lo streaming. Chiaro? Devo spiegarlo? Tiro fuori di nuovo le formule? Meglio di no, anzi direi che quanto scritto finora è più che sufficiente.

Spero di aver aiutato qualcuno a chiarirsi le idee sull’argomento, piuttosto che confondersele definitivamente. Nel caso, sono qui a separare KiB da kB (e a giocare con \LaTeX) ancora per un po’. Fatemi sapere.

Annunci

Informazioni su Man from Mars

https://extendedreality.wordpress.com/

  1. icittadiniprimaditutto

    Reblogged this on i cittadini prima di tutto.

    Mi piace

  2. Perdonami, ma non ce la faccio proprio a finire l’articolo. Ho studiato il sistema binario solo ed esclusivamente all’università, ci credi? Sapevo che c’era, ma mai prima di allora l’ho dovuto studiare. E, pur amando la matematica, non l’ho mai capito. O meglio, lo capisco nel momento in cui lo studio (e comunque non senza difficoltà), ma se poi il giorno dopo mi chiedessi di spiegartelo di nuovo non ci riuscirei e crollerebbe tutto ciò che mi era sembrato di aver capito il giorno prima. Capisco le leggi dell’idraulica, teoremi di Reynolds e principi di Lagrange…ma non chiedermi una cosa basilare come il sistema binario perché proprio è il mio tallone d’Achille!!
    Ora lo fanno studiare già dalle elementari come un gioco; ricordo mia nipotina che studiava le conversioni da un sistema all’altro, passando dal “Pianeta Base 2” al “Pianeta Base 7”, dal “Pianeta Base 10” al “Pianeta Base 4” e così via… Non ci capivo un mazza!!!

    Mi piace

  3. Mi dispiace di averti sconvolto. Però l’articolo non è tutto sul sistema binario, anzi ce n’è solo un accenno e poi si passa ad altro ed ho evitato molte formule (specie quelle di conversione). In realtà è quasi tutto basato sul sistema decimale: dieci, cento, mille e roba così. Dai, fai un altro sforzino. In 5 (101 in binario) minuti hai letto tutto…

    Mi piace

  4. Ralph Magpie

    Stimatissimo Professore,
    Da un luminoso luminare che irradia scienza e fantascienza culturale, mi sarei aspettato un trattato del tipo “qu-bit for dummies”. Mi consenta (locuzione sdoganata, visto che oramai si sente poco per fortuna), oramai di GB kB e soci lo sanno anche i muri, anche senza capirne una lampadina.
    Aspettolle impaziente per questo trattatello, che ci farà capire i computer del futuro, dopo aver spiegato a noi poveri mortali ll’abc della meccanica quantistica,
    Intanto, per metterla in agitazione, le sussurro, che le scrivo da un computer con su Windows 8 (che non ha mai lesinato i Tb), perché tutto sommato sono informaticamente masochista, anche se in questo caso mi debbo ricredere ( come prima impressione …)
    Salutandola indistintamente, resto in febbricitante attesa della sua perla di scienzitá.

    Mi piace

  5. I qu-bit li sto studiando da un poco ma sono sfuggenti: ci sono, non ci sono, sono 0, sono 1, sono entrambi. Insomma devo trovare il modo di digerirli.
    Poi ti dirò: la conoscenza di GB, kB e famiglia non è tanto diffusa come noi “che siamo pratici” possiamo credere. L’ispirazione del post è stata proprio la domanda (l’ennesima) su come inviare i video delle vacanze via mail (400 MB!).
    Febbricita pure, nell’attesa delle perle. Se cominci a febbricitare troppo, consiglio Aspirina effervescente 2 volte al dì.
    P.s.: W8? Tienilo da parte che mi è venuto lo sfizio di provarlo, prima o poi.

    Mi piace

  6. obo

    bell’articolo, le basi 😀
    ps: il font dei numeri mi sembrava familiare XD evviva \LaTeX *-*

    Mi piace

  7. Grazie.Dal tuo commento deduco che non ho scritto scemenze. 🙂
    Latex è un bello strumento. L’ho infilato nel post ogni volta che ho potuto perché la resa grafica è davvero bella. Quasi quasi mi è dispiaciuto non dover scrivere formule più complesse!
    (Mi sono permesso di “aggiustare” appena appena il tuo commento, visto che apprezzi \LaTeX)

    Mi piace

  8. obo

    ahahaha grande 😀

    Mi piace

  9. “Penso di poter affermare che nessuno capisce la meccanica quantistica”. Richard Feynman. E se lo diceva lui…
    Ottimo articolo! E mi associo al viva \LaTeX !

    Mi piace

  10. Grazie.
    Certo, se lo dice Feynman, chi siamo noi per contraddirlo? 🙂
    P.s.: ho “aggiustato” anche il tuo commento…

    Mi piace

  11. Pingback: Computer maths made easy « Extended Reality

  12. Pingback: Archeologia informatica ed “insirie” moderne « Nuvole al vento

  13. Pingback: Internet key Vodafone Huawei K4305 su Kubuntu 12.10 “Quantal Quetzal” | Extended Reality

  14. Pingback: Sulle basi di numerazione 10,12,20,60 | Nuvole al vento

Comments are disabled. Please comment and share on Twitter, G+, Facebook.

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: