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
Samm 1. Tutvuge tehnoloogiaga
Programmeerimiskeelt ei saa luua, kui ei oska arvutit kasutada.
Samm 2. Tutvuge terminoloogiaga
Koostajad kasutavad sageli tundmatut terminoloogiat. Enne jätkamist lugege kompilaatorite kohta. Teadke kindlasti kõike, mida peate teadma.
Samm 3. Otsustage, millist probleemi teie keel lahendab
Kas see käsitleb domeenipõhist probleemi või on see üldotstarbeline keel?
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.
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”.
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
Samm 7. Kirjutage süntaksi jaoks välja ametlik grammatika
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.
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
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)
Samm 11. Kirjutage täitur või koodigeneraator, mis seob kõik kokku
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
Samm 13. Mõelge, kuidas kasutaja oma programme silub
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)
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.