In queste ore sta facendo parlare molto un post pubblicato su Twitter da Julio Merino, ingegnere software in forze presso Snowflake, società specializzata nelle soluzioni per il cloud computing, ex Microsoft ed ex Google. Merino chiede sarcasticamente di ricordagli come sta evolvendo in panorama informatico. “Per favore, ricordatemi come stiamo andando avanti. In questo video, una macchina dell’anno ~2000 (600 MHz, 128 MB di RAM, hard disk arrugginito) con Windows NT 3.51. Si noti l’incredibile velocità di apertura delle applicazioni“.
Nel suo breve intervento, l’ingegnere mostra un filmato che mostra un sistema Windows NT 3.51 aprire istantaneamente il file manager, la finestra del terminale, la calcolatrice, Paint e così via. La macchina è estremamente reattiva e i programmi caricati sul sistema vengono eseguiti senza alcun tipo di latenza. Com’è possibile che oggi, anche con le macchine più prestanti, non avvenga la stessa cosa? È stata davvero evoluzione o si può parlare di involuzione?
Per gettare ulteriore benzina sul fuoco, Merino aggiunge: “per coloro che pensano che il confronto sia ingiusto, ecco Windows 2000 sulla stessa macchina a 600 MHz. (…) Si noti come la risposta veloce del sistema sia ancora esattamente la stessa e l’esperienza non sia stata ancora rovinata“.
Windows NT 3.51 confrontato con i sistemi moderni: perché era così veloce?
Windows NT è un sistema operativo sviluppato da Microsoft e introdotto per la prima volta nel 1993. È stato progettato come una piattaforma avanzata e robusta per i sistemi aziendali, offrendo caratteristiche di sicurezza, stabilità e scalabilità. Il successo di Windows NT ha avuto un impatto significativo sull’evoluzione dei sistemi operativi di Microsoft negli anni successivi.
La “famiglia NT” ha introdotto un’architettura a livelli che separava il kernel del sistema operativo dalle applicazioni e dai driver di dispositivo. Ha inoltre previsto il supporto per le configurazioni multiprocessore oltre a caratteristiche per la sicurezza che includevano un sistema di controllo degli accessi basato sui ruoli, autenticazione sicura, crittografia dei dati e protezione dei processi. Il successivo Windows 2000 fu il primo sistema operativo a portare l’eredità di Windows NT nelle mani di una più ampia platea di utenti, tra coloro che cercavano una piattaforma più stabile e affidabile rispetto all’offerta Windows 9x. Fu dallo sviluppo di quella stessa piattaforma che furono derivati sistemi come Windows XP, Windows Vista, Windows 7 nonché le varie versioni di Windows Server.
La base di Windows NT era notoriamente apprezzata. Il sistema operativo era leggero, efficiente e stabile, grazie all’ottimizzazione delle risorse hardware disponibili. Nel complesso, le dimensioni dei programmi erano molto più contenute rispetto ad oggi ma una calcolatrice è sempre una calcolatrice… Oggi come allora.
Applicazioni più pesanti, troppe dipendenze e processi in background
Le applicazioni sono diventate sempre più pesanti e complesse nel corso degli anni. Offrono una vasta gamma di funzionalità, grafica avanzata, effetti visivi, connettività di rete e integrazioni con altri servizi. Questo aumento della complessità del software richiede più tempo per caricare tutte le risorse e le dipendenze necessarie per l’esecuzione delle applicazioni.
I moderni sistemi operativi spesso avviano una serie di servizi e processi in background. Questi servizi forniscono funzionalità aggiuntive e supporto per le applicazioni, ma possono richiedere tempo e risorse. Ciò può influire significativamente sulla velocità di avvio delle applicazioni.
Le preoccupazioni per la sicurezza sono aumentate nel corso degli anni, e questo si riflette anche nella velocità di avvio delle applicazioni. Le applicazioni moderne devono spesso eseguire controlli di sicurezza molto più articolati, come la verifica dell’integrità del software, l’autenticazione degli utenti e il controllo degli accessi. Tutte verifiche che impattano sulla velocità di avvio delle applicazioni.
La cruda verità, purtroppo, è che pochissime cose sono ottimizzate per le prestazioni ai giorni nostri. Spesso gli sviluppatori iniziano con un framework applicativo “preconfezionato”, caricano dozzine di librerie con le rispettive dipendenze (sfruttate sì e no per il 5% del totale) e ci chiediamo perché le applicazioni siano così lente.
I primi sistemi della famiglia NT avevano funzionalità più ridotte all’osso e non c’erano gli effetti visivi avanzati che si trovano nelle applicazioni moderne. Con specifiche hardware più limitate, i computer di fine anni ’90 – inizio anni 2000 eseguivano un numero inferiore di processi in background rispetto ai moderni sistemi operativi. Ciò significa che c’erano meno attività di sistema che richiedevano risorse, lasciando più risorse disponibili per l’esecuzione dei programmi principali. E le applicazioni si caricavano in un lampo.
Programmatori della vecchia scuola: il contributo di Dave Cutler
Tra gli ingegneri software più conosciuti, soprattutto per ciò che riguarda l’architettura dei sistemi operativi c’è senza dubbio Dave Cutler. Unitosi a Microsoft nel 1988, dopo una lunga carriera presso Digital Equipment Corporation (DEC), dove era coinvolto nello sviluppo dei sistemi operativi per i mainframe, Cutler è riconosciuto come il padre di Windows NT.
In Microsoft, Cutler fu incaricato di guidare un team per creare un nuovo sistema operativo avanzato e scalabile che potesse essere eseguito su una varietà di piattaforme, sia desktop che server. Il risultato degli sforzi, suoi e del suo team, fu proprio Windows NT: il sistema operativo era caratterizzato da un’architettura a microkernel, una struttura modulare e una maggiore affidabilità e stabilità rispetto alle versioni precedenti di Windows.
Cutler era noto per la sua ossessione per le prestazioni del sistema operativo. Era determinato a ottimizzare e migliorare le prestazioni di Windows NT, rendendolo efficiente e veloce. Lavorava a stretto contatto con il team di sviluppo, ottimizzando il codice, migliorando gli algoritmi e cercando di ridurre al minimo i tempi di risposta del sistema.
L’ossessione di Cutler per le prestazioni era guidata dalla sua convinzione che un sistema operativo veloce e reattivo potesse assicurare una migliore esperienza per gli utenti e avere un impatto significativo sull’adozione del sistema operativo da parte dei clienti e delle aziende.
Tornando alla “provocazione” di Merino, qualcosa si è certamente “rotto” nel corso degli anni. Se non altro per quanto riguarda la visione delle “priorità” al fine dell’ottimizzazione dell’esperienza d’uso.
L’immagine in apertura è tratta dal post di J.Merino su Twitter.