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:

SistemaForte 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

Popular posts from this blog

Compile mks dlc32 using Visual Studio Code and Platform.io

MAKERBASE MKS DLC32 $ESP Configurations AP STA Costycnc