Mnoho ľudí má problémy alebo sklamanie z programovacích jazykov, ktoré používajú každý deň. Niektorí chcú, aby sa veci riešili abstraktnejšie, zatiaľ čo iným sa nepáčia implementačné funkcie, o ktorých si myslia, že sú „štandardné“. Či už ste IT profesionál alebo len fanda, mnohokrát sa vám môže stať, že budete chcieť vytvoriť nový programovací jazyk.
Kroky
Krok 1. Zoznámte sa s technológiou
Programovací jazyk nemôžete vytvoriť, ak neviete, ako používať počítač.
Krok 2. Oboznámte sa s terminológiou
Autori kompilátorov často používajú neznámu terminológiu. Než budete pokračovať, prečítajte si o kompilátoroch. Uistite sa, že viete všetko, čo potrebujete vedieť.
Krok 3. Rozhodnite sa, aký problém váš jazyk rieši
Rieši problém konkrétnej domény alebo je to jazyk na všeobecné použitie?
Krok 4. Zamyslite sa nad sémantikou vášho jazyka a jeho pojmami
- Chystáte sa povoliť priamy prístup na ukazovateľ alebo nie?
- Aké sú dátové typy vo vašom jazyku?
- Je to statický alebo dynamický jazyk?
- Aký je váš model pamäte? Budete používať smetiar alebo manuálnu správu pamäte? (Ak používate smetiar, pripravte sa na jeho napísanie alebo prispôsobte už existujúci svojmu jazyku.)
- Ako budete zvládať súbežnosť? Budete používať jednoduchý závitový/uzamykací model alebo niečo zložitejšie ako Linda alebo herecký model? (Pretože počítače majú v dnešnej dobe viac jadier.)
- Sú v jazyku zabudované primitívne funkcie alebo bude všetko pochádzať z knižnice?
- Aká je paradigma alebo paradigmy vášho jazyka? Funkčné? Objektovo orientovaný? Prototyp (ako JavaScript)? Aspektovo orientovaný? Orientované na šablónu? Alebo niečo úplne nové?
- Ako bude váš jazyk komunikovať s existujúcimi knižnicami a jazykmi (hlavne C)? Tento bod je dôležitý, ak vytvárate jazyk špecifický pre doménu.
- Nakoniec na niektoré odpovede na tieto otázky odpovie druhý krok a pomôžu vám odpovedať na ďalší krok.
Krok 5. Zamyslite sa nad niektorými konkrétnymi úlohami, ktoré by chcel niekto vykonávať vo vašom jazyku
Napríklad „môžu chcieť nasmerovať robota na riadok“alebo „môžu v ňom vytvoriť relatívne prenosné programy pre stolné počítače“alebo „môžu s ním chcieť vytvárať webové aplikácie“.
Krok 6. Experimentujte s myšlienkami syntaxe (text jazyka) pre vyššie uvedené príklady
Dávajte si pozor, aby bol váš jazyk v kategórii bezkontextových jazykov alebo v nej obsiahnuté. Váš generátor analyzátora a neskôr to oceníte
Krok 7. Napíšte formálnu gramatiku syntaxe
Krok 8. Rozhodnite, či bude jazyk interpretovaný alebo kompilovaný
To znamená, že v interpretovanom svete váš užívateľ spravidla upraví váš program v editore a spustí ho priamo na tlmočníku; zatiaľ čo v kompilovanom svete váš používateľ váš program upraví, skomplikuje, výsledný spustiteľný súbor niekde uloží a spustí.
Krok 9. Napíšte predný koncový skener a analyzátor alebo nájdite nástroj, ktorý vám s tým pomôže
Zamyslite sa tiež nad tým, ako váš prekladač/tlmočník upozorní vášho používateľa na chybné programy a chyby syntaxe
Krok 10. Pomocou informácií z analyzátora napíšte kód objektu alebo prechodnú reprezentáciu
Nechajte analyzátor vytvoriť AST, potom vytvorte svoj objektový kód z AST pomocou kódu troch adries alebo jeho veľkého brata SSA, potom vytvorte tabuľku symbolov na definovanie vašich funkcií, globálnych premenných atď.
V závislosti od vášho jazyka môžete tiež vytvoriť tabuľky virtuálnych ukazovateľov alebo informačné tabuľky pre svoje triedy (na podporu reflexie alebo RTTI)
Krok 11. Napíšte exekútor alebo generátor kódu, ktorý všetko spojí
Krok 12. Napíšte veľa testovacích programov na testovanie jazyka
Chcete vytvárať programy, ktoré zdôrazňujú záťaž formálnej gramatiky, aby ste videli, že váš kompilátor akceptuje všetko, čo je vo vašej definícii, a odmieta všetko, čo je mimo nej
Krok 13. Zvážte, ako bude používateľ ladiť svoje vlastné programy
Krok 14. Ak váš jazyk používa štandardnú knižnicu, budete ho chcieť napísať
Spolu s odpadkom alebo inými funkciami za behu, ak to potrebujete.
Konkrétne, ak píšete kompilátor, budete potrebovať kód, ktorý operačný systém spustí, aby ste mohli spustiť kód používateľa (napríklad alokovať všetky globálne premenné)
Krok 15. Publikujte svoj jazyk spolu so špecifikáciami a niekoľkými príkladmi toho, čo v ňom môžete robiť
Nezabudnite zdokumentovať, ako sa môžete integrovať s existujúcimi knižnicami, jazykmi a ako používať funkcie runtime a/alebo štandardnú knižnicu
Video - Používaním tejto služby môžu byť niektoré informácie zdieľané so službou YouTube
Tipy
- Začnite tým, že navrhnete svoj jazyk a nepíšete žiadny kód, kým nebudete spokojní a neodpoviete na všetky (alebo väčšinu) otázok alebo problémov spojených s vašim návrhom, pretože je jednoduchšie zmeniť dizajn skôr ako neskôr.
- Poznáte svoju cieľovú platformu (operačný systém a knižnice) pre váš kompilátor/tlmočník, koniec koncov ju budete používať a manipulovať s ňou.
Varovania
- Zamyslite sa nad tým, či skutočne potrebujete nový jazyk a čo nové váš jazyk ponúka, čo ostatné jazyky nemajú (môže ísť o kombináciu funkcií alebo jednu funkciu).
- Písanie jazykov je ťažké, ak neviete, čo robíte. Tiež to chce veľa praxe.
- Buďte pripravení stráviť nejaký čas v jazykovom dizajne, pretože po napísaní kompilátora a prekročení bodu návrhu nebudete mať možnosť zmeniť svoj jazyk.
- Nesnažte sa zakladať svoje funkcie na spojení niekoľkých jazykov, napríklad tvrdením, že váš jazyk bude spojením jazyka X, jazyka Y a jazyka Z. História nám ukázala, že jazyky vytvorené takýmto spôsobom nikdy nenájdu úspech, alebo by každý programoval PL/1 namiesto niečoho na základe C.