Home Imprese Sostenibili L’ineluttabilità del carOS, strada obbligata verso la digital car

L’ineluttabilità del carOS, strada obbligata verso la digital car

pubblicato il:
carOS
Foto di Markus Spiske da Pexels

L’ineluttabilità del carOS porta ad alcune osservazioni sviluppate in preparazione di un intervento che l’autore, Gianni Catalfamo, terrà nei prossimi mesi in un importante evento automotive internazionale

Alcune riflessioni a ruota libera intorno ai sistemi operativi, ai programmi software applicativi e di come, il futuro dell’automotive, sarà sempre più influenzata da questi argomenti, portando alla luce il carOS, ovvero di un sistema operativo specifico per le auto (elettriche).

A cosa serve un sistema operativoC’è stato un tempo in cui la memoria di un qualsiasi dispositivo computazionale era una risorsa molto scarsa: il calcolatore di bordo delle missioni Apollo negli anni ’60 possedeva solo 4.096 byte di memoria, a nuclei di ferrite, ma ci ha permesso di raggiungere la Luna.

Uno smartphone moderno ne ha 30 milioni di volte di più e ci consente di mettere un “mi piace” al minuto a foto di gattini.

Questo significa che i programmi dell’epoca dovevano essere assai compatti per poter sfruttare le poche risorse disponibili: esistevano linguaggi di programmazione, certo, ma erano molto vicini al linguaggio macchina, dato che lo sforzo di tradurli non poteva essere maggiore di quello che la macchina era in grado di sostenere.

In effetti – almeno in linea di principio – anche oggi sarebbe possible programmare anche il più potente dei supercalcolatori cambiando zeri in uno e viceversa, in un immenso oceano di memoria, ma in pratica questo andrebbe al di là delle capacità di qualsiasi essere umano e con il prezzo della memoria e dei circuiti integrati in caduta libera, i produttori di computer hanno scelto di mettere molto più hardware nelle macchine, pur di rendere il software più facile da scrivere e, soprattutto, manutenere.

“Come giovane sistemista, in Ibm mi affidavano i compiti più noiosi, tradizionalmente assegnati alle matricole, come per esempio l’installazione dell’allora diffusissimo Cics sulle nuove Cpu appena consegnate ai grandi clienti. Era questa un’operazione di routine che però occasionalmente poteva inciampare in qualche problema e quando noi ragazzi ci bloccavamo, solo dopo un paio di nottate di male parole ci era concesso appellarci al semidio del Cics, un essere umano (credo) capace di leggere le 600 pagine a 90 righe e 132 colonne del memory dump della macchina scoprendo che un B6 doveva invece essere un FF (ovviamente tutto in esadecimale, ça va sans dire…)

Parallelamente si è capito che il valore di qualsiasi computer cresceva molto più che linearmente all’aumentare del numero dei programmi disponibili. In altre parole, era nell’interesse di chi produceva computer far sì che scrivere software per i propri dispositivi fosse facile e veloce, perché più questo software sviluppato da terze parti era abbondante, maggiore era il prezzo a cui il computer poteva essere venduto.

Per semplificare il processo di programmazione, furono gradualmente aggiunti strati di software, per far sì che, per esempio, facendo clic sul tasto Stampa del programma applicativo, questa azione venisse decodificata da ciascuno strato e passata a quello immediatamente sottostante, fino a che un foglio di carta viene risucchiato, la forma delle lettere viene magnetizzata in attesa di attrarre la polvere di toner, che venisse poi fissata fino a ottenere la pagina da leggere.

L’altro problema di una programmazione diretta è che ogni programma andrebbe scritto per una specifica macchina: ogni minimo cambiamento (rimozione di una periferica, aggiunta di un banco di memoria) cambierebbe l’oceano di bit rendendo impossibile far funzionare sulla macchina B un programma scritto per la macchina A, ancorché quasi identica.

Il sistema operativo isola il programmatore applicativo da tutto ciò: la complessità del computer è ridotta a una (lunga) lista di funzioni che possono essere chiamate, cioè azioni che possono essere eseguite.

Quando il programma applicativo dice stampa in realtà chiama una funzione del sistema operativo che traduce questo ordine nell’insieme dei comandi comprensibili dalla stampante installata su quel particolare computer; se lo installassimo su un altro computer l’app non dovrebbe preoccuparsi di quale stampante sia collegata, perché la funzione stampa resta la stessa.

Lo scopo di un sistema operativo è dunque sia quella di rendere possibile lo sviluppo di software che funzioni su più di una macchina, che quello di renderne la manutenzione molto più semplice.

Che aspetto avrà il carOS?

Prima di tutto, sarà grande, queste le stime sulle dimensioni di alcuni sistemi operativi attualmente utilizzati, in scala temporale:

  • Unix 1.0 (1971): 100,000 righe di codice
  • Space Shuttle (1981): 400.000 righe di codice
  • Windows 3.1 (1992): 2,5M righe di codice
  • Windows XP (2001): 40M righe di codice
  • macOS 10.4 Tiger (2005): 85M righe di codice
  • DNA di un topo: 120M di coppie di basi

