Monilla ihmisillä on vaikeuksia tai turhautumista ohjelmointikieliin, joita he käyttävät päivittäin. Jotkut haluavat asioiden hoidettavan abstraktimmin, kun taas toiset eivät pidä sellaisten ominaisuuksien toteuttamisesta, jotka toivoisivat olevan "vakio". Olitpa IT -ammattilainen tai vain harrastaja, monesti saatat löytää itsesi haluavan luoda uuden ohjelmointikielen.
Askeleet
Vaihe 1. Tutustu tekniikkaan
Et voi luoda ohjelmointikieltä, jos et osaa käyttää tietokonetta.
Vaihe 2. Tutustu terminologiaan
Kääntäjät käyttävät usein tuntematonta terminologiaa. Lue kääntäjät ennen kuin jatkat. Muista tietää kaikki mitä sinun tarvitsee tietää.
Vaihe 3. Päätä, mitä ongelmaa kielesi ratkaisee
Korjataanko se verkkotunnuskohtaiseen ongelmaan vai onko se yleiskielinen?
Vaihe 4. Mieti kielesi semantiikkaa ja sen käsitteitä
- Aiotko sallia suoran osoittimen käytön vai et?
- Mitkä ovat kielesi tietotyypit?
- Onko se staattinen vai dynaaminen kieli?
- Mikä on muistimallisi? Aiotko käyttää roskakoria vai manuaalista muistinhallintaa? (Jos käytät roskakoria, valmistaudu kirjoittamaan tai mukauta olemassa oleva kieliisi.)
- Miten aiot käsitellä samanaikaisuutta? Aiotko käyttää yksinkertaista kierteitys-/lukitusmallia tai jotain monimutkaisempaa, kuten Linda tai näyttelijämalli? (Koska nykyään tietokoneissa on useita ytimiä.)
- Onko kieleen upotettu alkeellisia toimintoja vai tulevatko kaikki kirjastosta?
- Mikä on kielesi paradigma tai paradigmat? Toiminnallinen? Objektiivinen? Prototyyppi (kuten JavaScript)? Näkökulma-suuntautunut? Mallipohjainen? Vai jotain aivan uutta?
- Miten kielesi liitetään olemassa oleviin kirjastoihin ja kieliin (lähinnä C)? Tämä kohta on tärkeä, jos rakennat verkkotunnuskohtaista kieltä.
- Lopuksi joihinkin vastauksiin näihin kysymyksiin vastataan toisessa vaiheessa ja ne auttavat sinua vastaamaan seuraavaan vaiheeseen.
Vaihe 5. Mieti tiettyjä tehtäviä, jotka joku haluaisi pystyä suorittamaan kielelläsi
Esimerkiksi "he saattavat haluta ohjata robotin seuraamaan linjaa" tai "he voivat haluta luoda siihen suhteellisen kannettavia työpöytäohjelmia" tai "he saattavat haluta luoda verkkosovelluksia sen avulla".
Vaihe 6. Kokeile syntaksi -ideoita (kielen teksti) yllä olevissa esimerkeissä
Ole varovainen, että pidät kielesi kontekstittomassa kielikategoriassa tai jotain sen sisällä. Analysaattorisi ja arvostat sitä myöhemmin
Vaihe 7. Kirjoita syntaksille muodollinen kielioppi
Vaihe 8. Päätä, tulkitaanko vai käännetäänkö kieli
Tämä tarkoittaa sitä, että tulkitussa maailmassa käyttäjä yleensä muokkaa ohjelmaa editorissa ja suorittaa sen suoraan tulkilla; käännetyssä maailmassa käyttäjä muokkaa ohjelmaa, kääntää sen, tallentaa tuloksena olevan suoritustiedoston jonnekin ja suorittaa sen.
Vaihe 9. Kirjoita käyttöliittymän skanneri ja jäsennin tai etsi työkalu, joka auttaa sinua tässä
Mieti myös, miten kääntäjä/tulkki varoittaa käyttäjää virheellisistä ohjelmista ja syntaksivirheistä
Vaihe 10. Kirjoita jäsennystiedoilla objektikoodi tai välikuva
Pyydä jäsennintä luomaan AST, luo sitten objektikoodisi AST: stä käyttämällä kolmea osoitekoodia tai sen isoveli SSA: ta ja luo sitten symbolitaulukko määritelläksesi toiminnot, globaalimuuttujat jne.
Kielestäsi riippuen voit myös haluta luoda virtuaalisia osoitintaulukoita tai tietotaulukoita luokillesi (pohdinnan tai RTTI: n tukemiseksi)
Vaihe 11. Kirjoita suorittaja tai koodigeneraattori, joka sitoo kaiken yhteen
Vaihe 12. Kirjoita monia testiohjelmia kielen testaamiseksi
Haluat luoda ohjelmia, jotka korostavat muodollisen kieliopin taakkaa nähdäksesi, että kääntäjä hyväksyy kaiken määritelmäsi sisällä ja hylkää kaiken sen ulkopuolella
Vaihe 13. Mieti, miten käyttäjä korjaa omia ohjelmiaan
Vaihe 14. Jos kielesi käyttää vakiokirjastoa, haluat kirjoittaa sen
Yhdessä roskienkeräimen tai muiden käyttöaikaominaisuuksien kanssa, jos tarvitset sitä.
Erityisesti, jos kirjoitat kääntäjää, tarvitset koodin, jonka käyttöjärjestelmä suorittaa, jotta voit aloittaa käyttäjäkoodin suorittamisen (esimerkiksi allokoimalla kaikki globaalimuuttujat)
Vaihe 15. Julkaise kielesi, sen spesifikaatio ja muutamia esimerkkejä siitä, mitä voit tehdä sillä
Älä unohda dokumentoida, miten voit integroida olemassa oleviin kirjastoihin, kieliin ja miten voit käyttää ajonaikaisia ominaisuuksia ja/tai vakiokirjastoa
Video - Käyttämällä tätä palvelua joitakin tietoja voidaan jakaa YouTuben kanssa
Vinkkejä
- Aloita suunnittelemalla kielesi äläkä kirjoita mitään koodia, ennen kuin olet tyytyväinen ja olet vastannut kaikkiin (tai useimpiin) suunnitteluun liittyviin kysymyksiin tai ongelmiin, koska mallin muuttaminen on helpompaa aikaisemmin kuin myöhemmin.
- Tunne kääntäjäsi/tulkkisi kohdealusta (käyttöjärjestelmä ja kirjastot), loppujen lopuksi aiot käyttää sitä ja manipuloida sitä.
Varoitukset
- Mieti, tarvitsetko todella uutta kieltä ja mitä uutta kielelläsi on, mitä muilla kielillä ei ole (se voi olla ominaisuuksien yhdistelmä tai yksi ominaisuus).
- Kielien kirjoittaminen on vaikeaa, jos et tiedä mitä olet tekemässä. Se vaatii myös paljon harjoittelua.
- Valmistaudu viettämään aikaa kielisuunnittelussa, koska sinulla ei ole mahdollisuutta vaihtaa kieltäsi, kun olet kirjoittanut kääntäjän ja ohittanut suunnittelupisteen.
- Älä yritä perustaa ominaisuuksiasi useiden kielten yhteenliittymään, kuten sanomaan, että kielesi on kielen X, kielen Y ja kielen Z liitto. Historia on osoittanut meille, että tällä tavalla luodut kielet eivät koskaan menesty, tai kaikki ohjelmoisivat PL/1 C: n perusteella.