Cos’è un’astrazione in informatica e perché è necessaria nella programmazione?

Ho scritto sull'astrazione a Mark Miller'risposta a Che cos'è l'astrazione? Non penso che sia una necessità in tutti i casi, ma qualcosa che è bello avere. Diventa una necessità quando i sistemi diventano complessi. Possiamo tenere in testa solo tante idee alla volta, e possiamo gestire solo una certa complessità nelle idee. Un modo in cui gestiamo la complessità è quello di "spezzettare" le idee, suddividendole in concetti, in modo da poterne parlare in termini di se stessi, piuttosto che in termini dei loro componenti di supporto per tutto il tempo. È per noi, non per il computer.

Alcuni progettisti di linguaggi hanno cercato di aggiungere più potere all'astrazione permettendo non solo l'astrazione lessicale, dove si possono usare i nomi per significare qualcosa di significativo in un modello operativo, ma anche l'astrazione semantica, dove si può cambiare ciò che i simboli lessicali fanno nelle espressioni, non solo su quali tipi lavoreranno, ma anche il loro comportamento operativo, come i risultati che producono, e quando. Questo permette di usarli in nuovi modi che, se progettati attentamente, possono "alzare il livello della discussione" per parlare di un modello operativo che usa termini che i partecipanti che osservano e lavorano con esso possono capire più facilmente, allontanandosi dagli operatori di livello inferiore che supportano il modello, ma che oscurerebbero la potenziale discussione che si potrebbe avere su di esso. Un altro modo di dire questo è che si può creare un linguaggio specifico del dominio.