Se disponessimo di un interprete universale per tutte le funzionalità disponibili dei linguaggi di programmazione, potremmo utilizzare uno specializzatore per generare compilatori per tutte le lingue. Potremmo semplicemente usare qualsiasi lingua come sorgente (o input) e qualsiasi piattaforma come target (output).
Potremmo tutti scrivere nel nostro linguaggio di programmazione preferito per aggiungere funzionalità all'interprete universale perché la base Abstract Syntax Tree (usata dall'interprete universale) potrebbe essere l'obiettivo del nostro linguaggio di programmazione preferito. Inoltre, è possibile visualizzare il "codice sorgente" dell'interprete universale in qualsiasi lingua, perché il "codice sorgente" dell'interprete universale è in realtà un AST.
Nonostante i programmatori abbiano questo tipo di idee da più di 40 anni, la maggior parte di noi sembra ancora pensare che dobbiamo scegliere una specifica rappresentazione testuale e un interprete appropriato (o un interprete specializzato chiamato compilatore).
Non capisco perché sia così. Ci sono così tanti programmatori in giro e la maggior parte dei programmatori è davvero appassionata della sua capacità di creare. Non capisco perché combattiamo su linguaggi di programmazione diversi, per me sembrano una visione diversa sullo stesso AST.
Perché non usiamo tutti la stessa base di una libreria da cui possiamo scegliere le caratteristiche linguistiche?