Programmeerimiskeele loomine: 15 sammu (piltidega)

Sisukord:

Programmeerimiskeele loomine: 15 sammu (piltidega)
Programmeerimiskeele loomine: 15 sammu (piltidega)

Video: Programmeerimiskeele loomine: 15 sammu (piltidega)

Video: Programmeerimiskeele loomine: 15 sammu (piltidega)
Video: Arvutihooldus. Sülearvuti ventilaatori puhastamine. Raalimeistrid 2024, Mai
Anonim

Paljudel inimestel on raskusi või pettumusi igapäevaselt kasutatavate programmeerimiskeelte pärast. Mõni soovib, et asju käsitletaks abstraktsemalt, samas kui teistele ei meeldi rakendada funktsioone, mida nad sooviksid „standardina”. Ükskõik, kas olete IT -professionaal või lihtsalt harrastaja, võite sageli leida endale soovi luua uus programmeerimiskeel.

Sammud

Programmeerimiskeele loomine 1. samm
Programmeerimiskeele loomine 1. samm

Samm 1. Tutvuge tehnoloogiaga

Programmeerimiskeelt ei saa luua, kui ei oska arvutit kasutada.

Programmeerimiskeele loomine 2. samm
Programmeerimiskeele loomine 2. samm

Samm 2. Tutvuge terminoloogiaga

Koostajad kasutavad sageli tundmatut terminoloogiat. Enne jätkamist lugege kompilaatorite kohta. Teadke kindlasti kõike, mida peate teadma.

Programmeerimiskeele loomine 3. samm
Programmeerimiskeele loomine 3. samm

Samm 3. Otsustage, millist probleemi teie keel lahendab

Kas see käsitleb domeenipõhist probleemi või on see üldotstarbeline keel?

Programmeerimiskeele loomine 4. samm
Programmeerimiskeele loomine 4. samm

Samm 4. Mõelge oma keele semantikale ja selle mõistetele

  • Kas lubate kursorile otse juurdepääsu või mitte?
  • Millised on teie keele andmetüübid?
  • Kas see on staatiline või dünaamiline keel?
  • Milline on teie mälumudel? Kas kavatsete kasutada prügivedurit või käsitsi mäluhaldust? (Kui kasutate prügivedurit, valmistuge selle kirjutamiseks või kohandage olemasolev oma keelega.)
  • Kuidas samaaegsusega toime tulla? Kas kavatsete kasutada lihtsat keermestamis-/lukustusmudelit või midagi keerukamat, näiteks Linda või näitlejamudel? (Kuna tänapäeval on arvutitel mitu südamikku.)
  • Kas keelde on lisatud primitiivseid funktsioone või tuleb kõik raamatukogust?
  • Mis on teie keele paradigma või paradigmad? Funktsionaalne? Objektile orienteeritud? Prototüüp (nagu JavaScript)? Aspektile orienteeritud? Mallile orienteeritud? Või midagi täiesti uut?
  • Kuidas saab teie keel liituda olemasolevate raamatukogude ja keeltega (peamiselt C)? See punkt on oluline, kui loote domeenispetsiifilist keelt.
  • Lõpuks vastatakse mõnele vastusele nendele küsimustele teise sammuga ja see aitab teil järgmisele sammule vastata.
Programmeerimiskeele loomine 5. samm
Programmeerimiskeele loomine 5. samm

Samm 5. Mõelge mõnele konkreetsele ülesandele, mida keegi sooviks teie keelega täita

Näiteks „nad võivad soovida robotit joont järgida” või „nad võivad soovida sellesse luua suhteliselt kaasaskantavaid töölauaprogramme” või „nad võivad soovida sellega veebirakendusi luua”.

Programmeerimiskeele loomine 6. samm
Programmeerimiskeele loomine 6. samm

Samm 6. Katsetage ülaltoodud näidete jaoks süntaksiideedega (keele tekst)

Olge ettevaatlik, et hoida oma keelt kontekstivaba keele kategoorias või midagi selle sees. Teie parserigeneraator ja hindate seda hiljem

Programmeerimiskeele loomine 7. samm
Programmeerimiskeele loomine 7. samm

Samm 7. Kirjutage süntaksi jaoks välja ametlik grammatika

Programmeerimiskeele loomine 8. samm
Programmeerimiskeele loomine 8. samm

Samm 8. Otsustage, kas keelt tõlgendatakse või koostatakse

