Ako vytvoriť programovací jazyk: 15 krokov (s obrázkami)

Obsah:

Ako vytvoriť programovací jazyk: 15 krokov (s obrázkami)
Ako vytvoriť programovací jazyk: 15 krokov (s obrázkami)

Video: Ako vytvoriť programovací jazyk: 15 krokov (s obrázkami)

Video: Ako vytvoriť programovací jazyk: 15 krokov (s obrázkami)
Video: Как приклеить подошву к обуви 2024, Smieť
Anonim

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

Vytvorte programovací jazyk Krok 1
Vytvorte programovací jazyk Krok 1

Krok 1. Zoznámte sa s technológiou

Programovací jazyk nemôžete vytvoriť, ak neviete, ako používať počítač.

Vytvorte programovací jazyk, krok 2
Vytvorte programovací jazyk, krok 2

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ť.

Vytvorte programovací jazyk, krok 3
Vytvorte programovací jazyk, krok 3

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?

Vytvorte programovací jazyk Krok 4
Vytvorte programovací jazyk Krok 4

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.
Vytvorte programovací jazyk, krok 5
Vytvorte programovací jazyk, krok 5

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“.

Vytvorte programovací jazyk, krok 6
Vytvorte programovací jazyk, krok 6

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

Vytvorte programovací jazyk Krok 7
Vytvorte programovací jazyk Krok 7

Krok 7. Napíšte formálnu gramatiku syntaxe

Vytvorte programovací jazyk, krok 8
Vytvorte programovací jazyk, krok 8

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í.

Vytvorte programovací jazyk, krok 9
Vytvorte programovací jazyk, krok 9

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

Vytvorte programovací jazyk, krok 10
Vytvorte programovací jazyk, krok 10

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)

Vytvorte programovací jazyk, krok 11
Vytvorte programovací jazyk, krok 11

Krok 11. Napíšte exekútor alebo generátor kódu, ktorý všetko spojí

Vytvorte programovací jazyk, krok 12
Vytvorte programovací jazyk, krok 12

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

Vytvorte programovací jazyk Krok 13
Vytvorte programovací jazyk Krok 13

Krok 13. Zvážte, ako bude používateľ ladiť svoje vlastné programy

Vytvorte programovací jazyk, krok 14
Vytvorte programovací jazyk, krok 14

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é)

Vytvorte programovací jazyk, krok 15
Vytvorte programovací jazyk, krok 15

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.

Odporúča: