La programmazione delle schede elettroniche viene anche chiamata “programmazione embedded”. Un sistema “embedded” è un computer incorporato all’interno di un dispositivo di altro tipo - per esempio: una fotocopiatrice, una lavastoviglie, un’automobile - di cui deve gestire e controllare, normalmente in “real-time”, alcune funzionalità. La programmazione dei sistemi embedded è caratterizzata dalla peculiare interfaccia utente, spesso limitata a pochi tasti funzionali integrati da un visore alfanumerico. La programmazione embedded è stata nel tempo l’ultima conoscenza da me acquisita. È l’esempio concreto della mia “fame di conoscenza” e del piacere che ho nell’affrontare nuove sfide. Se le applicazioni web e i programmi Windows-Mac sono abiti sartoriali creati per il committente, la programmazione embedded è la “pelle” del cliente stesso. Posso capire che l’esempio risulti piuttosto raccapriciante ma è l’esempio migliore per spiegare la programmazione embededd. I software di questa tipologia vivono e si usano per un determinato hardware cioé per una scheda elettronica a cui si sposano in maniera univoca e precisa. Quando ho cominciato a istruirmi per la programmazione embededd mi sono sorpreso nello scoprire come, in realtà questi software siano molto più presenti nella nostra realtà quotidiana di quanto pensiamo. Facciamo qualche esempio:

  • La bilancia digitale che usate per pesare persone o alimenti ha al suo interno un software che interpreta i dati e mostra un risultato sul display.
  • Il telecomando della televisione ha al suo interno un software che, premendo un pulsante, emette un segnale ad infrarossi che interagisce con la televisione.
  • Il tornello dei mezzi pubblici ha al suo interno un software che valida il biglietto inserito e decide se permettere il passaggio o meno
  • L’ascensore del proprio condominio ha al suo interno un software che decide, in base al tasto premuto, a quale piano andare
  • Il cancello del passo carraio comandato da telecomando ha al suo interno un software che comanda l’apertura del cancello in base al segnale che riceve

Normalmente un prodotto viene progettato contemporaneamente sia sotto l’aspetto hardware che software: spesso è il più flessibile software che si adatta alla vincolante rigidità hardware, ma in molti casi le componenti hardware devono essere scelte e interconnesse in funzione del software che dovrà gestirle. Un semplice esempio: dovendo realizzare un tachimetro (misuratore di velocità) disponendo di un sensore che genera un impulso per ogni unità di spazio percorsa è possibile sia contare da programma gli impulsi generati in una unità di tempo che disporre un contatore esterno da interrogare e azzerare una volta trascorso lo stesso intervallo di tempo; il criterio di progettazione in questo caso dipenderà sia da considerazioni tecniche (per esempio il periodo di tempo medio intercorrente tra due impulsi successivi) che, in particolare nel caso di produzione in grandi numeri, economiche (il costo del contatore hardware in confronto al costo zero della replicabilità del software). Risulta ovvio che una competenza della dinamica produttiva aziendale oltre che la capacità di interagire con il progettista hardware per selezionare e scegliere quale strada seguire per conseguire l’obbiettivo finale siano requisiti indispensabili per poter affrontare un qualsiasi progetto simile.