Il vero problema dell’hardware è il software

La fine della legge di Moore ci porterà a scrivere codice più lineare ed efficiente

Era il 1997 quando Nathan Myhrvold, che è stato chief technology officer in Microsoft, espose in una conferenza le sue Quattro Leggi del Software, così articolate:

  1. Il software è come un gas – si espande per riempire il contenitore

  2. Il software cresce fino a quando non è limitato dalla legge di Moore

  3. La crescita del software rende possibile la legge di Moore – le persone comprano nuovo hardware perché il software lo richiede

  4. Il software è limitato solo dalle ambizioni e aspettative umane.

Oggi tuttavia con le difficoltà riscontrate dall’industria dei semiconduttori nel tenere il passo con la legge di Moore, è più che mai necessario concentrare gli sforzi al fine di scrivere codice più efficiente e più pulito.

D’altra parte, proprio il fatto che il software si espanda come un gas - tendendo a saturare tutte le risorse messe a disposizione dell’hardware - ha portato negli anni a un effetto collaterale paradossale, e cioè che oggi non è più l’hardware a cercare di inseguire le esigenze del software, ma è il software a cercare di inseguire l’hardware. Questo è avvenuto perché per anni abbiamo scritto software poco efficiente, rassicurati dalla consapevolezza che, dopotutto, con la rapida crescita delle prestazioni computazionali consentita dalla legge di Moore, la scarsa qualità del software sarebbe stata trascurabile e sarebbe passata inosservata.

Così le app e i programmi hanno aggiunto per anni funzioni su funzioni, arrivando oggi a un punto in cui il codice è a dir poco caotico, obsoleto e disordinato e di conseguenza per nulla efficiente. Per rendere l’idea con una metafora, è come se il software fosse un armadio: più si aggiungono vestiti, più l’armadio diventa ricco di opzioni tra cui scegliere, ma se si continua ad aggiungere vestiti su vestiti prima o poi si arriverà a un punto in cui per trovare il capo prescelto si dovrà perdere molto tempo a cercarlo.

Non solo, quel che è peggio è che spesso il software è appesantito da processi che tracciano l’utente e raccolgono dati, o da applicazioni inutili: è emblematica a questo proposito la quantità di bloatware presente su Windows, che non fa altro che rallentare il sistema e consumare risorse con processi inutili di cui la gran parte degli utenti non conosce nemmeno l’esistenza. Tuttavia, questi stessi utenti si rendono conto del fatto che i loro pc sono più caldi, consumano più batteria e sono rallentati, soprattutto se hanno qualche anno sulle spalle.

Così, oggi ci troviamo in una situazione paradossale, in cui l’hardware nonostante le difficoltà ha raggiunto prestazioni elevatissime, ma buona parte del software è scritta così male che non riesce a sfruttarne le potenzialità. Ecco allora che ci troviamo con app e programmi che sprecano un sacco di risorse, facendo lavorare inutilmente CPU, GPU, RAM, disco, etc. e che di conseguenza sottraggono risorse ad altri programmi, oltre a mettere sotto stress i dispositivi scaricando le batterie, producendo calore, rallentando le operazioni, e peggiorando nel complesso l’esperienza dell’utente.

Pensiamo, solo per fare un esempio, alla suite Adobe: Adobe negli anni ha rivisto i suoi programmi aggiungendo funzioni su funzioni, sicché questi per girare con prestazioni soddisfacenti richiedono hardware con prestazioni relativamente elevate, e girano sullo stesso hardware con prestazioni peggiori rispetto ad altri applicativi meglio ottimizzati.

Ci rendiamo dunque conto che, se escludiamo i giochi, molte app potrebbero girare con prestazioni assai superiori sullo stesso hardware: non si tratta solo di scrivere codice più lineare ed efficiente, ma anche di scrivere codice ottimizzato per piattaforme specifiche. Del resto, il rallentamento della legge di Moore ha portato le aziende che progettano chip a integrare sempre più moduli e componenti in grado di accelerare operazioni specifiche e di garantire prestazioni di gran lunga superiori in queste operazioni rispetto a quelle che si potrebbero ottenere con un processore generico. Stiamo parlando di acceleratori per il machine learning, per il calcolo 3D, per il ray tracing, di encoder e decoder video e molti altri. Ma questi acceleratori sarebbero inutili senza un adeguato supporto software, e purtroppo ancora oggi molte app e programmi non sono ottimizzati per sfruttare appieno queste potenzialità, continuando ad appoggiarsi quasi esclusivamente a CPU e GPU.

Eppure, è chiaro come l’industria si stia spostando sempre più verso questa direzione: l’esempio classico è quello delle console, che, pur avendo un hardware nettamente inferiore ad un pc di fascia alta, consentono un’esecuzione anche dei giochi AAA più impegnativi con prestazioni più che soddisfacenti e con un consumo energetico nettamente inferiore a quello di un pc da gaming. E se ci spostiamo nel settore professionale, ci accorgiamo che qui più che in ogni altro ambito è il software a guidare la scelta dell’hardware, proprio perché i pro sanno bene quanto sia importante la sinergia tra hardware e software.

Ed è proprio la sinergia tra hardware e software l’obiettivo a cui dobbiamo puntare: se come affermava Nathan Myhrvold “il software cresce fino a quando non è limitato dalla legge di Moore” e “il software è limitato solo dalle ambizioni e aspettative umane”, allora per superare il limite imposto dalla fine della legge di Moore e per non limitare le nostre ambizioni l’unica strada è quella di scrivere un software lineare ed efficiente, cucito su misura per il nostro hardware.

Indietro
Indietro

Il progetto di Apple di realizzare in casa i modem dei nuovi iPhone è in crisi, ma forse non tutto è perduto

Avanti
Avanti

Il personal computer è morto, lunga vita al personal computer