Perché un software approssimativo ti fa sentire come se avessi bisogno di nuovo hardware

Perché un software approssimativo ti fa sentire come se avessi bisogno di nuovo hardware

L’esperienza d’uso dei computer moderni può spesso essere frustrantemente paradossale. Potresti investire ingenti somme in componenti ad alte prestazioni – un processore multi-core avanzato, una scheda grafica all’avanguardia e un’ampia RAM – eppure ritrovarti ad aspettare per semplici operazioni come aprire cartelle o effettuare ricerche.

Spesso il problema di fondo non è l’hardware in sé. Anche i sistemi di fascia media sono più che in grado di gestire le operazioni di routine con relativa facilità. Il vero colpevole risiede nel software. Nel corso degli anni, il software è diventato macchinoso e inefficiente, trascurando di ottimizzare l’utilizzo delle risorse nonostante i significativi progressi nella potenza di calcolo e nella memoria. Invece di sfruttare questa potenza in modo efficiente, il software moderno si comporta spesso come se avesse risorse infinite a disposizione, con conseguenti prestazioni deludenti.

La discrepanza tra prestazioni hardware e software

L’hardware dei computer di oggi rappresenta un notevole passo avanti rispetto a quello disponibile solo pochi decenni fa. Le CPU attuali sono progettate in modo complesso, con più core e ampie cache che ottimizzano le prestazioni in tempo reale. Sorprendentemente, gli smartphone di oggi possiedono capacità di calcolo superiori a quelle dei supercomputer che occupavano intere stanze negli anni ’80.

Le unità di elaborazione grafica (GPU) hanno fatto progressi ancora più significativi. Prendiamo ad esempio la serie RTX di NVIDIA. Queste non si concentrano solo sulla grafica, ma si sono evolute in motori di elaborazione parallela che gestiscono attività legate all’intelligenza artificiale e al machine learning con core specializzati: i Tensor Core per l’efficienza nei calcoli e gli RT Core per il ray tracing in tempo reale, raggiungendo trilioni di calcoli al secondo.

Con prestazioni così robuste a disposizione, ci si aspetterebbe un’esperienza utente fluida durante l’utilizzo del computer. Le applicazioni dovrebbero aprirsi rapidamente, le interfacce dovrebbero rimanere fluide durante il multitasking e il passaggio da un’attività all’altra dovrebbe essere fluido. Purtroppo, spesso questo non è vero.

Questo scenario contrasta nettamente con lo sviluppo software delle epoche precedenti. Durante la creazione di sistemi operativi come Windows NT 3.51, gli sviluppatori gestivano meticolosamente la memoria e la potenza di elaborazione. Realizzarono sistemi adatti ad ambienti con una quantità di RAM significativamente inferiore a quella consumata oggi da una singola scheda di un browser moderno, imponendo un livello di efficienza che sembra quasi antiquato nel paradigma di sviluppo odierno:

Esplorazione dell’esperienza utente di Windows

Gli esempi più evidenti di rallentamento delle prestazioni si riscontrano nei sistemi operativi moderni, in particolare Windows. I frequenti aggiornamenti delle funzionalità di Microsoft non migliorano in modo significativo la reattività dell’interfaccia principale di Windows 10 e 11, causando una diffusa frustrazione tra gli utenti. Tra i problemi più comuni si annoverano i menu contestuali che rallentano dopo aver cliccato con il pulsante destro del mouse o le finestre di Esplora file che presentano un rendering sfalsato.

In particolare, un esperimento condotto dallo sviluppatore Julio Merino un paio di anni fa ha evidenziato questi problemi. Ha confrontato i vecchi sistemi operativi che funzionavano su hardware minimo con i moderni Windows su macchine ad alte prestazioni, rivelando quanto fossero evidenti le differenze in termini di reattività.

In un test, un computer del 2000, dotato di 128 MB di RAM e un processore da 600 MHz, ha avviato istantaneamente applicazioni con Windows NT 3.51. Al contrario, un computer considerevolmente più recente e potente, un Mac Pro a 6 core con 32 GB di RAM, ha mostrato ritardi, poiché gli elementi dell’interfaccia utente venivano renderizzati a blocchi, evidenziando la discrepanza nelle prestazioni:

Un altro esempio eclatante, condiviso dallo sviluppatore Theo Browne, mette in luce questo problema. Ha descritto uno scenario in cui l’apertura di una cartella contenente registrazioni in streaming – un’operazione semplice – richiedeva ben otto minuti, con tanto di crash di Esplora risorse durante un clic con il pulsante destro del mouse. Il problema era un ritardo causato dall’analisi automatica dei metadati di ogni file da parte di Windows, che comprometteva gravemente le prestazioni. La soluzione consisteva nel disabilitare il rilevamento automatico del tipo di cartella, a dimostrazione della facilità con cui gli utenti possono imbattersi in soluzioni a problemi intrinseci del sistema.

