0

Come creare un linguaggio di programmazione?

Salve a tutti!! Mi sono sempre chiesto ma come fanno i programmatori (ESTREMAMENTE ESPERTI) a inventare nuovi linguaggi di programmazione?Da cosa partono? Come impartiscono comandi alla macchina?
docsity
1 anno fa
Visite: 939
  

7 Risposte

0
In quasi tutti i corsi di laurea in Informatica c'è un esame di "Compilatori e Sistemi Operativi" ed è un esame impegnativo (molte cose da studiare), ma non difficile (ogni singola cosa si impara bene).
Se proprio ci tieni, potresti procurarti uno dei testi consigliati per quell'esame e dare un'occhiata da te.
Se questa risposta non ti sembra soddisfacente, pensa che quelle precedenti contengono informazioni errate sparpagliate qua e là.
docsity
1 anno fa
Visite: 0
0
boh..
docsity
1 anno fa
Visite: 0
0
penso che l'invenzione di un nuovo linguaggio sia dettato da un bisogno, cioè un problema che si risolve con nuovo linguaggio .... e per i comandi ... basta creare un altro programma che con un determinato comando fa un azione suppongo
docsity
1 anno fa
Visite: 0
0
bho....tu preoccupati a programmare in linguaggi già inventati...ad inventare nuovi linguaggi c pensano loro
docsity
1 anno fa
Visite: 0
0
Questa domanda e' molto facile.
Una spiegazione viene anche data nel libro  di Kernighan &  Ritchie che tutti dovrebbero avere letto.
La sintassi del linguaggio viene semplicemente scritta a tavolino mettendo insieme una serie di istruzioni,comandi e funzioni, rispettando determinate specifiche che si vogliono rispettare.
In questa fase si dovra' decidere anche come avviene il casting fra i vari tipi, ad esempio nel PHP si puo' passare facilmente da un numero ad alfanumerico, nel javascript non e' obbligatorio dichiarare una variabile prima di usarla, invece in java se fai un confronto con una variabile a null ti da subito una eccezione di null pointer exception, cosa che  costringe a mettere molti controlli che sono invece inutili in altri linguaggi.
In questa fase si deve decidere se il linguaggio sara' a oggetti (ovvero a classi, con ereditarieta' multipla o meno) oppure a funzioni e molto altro.
Fatto questo si deve decidere se il linguaggio sara' interpretato o compilato. Nell'interpretato i comandi vengono presi in considerazione riga per riga, nel compilato invece il codice sorgente viene analizzato a livello di file da un parser che trasformera' il linguaggio in codice oggetto, ovvero chiamate al sistema operativo, che poi verranno linkate insieme a delle librerie di sistema per formare un eseguibile. In alternativa si puo' aggiungere uno strato in mezzo ,come fa ad esempio java , per rendere indipendente l'eseguibile dal sistema operativo. In questo caso viene generato un byte code intermedio che sara' cross-paltform, ovvero che gira dappertutto.
Ovviamente i linguaggi compilati sono piu' veloci di quelli interpretati.

Anche tu se vuoi puoi inventarti un linguaggio ad alto livello usando per svilupparlo un linguaggio a livello piu' basso. Poi man mano che il linguaggio comincia a funzionare addirittura  puoi usare il nuovo linguaggio per estendere se stesso, come hanno fatto con il linguaggio C.
Ad esempio Hibernate contiene al suo interno un parser per riconoscere il linguaggio SQL, e' come avere un linguaggio dentro il linguaggio.

Riepilogando:
bisogna scriverere un compilatore con un altro linguaggio, che riconosca i sintax error e crei il codice oggetto oppure il byte code.
Bisogna scrivere un linker oppure usare un linker esistente, se invece usi il byte code bisogna preparare un runtime per ogni sistema operativo. Il linker o il runtime dovranno dare gli errori di esecuzione ad esempio per un array non dimensionato.
Bisogna scrivere un manuale e fornire vari esempi per ogni istruzione.
docsity
1 anno fa
Visite: 0
0
domande strane.........................................
devi creare anke dei plugin
docsity
1 anno fa
Visite: 0
0
Per farti un'idea cerca il sito di un corso di fondamenti dei linguaggi di programmazione (linguaggi e compilatori). Di solito mettono le slide del corso e anche i riferimenti ai testi.
fraubert
2 mesi fa
Visite: 0