Ciao raga,
mi sono sempre chiesto "ma come si creano i linguaggi di programmazione?", "con l'assemler o altro?" e "come si amplia un linguaggio, cioè creando nuove funzioni o altro?".
Chi mi sa rispondere ?
Ciao raga,
mi sono sempre chiesto "ma come si creano i linguaggi di programmazione?", "con l'assemler o altro?" e "come si amplia un linguaggio, cioè creando nuove funzioni o altro?".
Chi mi sa rispondere ?
dipende, non è il linguaggio che crei, ma il compilatore.
Il primo compilatore C fu fatto naturalmente in asm, l'unica cosa che raggiungeva un certo equilibrio tra semplicità di comprensione umana potenza nell'interfacciarsi con l'hw. Quando il C divenne lo strumento a quell'epoca più usato, più stabile ecc... ed hanno inventato il C++ hanno modificato il compilatore C, oppure hanno scritto totalmente un nuovo compilatore, ma non più in asm, in C visto che era a disposizione. Quando dopo hanno inventato Java oltre un compilatore, in C/C++ a questo punto, hanno fatto anche un interprete sempre in C/C++. Però è sempre stato possibile inserire un po di inline assembler, quando si deve andare molto in basso col livello di astrazione.
Per creare nuove funzioni, o modifichi il compilatore o se intendi creare nuove api basta che le scrivi tu e le dai a disposizione ad altri developers sotto forma di sorgenti o di precompilati.
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
Da noi nell'esame di Linguaggi I abbiamo costruito un compilatore in C (per un linguaggio -molto semplice- inventato da noi).
Fondamentalmente devi creare una serie di moduli che a partire dal file di input del tuo linguaggio cerchino di costruire i token (del tuo linguaggio) e facciano poi analisi sintattica, semantica, costruiscano la tavola dei simboli, la forma intermedia (albero) e la visitino in postordine (inoltre dovresti gestire gli errori, ...).
Se nn erro in fondo al K&R dovresti trovare la grammatica del linguaggio (ma nn sono sicuro).
Live fast. Troll hard.
Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
Team Lead @Gameloft Barcelona
Ma il compilatore non è un "semplice" convertitore da un qualsiasi linguaggio all'Assembly???
Beh prima di convertire da x ad essembly il compilatore deve fare tante altre cosine
Live fast. Troll hard.
Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
Team Lead @Gameloft Barcelona