L’irragionevole evoluzione del software…

Le leggi del mercato e del marketing vorrebbero spingerci a cambiare ogni anno i nostri dispositivi elettronici a seguito dell’uscita di nuovi processori e di nuovi modelli sempre più performanti. Sia che parliamo di smartphone, computer o televisori, il discorso è sempre riconducibile ad un unico componente: il cuore del dispositivo, ovvero il processore. Ad ogni nuova versione, viene potenziato e reso meno “energivoro”, garantendoci dispositivi più prestazionali.

Ma è realmente così? Riusciamo veramente ad apprezzare nella quotidianità ed in maniera concreta questo aumento di performance?

A prima vista, obbiettivamente, sembrerebbe di no. È sufficiente ascoltare l’ennesima recensione dell’ultimo modello di dispositivo, con l’ultimissimo modello di processore uscito, per sentire il blogger lamentarsi di rallentamenti e lag.

Partiamo da un semplice, ma alquanto esemplificativo, concetto. Nel 1969 l’uomo ha messo piede sulla luna affidandosi ai calcoli ed ai programmi inseriti in un computer con velocità clock di 2Mhz, 2Kwords di ram ed una trentina di Kwords di rom. Oggi, semplicemente per avviare il sistema operativo del nostro computer, abbiamo bisogno di un processore dualcore e almeno 4 Gb di ram e non va certo meglio con gli smartphone. Forse, in corso d’opera, qualcosa è andato storto?

Ricordo benissimo, e voi stessi potete andare a cercare una delle tantissime recensioni su Youtube, quando nel 2010 acquistai il mio HTC Desire HD, uno smartphone single core a 1GHz con appena 768 MB di ram e 1,5 GB di storage. Android era in versione 2.3 e la sua interfaccia grafica, la Sense, era formidabile e molto completa. Le applicazioni erano pressoché quelle di oggi, sicuramente con meno fronzoli grafici, ma funzionali allo stesso modo se non meglio, grazie agli aggregatori social che raggruppavano facebook, twitter ecc…

interfaccia Sense dell’HTC Desire HD

Un altro esempio, rimasto impresso nella mia mente, ci viene da un’autorevole rivista del settore informatico: PC Professionale. Era fine 2005 quando leggevo la recensione dei test effettuati sull’ultima versione beta disponibile di Windows Vista ed il giornalista evidenziava come vi fossero evidenti problemi di lentezza, ma che al momento dell’uscita in commercio, che sarebbe avvenuta oltre 12 mesi dal quale momento, la potenza dell’hardware avrebbe sopperito a questi problemi.

Windows Vista

Non vi nascondo che quest’ultima esternazione mi lasciò di sasso: quindi si sviluppa un software non per farlo funzionare bene al momento, ma basandosi sulle performance che avrà l’hardware al momento della sua commercializzazione? Sinceramente lo trovo assurdo.

Approfondendo il discorso, però, emerge un altro fattore determinante in questa faccenda: l’aspetto commerciale.

Il software richiede una grande quantità di tempo-uomo per essere scritto e spesso i guadagni non sono commisurati all’impegno produttivo. Per questo motivo viene tralasciato uno dei fattori chiave della programmazione: l’ottimizzazione del codice.

Per spiegare brevemente e semplicemente di cosa si tratta dobbiamo per prima cosa essere consapevoli che, in informatica, non esiste un solo modo di raggiungere un obbiettivo, ma uno stesso programma può essere scritto in mille modi diversi e svolgere le stesse identiche funzioni. Ovviamente tra tutte le possibilità offerte ci sarà:

  • il modo più semplice, che richiede meno tempo di lavoro e sviluppo, ma meno efficiente;
  • il modo più complicato, che richiede molto più tempo di sviluppo, ma molto più efficiente.

Purtroppo, anche se i programmatori sono affascinati dal codice scritto in maniera ottimizzata, vedendo la cosa come una sfida, per ragioni di marketing e di tempistiche commerciali, non hanno quasi mai il tempo di scrivere codice ottimizzato, ma devono rendere il programma funzionante nel più breve tempo possibile, a scapito di prestazioni e qualità. Si spiega spesso in questo modo il motivo per cui nuove versioni richiedono hardware più potenti e performanti.

Scrivere programmi in questo modo, però, ha due effetti negativi sul codice:

  • la creazione di bug, spesso critici e che devono essere corretti attraverso patch di sicurezza;
  • il rilascio di aggiornamenti che ottimizzano nel tempo il codice.

Un importante segnale di questo modo di lavorare ci viene da Windows 10. Rilasciato ben 5 anni fa, i softwaristi della Microsoft lo hanno costantemente migliorato, introducendo nuove funzioni, e corretto per renderlo più sicuro ed efficiente. L’ultima importante ottimizzazione avverrà con il prossimo aggiornamento, che vedrà il sistema operativo della casa di Redmond essere più performante sui computer ancora dotati di soli hard disk meccanici, grazie ad un nuovo sistema di indicizzazione che sfrutterà le pause di inattività del pc.

Il problema dell’ottimizzazione del codice è in qualche modo riconducibile anche al fenomeno dell’obsolescenza programmata, per la quale la Apple incappò in un terribile scandalo alcuni anni fa realizzando nuove versioni dei propri Os molto più pesanti delle precedenti e permettendo a dispositivi datati di effettuare l’aggiornamento, diventando pressoché inutilizzabili per quanto erano lenti.

Chi non è affetto da questo genere di problematiche sono i programmatori open-source. Chi programma per se stesso o per pura passione, immerso in una comunità collaborativa, tenderà sempre a creare programmi ottimizzati e performanti badando magari meno all’aspetto estetico e grafico, prerogativa dei software commerciali, ma a totale vantaggio della sostanza. Grazie a queste persone possiamo ancora dare vita, oggi, a vecchi computer grazie a distribuzioni linux come MINT, che personalmente utilizzo su un vecchio netbook con Atom N270 con discreta soddisfazione.

Speriamo che, in un prossimo futuro, la filosofia di sviluppo del software non sia solo legata alla produttività, ma che un occhio di riguardo sia dato all’efficienza in modo da godere realmente dell’incremento prestazionale del nuovo hardware.

Visite totali: 1299
Visite Oggi: 1
Letture: 630251