Ako vytvoriť programovací jazyk?
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.
- 1Zoznámte sa s technológiou. Programovací jazyk nemôžete vytvoriť, ak neviete, ako používať počítač.
- 2Zozná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ť.
- 3Rozhodnite 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?
- 4Zamyslite sa nad sémantikou svojho 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 si už existujúci prispôsobte 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.
- 5Zamyslite sa nad niektorými konkrétnymi úlohami, ktoré by niekto chcel byť schopný vykonávať s vašim jazykom. Napríklad „môžu chcieť nasmerovať robota na riadok“ alebo „môžu v ňom vytvoriť relatívne prenosné desktopové programy“ alebo „môžu s ním chcieť vytvárať webové aplikácie“.
- 6Experimentujte 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.
- 7Napíšte syntax gramatiky.
- 8Rozhodnite, č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 kompilačnom svete váš užívateľ váš program upraví, skomplikuje, výsledný spustiteľný súbor niekde uloží a spustí.
- 9Napíšte skener a analyzátor front -endu 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.
- 10Informácie z analyzátora použite na zapísanie kódu objektu alebo medziproduktu. 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).
- 11Napíšte exekútor alebo generátor kódu, ktorý všetko spojí.
- 12Napíšte mnoho 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 prijíma všetko, čo je vo vašej definícii, a odmieta všetko, čo je mimo nej.
- 13Zvážte, ako bude používateľ ladiť svoje vlastné programy.
- 14Ak 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é).
- 15Publikujte 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.
- 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.
- Nakoniec poznáte svoju cieľovú platformu (operačný systém a knižnice) pre svoj kompilátor/tlmočník, budete ju používať a manipulovať s ňou.
- 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).
- 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.
- Písanie jazykov je ťažké, ak neviete, čo robíte. Tiež to chce veľa praxe.
- Nesnažte sa založiť svoje vlastnosti na spojení niekoľkých jazykov, ako napríklad tvrdenia, ž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.
- Trpezlivosť
- Znalosti o jazykových funkciách a jazykovom dizajne (možno si budete chcieť prečítať koncepty programovacieho jazykového dizajnu od Davida A. Watta).
- Vedomosti o teórii kompilátora (pretože budete písať kompilátor/tlmočník pre váš jazyk a vaša implementácia bude referenčnou implementáciou).
- Použitie pre váš jazyk (pamätajte, že niektoré z najpoužívanejších jazykov, ako je C alebo Lisp, boli vytvorené s cieľom vykonávať niečo konkrétne, ako napríklad vytváranie Unixu alebo symbolické výpočty).
Prečítajte si tiež: Ako pridať textové prechody v programe Powerpoint?
Otázky a odpovede
- Kde na PC naprogramujem nový jazyk?Na spustenie môžete použiť bezplatný softvér ako Sublime Text a ConTEXT, Notepad ++ alebo dokonca iba Poznámkový blok!
- Existuje nejaký konkrétny jazyk, v ktorom je ľahké vytvoriť nový jazyk, a ako by som to urobil?Java je užitočná kvôli množstvu dostupných nástrojov. K dispozícii je predovšetkým veľmi známy nástroj s názvom „ANTLR“ na generovanie hlavných komponentov prekladačov a tlmočníkov.
- Aké sú najlepšie knihy o programovacom jazyku Java?Pravdepodobne ich nájdete v miestnej knižnici. Ak nie, YouTube má veľa návodov, ako napríklad thenewboston.
- Čo sa mám naučiť rozumieť navrhovaniu jazykov?Môžete sa zúčastniť kurzu na miestnej vysokej škole, univerzite alebo obchodnej škole alebo vyhľadávať informácie online.
- Môžem na Chromebooku vytvoriť nový programovací jazyk?Samozrejme, pokiaľ máte prístup k Javascriptu, Pythonu, C#alebo inému programovaciemu jazyku. Ak chcete vytvoriť programovací jazyk, potrebujete ďalší programovací jazyk.
- Môžem vytvoriť nový jazyk bez použitia iného programovacieho jazyka?Ostatné programovacie jazyky môžu pomôcť určiť syntax (pravidlá) vo vašom programovacom jazyku. Pomôže to naučiť sa jazyky Java, C ++, Python atď. Programovacie jazyky sú určené na riešenie problémov, preto sa na ne zamerajte, keď pracujete na svojom.
- Na čom môžem testovať programovací jazyk? Aké nástroje môžem použiť?Vytvorte niekoľko príkladov, na ktorých môžete otestovať svoj prekladač/tlmočník. Začnite jednoducho a potom sa postupne zvyšujte. Potom použijete nástroj na testovanie, existuje mnoho bezplatných nástrojov na použitie, napríklad JUnit pre Javu, Jest pre Javascript a Unittest pre Python.
- Ktorých je 5 najlepších programovacích jazykov?Neexistuje „najlepší“ programovací jazyk. Každý programovací jazyk má svoje silné a slabé stránky. Je na vývojárovi, aby na základe týchto silných a slabých stránok určil, či programovací jazyk vyhovuje jeho projektu.
- Ako zverejním programovací jazyk?Mali by ste vytvoriť webovú stránku, ktorá, ak ste oboznámení s kódovaním, môže byť vykonaná veľmi lacno, alebo si môžete trochu priplatiť a získať editor webových stránok typu drag and drop. Mali by ste napísať všetko o tom, ako používať kód na webovej stránke. Potom by ste to mali zdieľať na fórach a stránkach sociálnych médií. Ak ste vo svojom jazyku vytvorili skutočný program, môže to pomôcť, pretože ľudia to vidia ako dobrý jazyk.
- Ako sa môžem začať učiť programovací jazyk?sprievodca má na to niekoľko skvelých článkov, ako napríklad Začnite sa učiť počítačové programovanie, Naučte sa programovací jazyk a Začnite sa učiť programovať. Keď si vyberiete jazyk, ktorý je pre vaše potreby vhodný, sprievodca má návody aj na programovacie jazyky.