Anche con un’installazione pulita, Windows è spesso impantanato in app preinstallate, sistemi di telemetria e processi in background che consumano molte risorse. Questo disordine causa gravi ritardi nell’esecuzione delle attività quotidiane, aggravati dal fatto che molti utenti si affidano a “script di debloat” di terze parti. Tali script sottolineano l’entità dell’insoddisfazione, poiché gli utenti descrivono spesso Windows come “quasi inutilizzabile” finché non rimuovono gli extra indesiderati.

Anche la funzione di ricerca incarna queste frustrazioni. Quando si cerca un file recente, si potrebbe scoprire che Windows impiega un tempo insolitamente lungo per visualizzare i risultati, spesso offrendo un mix di ricerche web irrilevanti. Molti si ritrovano a desiderare funzionalità di ricerca istantanea simili a quelle di uno strumento gratuito come “Tutto”, che individua rapidamente i file durante la digitazione, in netto contrasto con la lenta funzionalità di ricerca integrata di una delle più grandi aziende tecnologiche.

Un ritorno agli standard qualitativi?

Si sta diffondendo la convinzione che il principio fondamentale di fornire software di alta qualità sia passato in secondo piano rispetto alla rapidità. Chi ha memoria del passato ricorda un’epoca in cui il software, in particolare i sistemi operativi e le principali applicazioni, veniva sottoposto a rigorosi test interni prima del rilascio, raggiungendo spesso uno standard qualitativo “gold”.Questo processo garantiva stabilità, completezza e prontezza al lancio.

Considerando sistemi come Windows NT 4.0 o Windows 2000, ci si aspettava che queste versioni presentassero una stabilità di livello aziendale grazie a intensi cicli di controllo qualità, inclusa una pratica nota come “dogfooding”, in cui persino i dipendenti Microsoft erano tenuti a utilizzare il software autonomamente. Gli aggiornamenti erano tradizionalmente service pack ben strutturati, a differenza dell’attuale flusso incessante di patch rapide.

Il modello attuale, spesso definito ” Windows as a Service “, appare spesso caotico. Il Programma Windows Insider, invece di essere un’estensione del controllo qualità, sembra esternalizzare i test a milioni di partecipanti non retribuiti. Gli utenti si trovano a dover affrontare frequenti lamentele su bug, funzionalità non funzionanti e cali delle prestazioni complessive con le release principali: un ciclo ripetitivo di prodotti non ancora rilasciati e incompleti, a cui vengono applicate patch solo dopo le proteste del pubblico. Questa pratica non si limita ai sistemi operativi; molti giochi mostrano questa preoccupante tendenza, esemplificata dal disastroso lancio di Cyberpunk 2077.

Questo approccio “pubblica ora, correggi dopo” ha portato molti utenti a mettere in discussione la filosofia di sviluppo dei principali studi. La decisione di posticipare GTA 6 potrebbe riflettere la consapevolezza di Rockstar delle potenziali insidie ​​di pubblicazioni affrettate.

La stessa mentalità del “mai veramente finito” è evidente nella lenta revisione dei sistemi legacy come il Pannello di controllo a favore della nuova app Impostazioni, un processo iniziato nel 2012 con Windows 8, ma ancora in corso tredici anni dopo.

Sfide nelle prestazioni web

I problemi di prestazioni dei software moderni non si limitano ai sistemi operativi desktop, ma si manifestano anche nelle piattaforme web. Nonostante i miglioramenti nella connettività e nelle funzionalità dei dispositivi, gli utenti riscontrano spesso esperienze web eccessivamente lente e con un elevato consumo di risorse. I siti web spesso si caricano lentamente e possono risultare meno reattivi rispetto ai loro predecessori.

Questo ritardo deriva dalla crescente complessità delle applicazioni web e dall’uso diffuso di framework JavaScript complessi. Sebbene strumenti come React e Next.js migliorino significativamente le funzionalità, la loro applicazione su siti web più semplici può causare dimensioni del codice eccessive e tempi di caricamento rallentati. Ironicamente, questo spesso deriva da preferenze di sviluppo dettate dalla praticità piuttosto che da reali esigenze di progetto.

Anche le applicazioni create con tecnologie web per l’uso desktop, come strumenti basati su Electron come Slack, spesso soffrono di “gonfiore”.Ogni applicazione integra una versione di un browser web, accumulando così un sovraccarico che rallenta i tempi di avvio e aumenta il consumo di risorse.

