Qui il modello di programmazione è ciò che le istruzioni (la lingua) richiedono per funzionare correttamente. L'implementazione di tali istruzioni sono i dettagli che possono cambiare senza modificare il risultato di seguire tali istruzioni.
Ad esempio, se le mie istruzioni sono che dovresti spostare 3 piedi a nord e 2 piedi a ovest, puoi attuare quelle istruzioni spostandoti prima verso ovest poi verso nord, verso nord prima verso ovest, o muovendoti diagonalmente verso nord-ovest. Puoi persino andare in giro in modo casuale finché non ti trovi nel posto giusto e poi fermarti. Ognuno di quelli segue le istruzioni. Il modello di programmazione qui è l'idea di trasferirsi in un punto diverso. Non è come ti trasferisci in un posto diverso. "Come" è il dettaglio dell'implementazione.
Un linguaggio di programmazione o un'istruzione imposta sia dettagli di implementazione lontani che a loro non interessano. Questo lascia chi compilatori di design, interpreti, JVM, e le CPU con spazio per fare scelte di come implementare pur sostenendo questo modello. Queste scelte possono rendere le cose più robuste, efficienti, manutenibili ed estensibili. Oppure possono fallire nel farlo. Ma fintanto che fanno ciò che le istruzioni hanno richiesto, mantengono ancora il modello di programmazione.
Fino a quando l'implementazione supporta il modello di programmazione ci si può fidare che quando si segue le istruzioni che vi darà quello che doveva dare.
Comprendi anche che possono sovrapporsi. Potresti avere un modello di movimento che espone l'idea di spostarti solo a nord e amp; sud ed est & l'ovest non ha modo di muoversi in diagonale. Questo dettaglio non sarà nel modello di posizione sopra, ma sarà qui nel modello di movimento. Ciò che non è nel modello di movimento è se cammini, vai in bicicletta o nuoti per fare questi movimenti.
Ogni volta che modelliamo abbiamo scelto le cose a cui prestare attenzione a questo livello. Altre cose ci astraggono e lascia che qualcos'altro si occupi di loro.