
Concetti di Informatica | Astrazione in Informatica
Spesso, nel linguaggio comune, sentiamo parlare di "astrazione" in contrasto con l'aggettivo "concreto". Ma cosa significa realmente "astrazione" quando parliamo di computer, algoritmi e programmi? E perché è così importante?
Per comprendere l'astrazione in informatica è utile risalire alla sua origine etimologica. Il termine deriva dal verbo latino abs-trahere, che significa letteralmente "tirar fuori da".
Questa origine ci dà già un indizio potente: l'astrazione non è un allontanamento dalla realtà, ma un processo attivo di estrazione di ciò che è essenziale.
In ambito informatico (e non solo), l'astrazione è la descrizione semplificata di un sistema o di un oggetto in cui poniamo l'attenzione su alcuni aspetti e dettagli specifici, mentre ne trascuriamo altri.
Anche se può sembrare un concetto distante dalla realtà, l'astrazione è qualcosa che applichiamo continuamente, spesso senza accorgercene.
Pensiamo all'esempio dell'automobile, un sistema complesso, composto da carrozzeria, meccanica, elettronica, pneumatici, ecc...
Se andiamo da un meccanico per un problema ai freni, lui non vedrà l'auto come un'unica enità indifferenziata ma si concentrerà sulla parte meccanica: motore, trasmissione, ruote (intese come parte meccanica, non pneumatici), trascurando aspetti come la carrozzeria o gli interni che non sono rilevanti per il suo lavoro.
Di fatto sta semplificando la descrizione dell'automobile focalizzandosi solo sugli aspetti che gli interessano.
Allo stesso modo un gommista si concentrerà esclusivamente sulle ruote, i cerchi, le sospensioni, ignorando il motore o l'elettronica.
Questo processo di "focalizzazione" su ciò che è pertinente, ignorando il resto, è l'essenza dell'astrazione.
Il discorso è del tutto analogo nello sviluppo software.
Quando progettiamo un'applicazione, non iniziamo immediatamente a scrivere codice riga per riga ma utilizziamo l'astrazione per descrivere il sistema software che dobbiamo realizzare a un livello più alto.
Inizialmente ci concentriamo sulla parte funzionale: cosa vogliamo che l'applicazione faccia. Solo in un secondo momento, una volta definita la struttura e le funzionalità generali, scendiamo a dettagliare i vari aspetti implementativi.
Questo approccio ci consente di creare un modello della nostra applicazione.
Creiamo una rappresentazione ad alto livello del software, definendone le funzionalità e i parametri principali e definiamo anche le modalità di validazione di questo modello.
L'astrazione è uno strumento potente essenzialmente per due motivi fondamentali:
-
Raggiungere la Generalizzazione: quando sviluppiamo un algoritmo per risolvere un problema, spesso partiamo da un caso pratico e specifico. Tuttavia il nostro obiettivo é di creare una strategia risolutiva (l'algoritmo) che sia applicabile a tutta una classe di problemi con una struttura simile. Pensiamo alla risoluzione di un'equazione di secondo grado. Chi ha sviluppato la formula risolutiva (quella con il "delta") sarà partito da un'equazione specifica, con coefficienti numerici concreti. Ma in seguito ha generalizzato, ha astratto da quel caso particolare. Ha sostituito i valori specifici con simboli generici (A, B, C) che possono assumere qualsiasi valore. Il metodo risolutivo trovato non si riferisce a una specifica equazione, ma ad una equazione più generale.
-
Facilitare la Rappresentazione: l'astrazione ci fornisce gli strumenti per rappresentare sistemi complessi in modo comprensibile e gestibile. Attraverso schemi, diagrammi e tabelle possiamo avere una visione d'insieme del software che stiamo sviluppando. Se stiamo lavorando su un'applicazione per l'e-commerce, ad alto livello possiamo astrarre la sua struttura in componenti principali: una per la gestione degli utenti, una per il catalogo prodotti, una per la gestione degli ordini. Questi schemi di alto livello non hanno il dettaglio del codice finale, ma sono più sintetici e ci permettono di capire le relazioni e l'organizzazione generale prima di scendere nei dettagli dell'implementazione.
In sintesi, l'astrazione in ambito informatico è la controparte della modellazione analitica che troviamo in altre discipline scientifiche come la fisica o le scienze naturali.
Tutte queste aree, in quanto scienze, condividono l'approccio di creare modelli semplificati della realtà per poterla studiare e manipolare in modo efficace.
Comprendere e applicare l'astrazione è quindi un passo fondamentale per ogni informatico, perché ci permette di gestire la complessità intrinseca dei sistemi software moderni, creare soluzioni riutilizzabili e comunicare efficacemente la struttura dei nostri progetti.