Tuttavia, esistono ancora esempi eccezionali che dimostrano come le prestazioni possano prosperare con diverse priorità di sviluppo. In particolare, il sito web di McMaster-Carr ha attirato l’attenzione per i suoi rapidi tempi di caricamento, in netto contrasto con i siti moderni e visivamente accattivanti realizzati con tecnologie più recenti.

McMaster-Carr ha raggiunto questo obiettivo impiegando tecniche fondamentali come il rendering lato server robusto, strategie di prefetching aggressive, approcci di caching multilivello e un’ottimizzazione disciplinata delle risorse. Il loro impegno per la velocità e l’usabilità supera il fascino dei framework moderni, dimostrando come la necessità possa ancora dettare la progettazione.

L’opzione Linux: un mix di opzioni

Alla ricerca di un’esperienza di elaborazione più fluida, molti utenti prendono in considerazione l’idea di passare a sistemi operativi alternativi come Linux. Numerose distribuzioni, in particolare quelle che utilizzano ambienti desktop leggeri come XFCE o LXQt, possono migliorare significativamente le prestazioni su hardware meno recente, rendendo i sistemi più reattivi grazie a un overhead inferiore rispetto a soluzioni più complete come Windows.

Tuttavia, il passaggio a Linux pone problemi di compatibilità per molti utenti, in particolare per quanto riguarda gli strumenti professionali più diffusi. Molte applicazioni essenziali come Adobe Creative Cloud e Microsoft Office non dispongono di versioni native per Linux, il che crea ostacoli che spesso portano a brevi incursioni in Linux prima che gli utenti tornino a Windows.

Motivi alla base del gonfiore e della lentezza del software

Con tutto questo hardware avanzato e le strategie dimostrabili per ottimizzare le prestazioni del software e del web, viene da chiedersi perché le applicazioni contemporanee sembrino spesso così lente e pesanti. La risposta può essere complessa, ma emergono diversi fattori chiave:

  1. Il modello “Consumatore come Beta Tester”: le principali aziende di software spesso trasferiscono i loro sforzi di garanzia della qualità da approfondite revisioni interne a beta test pubblici, basandosi sul feedback degli utenti per finalizzare le funzionalità in ambienti live. Questo segna un netto cambiamento rispetto a quando le release “Gold”, accuratamente controllate, erano lo standard.
  2. Concentrarsi sulla velocità piuttosto che sulla qualità: le attuali pressioni legate al rilascio rapido di funzionalità spesso danno priorità alla rapidità rispetto a un’attenta lavorazione, consentendo a framework sovradimensionati di prevalere anziché impegnarsi in un’ottimizzazione dettagliata delle prestazioni.
  3. Astrazione eccessiva: l’uso di più livelli di astrazione, pur semplificando lo sviluppo, può comportare un sovraccarico di prestazioni non necessario se non viene ottimizzato attentamente.
  4. Abilità e attenzione degli sviluppatori: le competenze di ottimizzazione, come la gestione della memoria e gli algoritmi efficienti, sono diventate meno comuni tra gli sviluppatori rispetto alle tecniche di integrazione e ai framework più recenti, che sono più facili da apprendere.
  5. Modelli di business: molte soluzioni software odierne incorporano funzionalità progettate per la pubblicità, la telemetria e il coinvolgimento degli utenti, aggiungendo una complessità ingiustificata che distoglie l’attenzione dalle funzionalità principali.
  6. Crescente complessità: le crescenti esigenze di sicurezza, connettività Internet e gestione di grafica avanzata creano sfide intrinseche e problemi di scalabilità.

Considerazioni finali: l’hardware non è sempre il colpevole

La prossima volta che il tuo computer sembra lento anche durante le attività di routine, fermati un attimo prima di prendere in considerazione un aggiornamento hardware. Il tuo sistema attuale probabilmente possiede funzionalità che, sebbene impressionanti rispetto agli standard storici, sono appesantite da software inefficienti e sovraccarichi.

L’urgente necessità è che prestazioni, stabilità e qualità tornino ad essere prioritarie nello sviluppo software.È fondamentale che la cultura dello sviluppo si orienti verso il perfezionamento delle prestazioni e dell’esperienza utente, rispettando i vincoli di tempo e risorse degli utenti. Per fornire un software che soddisfi realmente le esigenze degli utenti, è necessario tornare a concentrarsi sulla fornitura di soluzioni robuste ed efficienti.

Finché non si verificherà un cambiamento del genere, gli utenti continueranno a combattere contro prestazioni lente anche sui computer più potenti, il che li porterà spesso a credere che gli aggiornamenti siano l’unica soluzione.

Fonte e immagini

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *