Dall'hardware al software

di Giorgio Davanzo
L'informatica di oggi è il frutto di più di mezzo secolo di sviluppo tecnologico.

Le basi dell'informatica

Da sempre l'uomo ha cercato di crearsi degli strumenti che potessero supportarlo nelle operazioni ripetitive e monotone.
Con questo intento, negli anni siamo riusciti a sviluppare macchine forti ed intelligenti a volte più di noi stessi.

Se il futuro si dimostra una sfida continua che sposta il limite sempre più lontano, l'uomo ha sempre dimostrato di voler correre nella direzione del progresso.

Dalla valvola al microprocessore Dai primi elaboratori meccanici rudimentali che eseguivano semplicissime operazioni matematiche, ai circuiti elettrici a valvole, ai primi transistor, ai microprocessori, la tecnologia è migliorata continuamente.

Oggi gli strumenti informatici permettono all'uomo a studiare e progettare tecnologie performanti che rappresentano un'estensione delle nostre capacità operative.

Negli ultimi anni la produzione di dispositivi elettronici si è rivelata un'attività in crescita esponenziale:
computers smartphone e smart-tv sono esempi lampanti di questo fenomeno, ma cosa hanno in comune tra loro questi dispositivi?

I dispositivi elettronici

Quando descriviamo i nostri dispositivi elettronici, utilizziamo un vocabolario tecnico che è ormai di uso comune:
processore, memoria (ram o disco), velocità del processore, risoluzione video, etc..., sono termini che caratterizzano questi strumenti intelligenti.

Un sistema elettronico può avere diverse funzioni: può eseguire dei calcoli, memorizzare informazioni, azionare dei dispositivi, oppure può permetterci di espandere il nostro canale di comunicazione.

Un dispositivo elettronico ha bisogno innanzitutto di essere alimentato elettricamente tramite rete elettrica o batteria.

La corrente elettrica, tramite percorsi obbligati stabiliti in modo più o meno rigido da collegamenti fisici e da regole software, arriverà a destinazione solo dopo aver soddisfatto le nostre richieste.
(è come deviare il corso di un torrente per azionare con l'acqua corrente le pale di un mulino)

In elettronica, un circuito può avere caratteristiche più o meno rigide;

Hardware

il lampeggiante di un cancello ad esempio, realizzato con pochi componenti elettronici sarà un grado di accendere e spegnere una lampadina con un tempo che dipenderà dal valore dei condensatori e delle resistenze utilizzati nel circuito.

Se volessi avere la possibilità di variare il tempo di accensione e spegnimento, dovrei modificare il circuito e sostituire la resistenza con un potenziometro (resistenza variabile).
... e fin qui si è parlato solo di hardware.

Ma se volessi inserire un tempo di accensione in secondi? ... e magari programmare una sequenza particolare di accensione e spegnimento?
Non basterebbe più ruotare il potenziometro, ma dovrei inserire dei parametri o un programma di funzionamento.

Per fare questo dovrei implementare nel circuito un'elettronica programmabile in grado di riconoscere dei parametri o eseguire istruzioni scritte da me.

Esempio di parametri:
TempoLampadinaAccesa = 1
TempoLampadinaSpenta = 0,8

Esempio di programma:
Esegui per 3 volte:
{
AccendiLampadina 1 secondi;
SpegniLampadina 0,8 secondi;
}
Sia i parametri che il programma (software) possono essere modificati facilmente effettuando un aggiornamento del dispositivo e senza la necessità di eseguire modifiche pesanti sui componenti (hardware).

I programmi devono rispettare le regole comuni stabilite dai costruttori dei dispositivi che, tramite i linguaggi di programmazione (solitamente in inglese), ci permettono di configurare l'hardware.

Spesso si utilizzano compilatori: software in grado di trasformare il linguaggio umano in linguaggio macchina. Questi strumenti consentono di ottimizzare l'utilizzo della memoria del dispositivo.

Ora andiamo ad analizzare un hardware di esempio: Adesso che conosciamo la struttura hardware, andiamo a vedere come si può, tramite il software, renderla intelligente.