Mnogi ljudje imajo težave ali frustracije s programskimi jeziki, ki jih uporabljajo vsak dan. Nekateri želijo, da se stvari obravnavajo bolj abstraktno, drugi pa ne marajo izvedbenih funkcij, za katere želijo, da so "standardne". Ne glede na to, ali ste IT -strokovnjak ali samo ljubitelji, se vam bo morda velikokrat zgodilo, da želite ustvariti nov programski jezik.
Koraki
Korak 1. Spoznajte tehnologijo
Programskega jezika ne morete ustvariti, če ne znate uporabljati računalnika.
Korak 2. Spoznajte terminologijo
Pisci prevajalcev pogosto uporabljajo neznano terminologijo. Preden nadaljujete, preberite prevajalnike. Ne pozabite vedeti vsega, kar morate vedeti.
Korak 3. Odločite se, kateri problem rešuje vaš jezik
Ali obravnava problem, povezan s domeno, ali je jezik splošnega namena?
Korak 4. Pomislite na semantiko svojega jezika in njegove pojme
- Ali boste dovolili neposreden dostop s kazalcem ali ne?
- Kakšne so podatkovne vrste vašega jezika?
- Je to statičen ali dinamičen jezik?
- Kakšen je vaš model pomnilnika? Ali boste uporabili zbiralnik smeti ali ročno upravljanje pomnilnika? (Če uporabljate zbiralnik smeti, se pripravite, da ga napišete ali obstoječega prilagodite svojemu jeziku.)
- Kako boste ravnali s sočasnostjo? Ali boste uporabili preprost model navojev/zaklepanja ali kaj bolj zapletenega, kot sta Linda ali model igralca? (Od danes imajo računalniki več jeder.)
- Ali so v jeziku vgrajene primitivne funkcije ali bo vse prišlo iz knjižnice?
- Kaj je paradigma ali paradigme vašega jezika? Delujoč? Objektno usmerjen? Prototip (na primer JavaScript)? Aspekt? Predloga usmerjena? Ali pa kaj povsem novega?
- Kako se bo vaš jezik povezal z obstoječimi knjižnicami in jeziki (predvsem C)? Ta točka je pomembna, če gradite jezik, specifičen za domeno.
- Nazadnje bo na nekatere odgovore na ta vprašanja odgovoril drugi korak in vam bo pomagal odgovoriti na naslednji korak.
5. korak. Pomislite na nekaj posebnih nalog, ki bi jih nekdo želel opravljati z vašim jezikom
Na primer, "morda bodo želeli usmeriti robota, da sledi liniji" ali "bodo morda želeli v njem ustvariti sorazmerno prenosljive namizne programe" ali "bodo morda želeli z njim ustvariti spletne aplikacije".
Korak 6. Eksperimentirajte s sintaksnimi zamislimi (besedilom jezika) za zgornje primere
Bodite previdni, da vaš jezik ostane v kontekstu prosti kategoriji jezikov ali v njej. Vaš generator razčlenjevalnika in pozneje ga boste cenili
Korak 7. Napišite uradno slovnico za skladnjo
Korak 8. Odločite se, ali bo jezik interpretiran ali sestavljen
To pomeni, da bo vaš uporabnik v interpretiranem svetu običajno uredil vaš program v urejevalniku in ga zagnal neposredno na tolmaču; medtem ko bo v prevedenem svetu vaš uporabnik uredil vaš program, ga prevedel, nastalo izvedljivo datoteko shranil nekam in jo zagnal.
Korak 9. Napišite sprednji bralnik in razčlenjevalnik ali poiščite orodje, ki vam bo pri tem pomagalo
Pomislite tudi, kako bo vaš prevajalnik/tolmač uporabnika opozoril na napačne programe in sintaktične napake
Korak 10. Uporabite podatke razčlenjevalnika, da napišete kodo objekta ali vmesni prikaz
Naj razčlenjevalnik ustvari AST, nato pa ustvari kodo objekta iz AST z uporabo tri naslovne kode ali njenega velikega brata SSA, nato pa ustvari tabelo simbolov, da opredeli svoje funkcije, globalne spremenljivke itd.
Odvisno od jezika lahko ustvarite tudi tabele navideznih kazalcev ali tabele informacij za svoje razrede (za podporo refleksiji ali RTTI)
Korak 11. Napišite izvajalca ali generator kode, ki bo vse povezal skupaj
Korak 12. Napišite veliko testnih programov za preizkus jezika
Ustvariti želite programe, ki poudarjajo breme vaše formalne slovnice, da vidite, da vaš prevajalnik sprejema vse, kar je v vaši definiciji, in zavrača vse, kar je zunaj nje
Korak 13. Razmislite, kako bo uporabnik odpravljal napake v svojih programih
Korak 14. Če vaš jezik uporablja standardno knjižnico, jo boste želeli napisati
Skupaj z zbiralnikom smeti ali drugimi funkcijami izvajanja, če jih potrebujete.
Natančneje, če pišete prevajalnik, boste za začetek izvajanja uporabniške kode potrebovali kodo, ki jo bo operacijski sistem izvedel (na primer dodelitev vseh globalnih spremenljivk)
Korak 15. Objavite svoj jezik skupaj s specifikacijami zanj in nekaj primerov, kaj lahko v njem počnete
Ne pozabite dokumentirati, kako se lahko integrirate z obstoječimi knjižnicami, jeziki in kako uporabljate funkcije za izvajanje in/ali standardno knjižnico
Video - z uporabo te storitve se lahko nekateri podatki delijo z YouTubom
Nasveti
- Začnite z oblikovanjem svojega jezika in ne pišite kode, dokler niste zadovoljni in ne odgovorite na vsa (ali večino) vprašanj ali težav, povezanih z vašim dizajnom, saj je oblikovanje lažje spremeniti prej kot kasneje.
- Spoznajte svojo ciljno platformo (operacijski sistem in knjižnice) za prevajalnika/interpreterja, navsezadnje jo boste uporabljali in z njo manipulirali.
Opozorila
- Pomislite, ali resnično potrebujete nov jezik in kaj novega ima vaš jezik, česar drugi jeziki nimajo (lahko je kombinacija funkcij ali ena sama funkcija).
- Pisanje jezikov je težko, če ne veste, kaj počnete. Potrebno je tudi veliko vaje.
- Pripravite se na nekaj časa pri oblikovanju jezikov, saj ne boste imeli možnosti spremeniti jezika, ko boste napisali prevajalnik in mimo točke oblikovanja.
- Ne poskušajte zasnovati svojih lastnosti v zvezi več jezikov, na primer reči, da bo vaš jezik združitev jezika X, jezika Y in jezika Z. Zgodovina nam je pokazala, da tako ustvarjeni jeziki ne bodo nikoli uspeli, ali pa bi vsi programirali PL/1 namesto nečesa, kar temelji na C.