La bugia dell’astrazione facile
Viviamo in un'epoca in cui programmare sembra più facile che mai. Bastano poche righe, una libreria giusta, un framework moderno e... tutto funziona. Ma funziona davvero? E soprattutto: capiamo perché funziona?
L'illusione della semplicità
Molti strumenti moderni promettono di "astrarre la complessità". Ti dicono che non hai bisogno di conoscere i registri, i bit, il silicio. Devi solo "chiamare una funzione". E in apparenza è tutto semplice.
Ma questa semplicità è un'illusione.
Dietro a quelle poche righe si nascondono decine o centinaia di livelli di codice che non conosci, che non controlli, e che spesso nemmeno gli autori comprendono a fondo.
Il codice astratto è fragile
Quando tutto va bene, il codice astratto sembra una magia. Quando qualcosa va storto, è un incubo:
Errori difficili da isolare
Stack trace incomprensibili
Funzioni che si comportano in modi imprevisti
Bug che arrivano da librerie esterne mai toccate
L’astrazione promette velocità, ma spesso nasconde la realtà. E nascondere la realtà in informatica è pericoloso.
La realtà nascosta
Molto codice è chiuso, offuscato, nascosto non per proteggerne il valore, ma per coprire la sua fragilità. Non mostrare il codice significa evitare che altri vedano:
Bug
Strutture confuse
Architetture caotiche
Il risultato? Codice che funziona, ma che nessuno capisce più.
Il valore della trasparenza
Programmare senza astrazioni non è una punizione. È un dono.
Usare direttamente istruzioni come sbi 5,5 ti mostra cosa succede davvero:
Stai scrivendo 1 in un bit di un registro.
Quel registro controlla un pin fisico.
Il pin accende un LED.
E non serve nemmeno sapere che 5 significa PORTB, basta sapere che è uno dei tanti registri con 8 buchi, e tu stai mandando corrente al buco 5. Fine.
Anche Android, iPhone e Windows?
Sì: anche i grandi sistemi operativi moderni vivono di astrazioni pesanti. Ecco cosa succede:
Android & iOS
Usano librerie potenti e SDK che sembrano facili.
Ma sotto il cofano ci sono decine di strati: runtime, firmware, driver, HAL...
Anche accendere un semplice LED esterno è difficile o impossibile senza rooting o codice nativo complesso.
Windows
Permette sviluppo comodo (.NET, GUI, ecc).
Ma tutto ciò che riguarda basso livello (driver, accesso diretto all’hardware) è opaco, difficile o riservato a esperti.
Confronto diretto:
| Sistema | Forte Astrazione? | Accesso ai registri/silicio? | Comprensione reale facile? |
|---|---|---|---|
| Android | ✅ Sì | ❌ No | ❌ No |
| iOS | ✅ Sì | ❌ No | ❌ No |
| Windows | ✅ Sì | ❌ No | ❌ No |
Chi usa questi sistemi, spesso programma solo tramite librerie. Se qualcosa non va, non può "vedere dentro".
Conclusione
L'astrazione è utile, ma non deve mai sostituire la comprensione.
Se impari prima come funziona davvero, potrai usare le astrazioni con intelligenza. Se invece parti solo da scorciatoie, stai costruendo sulla sabbia.
Questo blog nasce per ricordarlo. E per mostrare che anche la gente comune — non solo ingegneri — può capire. Basta spiegare bene, e non avere paura di partire dai bit.
Comments
Post a Comment