Non sarei sorpreso nell’apprendere che la codebase di Tesla sia di 300-400M di righe! Per scrivere un tale colossale programma è necessario avere una esperienza specifica che non consiste solo nella conoscenza dei linguaggi e degli strumenti ma, soprattutto, nella capacità di gestione necessaria per tenere insieme un immenso progetto a cui lavorano migliaia di programmatori.

Volkswagen ha recentemente annunciato piani per la formazione all’interno del proprio gruppo di una vera e propria Software Company che arriverà ad avere 10.000 dipendenti e un budget di 7 miliardi di euro.

Probabilmente la ragione è che Volkswagen si è resa conto che le auto hanno già a bordo molto software: componenti come l’Engine Management System, il cruscotto o l’Abs sono già fortemente digitalizzati e dunque programmati.

Secondo alcune stime l’auto moderna media ha a bordo già oggi circa 100M di righe di codice, ma la differenza rispetto ad avere un carOS sta nel fatto che la maggioranza di questo codice risiede su sotto-sistemi specifici dedicati a una sola funzione.

Con l’eccezione di Tesla, nessun produttore di auto ha una codebase unica che gestisca l’auto da un paraurti all’altro.

In secondo luogo, è molto probabile che sia basato su software Open Source: chi sviluppa sistemi operativi da più tempo come Apple o Google oggigiorno fonda i propri sforzi su una qualche versione di Unix/Linux; gli enormi mainframe della Ibm usano Linux e così fa anche Tesla.

Questo significa che è molto improbabile che il carOS venga sviluppato da un qualche kernel sviluppato da zero: insomma Detroit non contaminerà Silicon Valley ma sarà proprio il contrario, il che fa immediatamente pensare al problema dello scontro culturale in atto.

La mentalità dei geek software è quanto di più distante si possa immaginare da quella di un motorkopf tedesco. Vedremo se Volkswagen riuscirà nel suo intento: soldi e risorse sono necessarie ma attrarre e motivare i talenti di cui ci sarà bisogno è cosa ben diversa; non dimentichiamo che l’unica azienda che ce l’abbia fatta è stata fondata ed è gestita da un personaggio con nessuna esperienza automotive, ma una grande esperienza software.

Per esempio, Tesla ha iniziato a pubblicare come Open Source il proprio codice: sarebbero le aziende automotive, tradizionalmente inclini alla segretezza, disposte a fare altrettanto?

Chi potrebbe scrivere un carOS?

Ma lasciamo pure da parte la questione dello scontro di culture; la lista delle aziende in grado di affrontare questo problema investendo 7 miliardi è molto corta: oltre a Tesla (che lo ha già fatto) e Volkswagen (che ha detto che lo farà) c’è forse Toyota (che non ha detto nulla) e… non ne vengono in mentre altri.

Naturalmente Tesla potrebbe reinventarsi come sviluppatore software e concedere in licenza il proprio software ad altre case ma è molto improbabile che questo avvenga, almeno fino a che l’azienda continuerà a godere della fiducia illimitata che finora le hanno riservato i suoi investitori.

In effetti, Apple non ha mai concesso in licenza macOS o iOS a nessuno e anche oggi la perfetta integrazione tra hardware e software è uno dei fattori principali che la differenzia dalla concorrenza.

Potremmo invece scommettere sulla formazione di consorzi cui potrebbero partecipare i produttori automobilistici che non hanno le dimensioni di Volkswagen, il che renderebbe la creazione di un vero e proprio sistema operativo una necessità, poiché il suo rilascio sarebbe l’unico modo per garantire che tutti i membri del consorzio abbiano le stesse opportunità.

Il consorzio svilupperebbe il carOS e i singoli produttori scriverebbero i driver che permettono alle sue chiamate generiche di interfacciare il loro hardware proprietario; questo assicurerebbe anche che agli sviluppatori indipendenti sarebbe offerto un ambiente comune e stabile su cui sviluppare i propri prodotti.

Questo approccio risolverebbe in un colpo solo tutti i problemi di cultura e di capacità manageriali, dato che un tale consorzio vedrebbe sicuramente la partecipazione (e, probabilmente, la guida) di uno degli attuali colossi del software che, oltretutto, hanno grandi possibilità di investimenti e creerebbe un terreno ideale per una serie infinita di new entry che potrebbero affacciarsi sul mercato.

Oggi se si vuole lanciare uno smartphone non serve aspettare di diventare una Nokia o una Motorola: basta firmare una licenza Android e concentrarsi sull’hardware!

Tuttavia, la storia dimostra, al di là di ogni ragionevole dubbio, che chiunque scrive il sistema operativo si aggiudica anche la maggior quota di profitti: Apple, Google e Microsoft sono da anni tra le aziende di maggior valore al mondo e Tesla vale in Borsa più di qualunque altro produttore di automobili, nonostante le sue dimensioni assai contenute.

Quindi, una volta che avremo un carOS, potremo cominciare a pensare a quali applicazioni potremmo svilupparci sopra, ma questo sarà l’argomento di un altro articolo…

Condividi: