Cum se creează un limbaj de programare

Mulți oameni au dificultăți sau frustrări cu limbile de programare pe care le folosesc în fiecare zi. Unii doresc ca lucrurile să fie manipulate mai abstract, în timp ce alții nu-i plac caracteristicile de punere în aplicare pe care doresc să fie "standard". Indiferent dacă sunteți un profesionist IT sau doar un hobbyist, de multe ori vă puteți găsi dorința de a crea un nou limbaj de programare.

Pași

  1. Imagine intitulată Creați un limbaj de programare Pasul 1
1. Să se familiarizeze cu tehnologia. Nu puteți crea un limbaj de programare dacă nu știți cum să utilizați un computer.
  • Imaginea intitulată Creați o limbă de programare Pasul 2
    2. Să se familiarizeze cu terminologia. Scriitorii compilatorului utilizează adesea terminologia necunoscută. Citiți compilatoarele înainte de a continua. Asigurați-vă că știți tot ce trebuie să știți.
  • Imaginea intitulată Creați o limbă de programare Pasul 3
    3. Decideți ce problemă este rezolvarea limbii dvs. Se adresează unei probleme specifice domeniului sau este o limbă generală?
  • Imaginea intitulată Creați o limbă de programare Pasul 4
    4. Gândiți-vă la semantica limbii dvs. și la conceptele lui.
  • O să permiteți accesul direct la pointer sau nu?
  • Care sunt tipurile de date ale limbii dvs?
  • Este o limbă statică sau dinamică?
  • Care este modelul dvs. de memorie? Veți folosi un colector de gunoi sau un management manual de memorie? (Dacă utilizați un colector de gunoi, pregătiți-vă să scrieți unul sau să adaptați unul existent în limba dvs.)
  • Cum se vor ocupa de concurrency? Veți folosi un model simplu de filetare / blocare sau ceva mai complex ca Linda sau modelul actorului? (Deoarece computerele de astăzi au mai multe nuclee.)
  • Există funcții primitive încorporate în limba sau vor veni totul dintr-o bibliotecă?
  • Care este paradigma sau paradigmele limbii dvs? Funcţional? Obiect orientat spre obiect? Prototip (cum ar fi jаvascript)? Aspectul orientat spre aspect? Template orientate? Sau ceva complet nou?
  • Cum va fi limba dvs. de interfață cu bibliotecile și limbile existente (în principal c)? Acest punct este important dacă construiți o limbă specifică domeniului.
  • În cele din urmă, unele dintre răspunsurile la aceste întrebări vor fi raspuns de al doilea pas și vă vor ajuta să răspundeți la următorul pas.
  • Imagine intitulată Creați o limbă de programare Pasul 5
    5. Gândiți-vă la anumite sarcini specifice pe care cineva ar dori să le poată juca cu limba dvs. De exemplu, "pot dori să direcționeze un robot pentru a urma o linie" sau "ei ar putea dori să creeze programe de desktop relativ portabile" sau "ar putea dori să creeze aplicații web cu ea".
  • Imagine intitulată Creați o limbă de programare Pasul 6
    6. Experimentați cu idei de sintaxă (textul limbii) pentru exemplele de mai sus.
  • Aveți grijă să vă păstrați limba în categoria lingvistică fără context sau ceva în interiorul acestuia. Generatorul dvs. de parser și veți aprecia mai târziu.
  • Imagine intitulată Creați o limbă de programare Pasul 7
    7. Scrieți o gramatică formală pentru sintaxă.
  • Imaginea intitulată Creați un limbaj de programare Pasul 8
    8. Decideți dacă limba va fi interpretată sau compilată. Înțeles că în lumea interpretată, utilizatorul dvs. va edita în mod obișnuit programul dvs. într-un editor și o va conduce direct pe interpret - În timp ce în lumea compilată, utilizatorul dvs. va edita programul dvs., compilați-l, salvați executabilul rezultat undeva și executați-l.
  • Imaginea intitulată Creați o limbă de programare Pasul 9
    9. Scrieți scanerul frontal și parser sau găsiți un instrument care vă ajută cu acest lucru.
  • De asemenea, gândiți-vă la modul în care compilatorul / interpretul dvs. va avertiza utilizatorul despre programele eronate și erorile de sintaxă.
  • Imaginea intitulată Creați o limbă de programare Pasul 10
    10. Utilizați informațiile parser pentru a scrie codul obiect sau o reprezentare intermediară. Parserul creează un AST, apoi creați codul de obiect de la AST folosind trei coduri de adresă sau fratele său mare SSA, apoi creați un tabel de simbol pentru a vă defini funcțiile, variabilele globale etc.
  • De asemenea, în funcție de limba dvs., este posibil să doriți, de asemenea, să creați mese de pointer virtual sau tabele de informații pentru clasele dvs. (pentru a susține reflecția sau RTTI).
  • Imaginea intitulată Creați o limbă de programare Pasul 11
    11. Scrieți executorul sau generatorul de coduri care vor lega totul împreună.
  • Imagine intitulată Creați un limbaj de programare Pasul 12
    12. Scrieți multe programe de testare pentru a testa limba.
  • Doriți să creați programe care accentuează sarcinile gramaticii formale pentru a vedea că compilatorul dvs. acceptă tot ceea ce este în interiorul definiției dvs. și respinge tot ce este în afara acesteia.
  • Imaginea intitulată Creați un limbaj de programare Pasul 13
    13. Luați în considerare modul în care utilizatorul își va depana propriile programe.
  • Imaginea intitulată Creați o limbă de programare Pasul 14
    14. Dacă limba dvs. utilizează o bibliotecă standard, veți dori să o scrieți. Împreună cu un colector de gunoi sau alte caracteristici de execuție dacă aveți nevoie de ea.
  • În mod specific, dacă scrieți un compilator, veți avea nevoie de codul pe care îl va executa sistemul de operare pentru a începe executarea codului de utilizator (de exemplu, alocarea tuturor variabilelor globale).
  • Imaginea intitulată Creați o limbă de programare Pasul 15
    15. Publicați limba dvs., împreună cu specificațiile pentru el și câteva exemple despre ceea ce puteți face în el.
  • Nu uitați să documentați modul în care vă puteți integra cu bibliotecile existente, limbile și modul de utilizare a caracteristicilor de execuție și / sau a bibliotecii standard.
  • Video

    Prin utilizarea acestui serviciu, unele informații pot fi împărtășite cu YouTube.

    sfaturi

    Începeți prin proiectarea limbii dvs. și nu scrieți niciun cod, până când nu sunteți mulțumit și ați răspuns la toate întrebările sau problemele legate de designul dvs., deoarece este mai ușor să schimbați designul mai devreme decât mai târziu.
  • Cunoașteți platforma dvs. țintă (sistem de operare și biblioteci) pentru compilator / interpret, la urma urmei, o veți folosi și o manipulați.
  • Avertizări

    Gândiți-vă dacă aveți într-adevăr nevoie de o nouă limbă și care are limba dvs. nouă că alte limbi nu au (poate fi o combinație de caracteristici sau o singură caracteristică).
  • Limbile de scriere este dificil dacă nu știți ce faceți. Este nevoie de multă practică.
  • Pregătiți-vă să petreceți ceva timp în designul limbajului, deoarece nu veți avea șansa de a vă schimba limba după ce ați scris compilatorul și trecutul punctului de proiectare.
  • Nu încercați să vă bazați caracteristicile într-o uniune a mai multor limbi, cum ar fi spune că limba dvs. va fi o uniune a limbii X, limba Y și limba Z. Istoria ne-a arătat că limbile create într-un astfel de mod nu vor găsi niciodată succes sau toată lumea ar fi programarea PL / 1 în loc de ceva bazat pe c.
  • Lucrurile de care veți avea nevoie

    • Răbdare.
    • Cunoștințe despre caracteristicile lingvistice și designul limbii (poate doriți să citiți concepte de programare de programare de la David A. Watt).
    • Cunoștințe despre teoria compilatorului (deoarece veți scrie un compilator / interpret pentru limba dvs. și implementarea dvs. va fi implementarea de referință).
    • Utilizează pentru limba dvs. (amintiți-vă că au fost create unele dintre cele mai utilizate limbi cum ar fi C sau Lisp pentru a face ceva specific ca crearea Unix sau a face calculul simbolic).
    Partajați pe rețeaua socială:
    Similar