Trattando la storia di Internet si è accennato al BIT (binary digit). Questo elemento sta alla base di tutta la programmazione esistente e del funzionamento di qualsiasi computer. Del resto l’unico modo che si ha per “comunicare” con una macchina è quello binario. Uno strumento elettrico usa due stati, passaggio di corrente cioè 1, assenza di passaggio cioè 0. Pertanto tutti i sistemi partono da qui, il bit, l’ “atomo” di tutta la struttura informatica. Il bit, associato a questo transito di corrente, ha assunto per definizione i due stati, uno aperto o 0 (si legge zero) e uno chiuso o 1.

C’è da chiedersi come sia potuto capitare che da due semplici simboli 0 e 1 si sia potuta costruire tutta questa “piramide” enorme, quale è il mondo dell’informatizzazione.

Semplicemente un passo per volta. Come una semplice goccia d’acqua può essere insignificante, un’infinità di gocce possono creare un mare, diventare una forza della natura, travolgere qualsiasi cosa.

Questo semplice bit ha fatto proprio la stessa cosa, travolgendo l’umanità per sempre.

La struttura di base

Partendo dal bit si cominciò a studiare una possibile struttura dati che comprendesse i caratteri usati abitualmente, lettere, numeri, caratteri speciali e di punteggiatura. Si iniziò usando prima 4 bit per la rappresentazione dei numeri (24=16). Poi 6 bit (26=64) per coprire anche il set grafico dei caratteri stampabili, per arrivare infine a 8 bit (28=256) poiché permettevano di contenere convenientemente due cifre decimali di 4 bit ciascuna. Venne perciò adottato il codice EBCDIC a 8 bit, cioè l’attuale byte, come codice di rappresentazione standard nei computer. Successivamente si passo allo standard ASCII, tutt’ora in vigore.

In pratica il byte comprende tutti i numeri da 0 a 9, le lettere, i segni di punteggiatura, e tutti i caratteri speciali. E resta ancora spazio per altro.

Programmare usando solo i codici binari non rappresentava una condizione agevole. Indubbiamente le prime schede forate (un foro rappresentava 1, la sua assenza 0) facevano proprio questo. Un errore però costringeva a rivedere migliaia di bit creando un certa frustrazione.

Il linguaggio “umano” è invece molto più complesso e incomprensibile per un’utensile elettrico quale è il computer. Noi usiamo il sistema numerico decimale e non il binario e anche lettere , simboli, colori, ecc.

Il passaggio pertanto da un sistema all’altro comporta dei procedimenti di calcolo e di trasformazione per rendere i due sistemi “dialoganti”.

Per esempio, un numero binario scritto così 1001101011010101, per qualunque persona non significa nulla, ma se con gli opportuni calcoli si trasforma in decimale diventa 39637, comprensibile a tutti.

Il metodo di conversione è questo: bisogna moltiplicare per 2 elevato alla posizione di ogni cifra del numero partendo da destra, e poi sommare (si conta da destra partendo da 0 e non da 1, perché la numerazione decimale va da 0 a 9). Ad esempio

binario 110 = (1 x 22 ) + (1 x 21 ) + (0 x 20 ) = (1 x 4) + (1 x 2) + (1 x 0) = 4 + 2 + 0 = 6 decimale

Ora, considerando tale sequenza di bit, si è dovuto trovare il modo di organizzarli, di memorizzarli in una zona del computer (memoria), e di poterli utilizzare su richiesta. Essendo il metodo molto complesso si è studiato un sistema basato su codici mnemonici, che formano globalmente il linguaggio assembly di un determinato microprocessore.

Ripeto l’unico vero linguaggio macchina è il binario, ma per necessità di programmazione lo si è combinato in una serie di “parole” che miglioravano la leggibilità di un programma.

Un esempio di linguaggio assembly è questo:
MOV AX,BX
ADD DL,AL
CMP AX,DX

In questo caso si tratta di un indirizzamento con registro e gli operandi sono dei registri.

Senza approfondire ulteriormente, è chiaro che l’ assembly pur rimanendo un linguaggio complesso e laborioso, è sicuramente meglio gestibile e più comprensibile di tanti 0 e 1.

Spesso si parla dell’ assembly come un linguaggio di programmazione a basso livello, intendendolo come orientato alla macchina. Se invece usiamo linguaggi orientati alle persone (Basic, Pascal, Cobol, C, ecc.) si parlerà di linguaggi ad alto livello. Questi ultimi, pur essendo decisamente più comprensibili, si discostano di parecchio dalla macchina richiedendo l’uso di compilatori o di interpreti che traducano il loro significato adattandolo al computer. Così facendo, si rallentano le operazioni del processore ma si rende più facile la vita dei programmatori.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Translate »