Dì, volevo creare il mio linguaggio di programmazione. Supponendo di aver preso tutte le decisioni su come voglio che appaia e agisca, devo solo scrivere un compilatore per questo?
No. Prendere tutte le decisioni su come vuoi che la lingua appaia e agisca sta creando il tuo linguaggio di programmazione. Non è necessario un compilatore o un interprete per creare un linguaggio di programmazione. Non hai bisogno di un compilatore o di un interprete per scrivere programmi nel tuo linguaggio di programmazione.
Hai solo bisogno di un compilatore o di un interprete se vuoi davvero eseguire i programmi che scrivi.
La mia domanda è: la creazione di un linguaggio di programmazione avviene tramite un compilatore? L'alto livello va bene.
No. La creazione di un linguaggio di programmazione avviene attraverso l'elaborazione di due serie di regole:
- come appare un programma legale (sintassi)
- cosa fa un programma legale (semantica)
Questo è tutto.
Esistono linguaggi di programmazione che non hanno implementazione. O che non ha avuto implementazione per molto tempo.
Ad esempio, Konrad Zuse ha creato Plankalkül a metà degli anni '40, ma a causa della guerra non è mai stato in grado di implementarlo. Fu implementato per la prima volta come parte di una tesi nel 1975. Ma certamente esisteva negli anni '50 e '60.
LISP è stato originariamente progettato come alternativa più trattabile al calcolo λ per lo studio del calcolo. È stato implementato da Steve Russell, uno studente di John McCarthy. Lo stesso McCarthy dubitava persino che il LISP potesse essere implementato!
APL è stato originariamente progettato come notazione per l'insegnamento della matematica. È stato successivamente esteso per servire come linguaggio di specifica per IBM System / 360. Le implementazioni arrivarono dopo, dopo che la lingua era già stata usata.
PIANIFICATORE era un linguaggio molto influente, che in realtà fu implementato solo dopo aver influenzato altre lingue; fu progettato nel 1969 e implementato nel 1973, quando aveva già influenzato Smalltalk e Prolog (entrambi 1972).
Struttura e interpretazione della meccanica classica è un libro di testo di fisica che utilizza Scheme anziché matematica per descrivere sistemi dinamici; il fatto che Scheme abbia interpreti e compilatori è essenziale per il libro, è usato come linguaggio per trasmettere pensieri, non eseguire programmi.
Come puoi vedere, i linguaggi di programmazione possono essere utili anche senza implementazioni. "I programmi dovrebbero essere scritti per essere letti dagli umani, e solo per inciso da eseguire dai computer" è una famosa citazione di Struttura e interpretazione dei programmi per computer. I linguaggi di programmazione sono linguaggi formali per descrivere in modo inequivocabile processi complessi. Il fatto che se descrivi un processo in modo sufficientemente preciso da essere compreso da un essere umano, capita anche che sia eseguibile da una macchina è un effetto collaterale. È un effetto collaterale molto desiderabile, utile, potente, ma è un effetto collaterale.
I primissimi "linguaggi di programmazione", calcolo λ, calcolo SKI, macchine di Turing, funzioni μ ricorsive, non sono stati creati per l'esecuzione. Sono stati creati per comprendere questioni fondamentali di logica e matematica.