See tähendab, et tõlgendatud maailmas muudab teie kasutaja tavaliselt teie programmi redaktoris ja käivitab selle otse tõlgis; kompileeritud maailmas redigeerib teie kasutaja teie programmi, kompileerib selle, salvestab saadud käivitatava faili kuhugi ja käivitab selle.

Programmeerimiskeele loomine 9. samm
Programmeerimiskeele loomine 9. samm

Samm 9. Kirjutage esiskanner ja parser või leidke tööriist, mis teid selles aitab

Mõelge ka sellele, kuidas teie kompilaator/tõlk hoiatab teie kasutajat ekslike programmide ja süntaksivigade eest

Programmeerimiskeele loomine 10. samm
Programmeerimiskeele loomine 10. samm

Samm 10. Kasutage sõelumisandmeid objekti koodi või vahepealse esituse kirjutamiseks

Laske parseril luua AST, seejärel looge oma objektikood AST -st, kasutades kolme aadressikoodi või selle suure venna SSA -d, seejärel looge sümbolitabel, et määratleda oma funktsioonid, globaalsed muutujad jne.

Sõltuvalt teie keelest võite oma klassidele luua ka virtuaalseid kursoritabeleid või teabetabeleid (et toetada peegeldust või RTTI -d)

Programmeerimiskeele loomine 11. samm
Programmeerimiskeele loomine 11. samm

Samm 11. Kirjutage täitur või koodigeneraator, mis seob kõik kokku

Programmeerimiskeele loomine 12. samm
Programmeerimiskeele loomine 12. samm

Samm 12. Kirjutage keele testimiseks palju testprogramme

Soovite luua programme, mis rõhutavad teie ametliku grammatika koormust, et näha, et teie kompilaator aktsepteerib kõike, mis on teie määratluse sees, ja lükkab tagasi kõik, mis on väljaspool seda

Programmeerimiskeele loomine 13. samm
Programmeerimiskeele loomine 13. samm

Samm 13. Mõelge, kuidas kasutaja oma programme silub

Programmeerimiskeele loomine 14. samm
Programmeerimiskeele loomine 14. samm

Samm 14. Kui teie keel kasutab standardset raamatukogu, soovite selle kirjutada

Koos prügikoristaja või muude käitusaja funktsioonidega, kui seda vajate.

Täpsemalt, kui kirjutate kompilaatori, vajate koodi, mille operatsioonisüsteem täidab, et alustada kasutajakoodi käivitamist (näiteks kõigi globaalsete muutujate eraldamine)

Programmeerimiskeele loomine 15. samm
Programmeerimiskeele loomine 15. samm

Samm 15. Avaldage oma keel koos selle spetsifikatsiooniga ja mõned näited selle kohta, mida saate selles teha

Ärge unustage dokumenteerida, kuidas saate integreeruda olemasolevate raamatukogude, keeltega ja kuidas kasutada käitusaja funktsioone ja/või standardteeki

Video - selle teenuse kasutamisel võidakse YouTube'iga jagada teatud teavet

Näpunäiteid

  • Alustage oma keele kujundamisega ja ärge kirjutage ühtegi koodi, kuni olete rahul ja olete vastanud kõikidele (või enamikule) oma disainiga seotud küsimustele või probleemidele, kuna disaini on lihtsam muuta varem kui hiljem.
  • Teadke oma kompilaatori/tõlgi sihtplatvormi (operatsioonisüsteem ja teegid), lõppude lõpuks hakkate seda kasutama ja sellega manipuleerima.

Hoiatused

  • Mõelge, kas teil on tõesti vaja uut keelt ja mida teie keeles on uut, mida teistel keeltel pole (see võib olla funktsioonide kombinatsioon või üks funktsioon).
  • Keelte kirjutamine on raske, kui te ei tea, mida teete. See nõuab ka palju harjutamist.
  • Olge valmis kulutama aega keelekujundusele, sest pärast kompilaatori kirjutamist ja kujunduspunktist möödumist pole teil võimalust oma keelt muuta.
  • Ärge püüdke oma funktsioone mitme keele ühendusse koondada, näiteks öeldes, et teie keel on keele X, keele Y ja keele Z liit. Ajalugu on meile näidanud, et sellisel viisil loodud keeled ei leia kunagi edu, või kõik programmeeriksid PL/1, mitte midagi, mis põhineb C -l.

Soovitan: