Moltes persones tenen dificultats o frustracions amb els llenguatges de programació que utilitzen cada dia. Alguns volen que les coses es manipulin de manera més abstracta, mentre que d'altres no els agrada implementar les funcions que desitgen que siguin "estàndard". Tant si sou un professional de la informàtica com si només és un aficionat, moltes vegades us podeu trobar amb ganes de crear un llenguatge de programació nou.
Passos
Pas 1. Familiaritzeu-vos amb la tecnologia
No podeu crear un llenguatge de programació si no sabeu utilitzar un ordinador.
Pas 2. Conegueu-vos amb la terminologia
Els redactors de compiladors solen utilitzar una terminologia desconeguda. Llegiu els compiladors abans de continuar. Assegureu-vos de conèixer tot el que necessiteu saber.
Pas 3. Decidiu quin problema està resolent el vostre idioma
Tracta un problema específic de domini o és un llenguatge d’ús general?
Pas 4. Penseu en la semàntica del vostre idioma i els seus conceptes
- Permetreu o no l'accés directe al punter?
- Quins són els tipus de dades del vostre idioma?
- És un llenguatge estàtic o dinàmic?
- Quin és el vostre model de memòria? Fareu servir un recopilador d'escombraries o una gestió manual de memòria? (Si utilitzeu un col·lector d'escombraries, prepareu-vos per escriure'n un o adapteu-ne un al vostre idioma.)
- Com gestionarem la simultaneïtat? Utilitzarà un model simple de roscat / bloqueig o alguna cosa més complex com Linda o el model d'actor? (Com que actualment els ordinadors tenen diversos nuclis.)
- Hi ha funcions primitives incrustades en el llenguatge o tot vindrà d’una biblioteca?
- Quin és el paradigma o paradigmes de la vostra llengua? Funcional? Orientat a objectes? Prototip (com JavaScript)? Orientat a l’aspecte? Orientat a la plantilla? O alguna cosa completament nou?
- Com es relacionarà el vostre idioma amb biblioteques i idiomes existents (principalment C)? Aquest punt és important si creeu un idioma específic per a un domini.
- Finalment, algunes de les respostes a aquestes preguntes es respondran pel segon pas i us ajudaran a respondre al següent pas.
Pas 5. Penseu en algunes tasques específiques que algú voldria poder realitzar amb el vostre idioma
Per exemple, "és possible que vulguin dirigir un robot perquè segueixi una línia" o "potser vulguin crear-hi programes d'escriptori relativament portàtils" o "poden crear aplicacions web amb ell".
Pas 6. Experimenteu amb idees de sintaxi (el text de la llengua) per als exemples anteriors
Tingueu cura de mantenir el vostre idioma a la categoria d'idioma lliure de context o alguna cosa dins d'ella. El vostre generador d’analitzadors i ho agraireu més endavant
Pas 7. Escriviu una gramàtica formal per a la sintaxi
Pas 8. Decidiu si el llenguatge serà interpretat o compilat
És a dir, que en el món interpretat, el vostre usuari normalment editarà el vostre programa en un editor i l’executarà directament a l’intèrpret; mentre es troba al món compilat, l'usuari editarà el programa, el compilarà, desarà l'executable resultant en algun lloc i l'executarà.
Pas 9. Escriviu l'escàner i l'analitzador de la portada o trobeu una eina que us ajudi
A més, penseu en com el vostre compilador / intèrpret advertirà al vostre usuari sobre programes erronis i errors de sintaxi
Pas 10. Utilitzeu la informació de l'analitzador per escriure el codi de l'objecte o una representació intermèdia
Feu que l’analitzador creï un AST i, a continuació, creeu el codi objecte a partir de l’AST mitjançant tres codis d’adreces o el seu germà gran SSA i, a continuació, creeu una taula de símbols per definir les vostres funcions, variables globals, etc.
A més, segons el vostre idioma, també podeu crear taules de punteres virtuals o taules d'informació per a les vostres classes (per tal de donar suport a la reflexió o RTTI)
Pas 11. Escriviu l'executor o el generador de codi que unirà tot
Pas 12. Escriviu molts programes de prova per provar l'idioma
Voleu crear programes que posin èmfasi en les càrregues de la vostra gramàtica formal per tal de veure que el vostre compilador accepta tot el que hi ha dins de la vostra definició i rebutja tot el que hi ha fora d’ella
Pas 13. Tingueu en compte com l'usuari depurarà els seus propis programes
Pas 14. Si el vostre idioma utilitza una biblioteca estàndard, voldreu escriure-la
Juntament amb un col·lector d’escombraries o altres funcions d’execució si ho necessiteu.
En concret, si escriviu un compilador, necessitareu el codi que executarà el sistema operatiu per començar a executar el codi d’usuari (per exemple, assignant totes les variables globals)
Pas 15. Publiqueu el vostre idioma, juntament amb les seves especificacions i alguns exemples del que podeu fer-hi
No oblideu documentar com podeu integrar-vos amb biblioteques, idiomes existents i com utilitzar les funcions d'execució i / o la biblioteca estàndard
Vídeo: mitjançant aquest servei, es pot compartir informació amb YouTube
Consells
- Comenceu dissenyant el vostre idioma i no escriviu cap codi, fins que no esteu satisfets i hagueu respost totes (o la majoria) de les preguntes o problemes relacionats amb el vostre disseny, ja que és més fàcil canviar el disseny abans que després.
- Conegueu la vostra plataforma de destinació (sistema operatiu i biblioteques) per al vostre compilador / intèrpret, al cap i a la fi, l’utilitzarà i manipularà.
Advertiments
- Penseu si realment necessiteu un idioma nou i el que el vostre idioma té de nou que altres idiomes no tenen (pot ser una combinació de funcions o una sola funció).
- Escriure idiomes és difícil si no saps què fas. També requereix molta pràctica.
- Prepareu-vos per dedicar una estona a dissenyar idiomes, ja que no tindreu l'oportunitat de canviar d'idioma un cop hàgiu escrit el compilador i haureu passat el punt de disseny.
- No intenteu basar les vostres funcions en una unió de diversos idiomes, com dir que la vostra llengua serà una unió de la llengua X, la llengua Y i la llengua Z. La història ens ha demostrat que les llengües creades de tal manera mai no tindran èxit. o tothom programaria PL / 1 en lloc d’alguna cosa basada en C.