Sok embernek nehézségei vagy frusztrációi vannak a mindennap használt programozási nyelvekkel kapcsolatban. Egyesek azt akarják, hogy a dolgokat absztraktabban kezeljék, míg mások nem szeretik azokat a funkciókat megvalósítani, amelyekről azt szeretnék, hogy „szabványosak” legyenek. Akár informatikai szakember, akár csak hobbi, sokszor előfordulhat, hogy új programozási nyelvet szeretne létrehozni.
Lépések
1. lépés: Ismerkedjen meg a technológiával
Nem tud programozási nyelvet létrehozni, ha nem ismeri a számítógép használatát.
2. lépés: Ismerje meg a terminológiát
A fordítóírók gyakran használnak ismeretlen terminológiát. Mielőtt folytatná, olvassa el a fordítókat. Feltétlenül tudjon mindent, amit tudnia kell.
3. lépés. Döntse el, milyen problémát old meg a nyelve
Tartományspecifikus problémát old meg, vagy általános célú nyelvet használ?
4. lépés Gondolja át nyelvének szemantikáját és fogalmait
- Megengedi a közvetlen mutatóhozzáférést, vagy sem?
- Melyek az Ön nyelvének adattípusai?
- Statikus vagy dinamikus nyelv?
- Mi a memóriamodellje? Szemétgyűjtőt vagy manuális memóriakezelést fog használni? (Ha szemétgyűjtőt használ, akkor készüljön fel annak írására, vagy illesszen meg egy meglévőt az Ön nyelvéhez.)
- Hogyan fogják kezelni az egyidejűséget? Egy egyszerű menetes/záró modellt vagy valami összetettebbet fog használni, mint Linda vagy a színész modell? (Mivel manapság a számítógépek több maggal rendelkeznek.)
- Vannak primitív funkciók a nyelvben, vagy minden könyvtárból származik?
- Mi az Ön nyelvének paradigmája vagy paradigmái? Funkcionális? Objektum orientált? Prototípus (mint a JavaScript)? Szemlélet-orientált? Sablon orientált? Vagy valami teljesen új?
- Hogyan fog az Ön nyelve kapcsolódni a meglévő könyvtárakhoz és nyelvekhez (főleg C)? Ez a pont fontos, ha tartományspecifikus nyelvet épít.
- Végül, ezekre a kérdésekre adott válaszok egy része a második lépésben megválaszolásra kerül, és segít a következő lépés megválaszolásában.
5. lépés Gondoljon néhány konkrét feladatra, amelyeket valaki szeretne az Ön nyelvével elvégezni
Például: „lehet, hogy egy robotot egy vonal követésére akarnak irányítani”, vagy „viszonylag hordozható asztali programokat akarnak létrehozni benne”, vagy „esetleg webes alkalmazásokat akarnak vele létrehozni”.
6. lépés Kísérletezzen a fenti példák szintaktikai ötleteivel (a nyelv szövegével)
Vigyázzon arra, hogy nyelvét a kontextusmentes nyelvkategóriában tartsa, vagy valami benne. Az elemző generátor és később értékelni fogja
7. lépés. Írjon ki egy hivatalos nyelvtant a szintaxishoz
8. lépés. Döntse el, hogy a nyelvet tolmácsolják vagy fordítják
Ez azt jelenti, hogy az értelmezett világban a felhasználó általában szerkesztőprogramban szerkeszti a programját, és közvetlenül a tolmácson futtatja; míg a fordított világban a felhasználó szerkeszteni fogja a programját, lefordítja azt, elmenti valahol a kapott végrehajtható fájlt, és futtatja.
9. lépés. Írja be az előlapi szkennert és az elemzőt, vagy keressen egy eszközt, amely segít ebben
Gondoljon arra is, hogy a fordító/tolmács hogyan figyelmezteti a felhasználót a hibás programokról és a szintaktikai hibákról
10. lépés. Az elemző információ használatával írja be az objektumkódot vagy egy közbenső ábrázolást
Kérje meg az elemzőt, hogy hozzon létre egy AST -t, majd hozza létre az objektumkódját az AST -ből három címkód vagy annak nagy testvére SSA használatával, majd hozzon létre egy szimbólumtáblát a funkciók, a globális változók stb.
Ezenkívül nyelvétől függően virtuális mutatótáblázatokat vagy információs táblákat is létrehozhat osztályai számára (a reflexió vagy az RTTI támogatása érdekében)
11. lépés. Írja le a végrehajtót vagy a kódgenerátort, amely mindent összeköt
12. lépés Írjon sok tesztprogramot a nyelv tesztelésére
Olyan programokat szeretne létrehozni, amelyek hangsúlyozzák a formális nyelvtan terhét, annak érdekében, hogy lássa, hogy a fordítója mindent elfogad, ami a definíción belül van, és elutasít mindent, ami rajta kívül van
13. lépés. Gondolja át, hogyan fogja a felhasználó hibakeresni saját programjait
14. lépés. Ha a nyelve szabványos könyvtárat használ, akkor azt meg kell írnia
Egy szemétszedővel vagy más futási funkciókkal együtt, ha szüksége van rá.
Pontosabban, ha fordítót ír, szüksége lesz arra a kódra, amelyet az operációs rendszer végrehajt, hogy elkezdhesse futtatni a felhasználói kódot (például az összes globális változó kiosztása)
15. lépés. Nyilvánosságra hozza nyelvét, a hozzá tartozó specifikációkat és néhány példát arra vonatkozóan, hogy mit tehet benne
Ne felejtse el dokumentálni, hogyan integrálható a meglévő könyvtárakkal, nyelvekkel, és hogyan kell használni a futásidejű szolgáltatásokat és/vagy a szabványos könyvtárat
Videó - A szolgáltatás használatával bizonyos információk megoszthatók a YouTube -lal
Tippek
- Kezdje azzal, hogy megtervezi a nyelvet, és ne írjon semmilyen kódot, amíg meg nem elégedett, és nem válaszolt a tervezéssel kapcsolatos kérdésekre vagy problémákra (vagy legtöbbjére), mivel könnyebb korábban megváltoztatni a mintát.
- Ismerje meg a célplatformját (operációs rendszerét és könyvtárait) a fordító/tolmács számára, elvégre használni fogja és manipulálja.
Figyelmeztetések
- Gondolja át, hogy valóban szüksége van -e egy új nyelvre, és milyen újdonságokkal rendelkezik a nyelve, ami más nyelvekkel nem rendelkezik (lehet, hogy a funkciók kombinációja vagy egyetlen szolgáltatás).
- Nehéz nyelveket írni, ha nem tudja, mit csinál. Ez is sok gyakorlást igényel.
- Készüljön fel arra, hogy egy kis időt fordít a nyelvtervezésre, mivel a fordító megírása után és a tervezési ponton túl nem lesz lehetősége nyelvének megváltoztatására.
- Ne próbálja meg több nyelv egyesítésére alapozni a sajátosságait, például azt, hogy az Ön nyelve az X, az Y és a Z nyelv egyesülése lesz. A történelem azt mutatta, hogy az így létrehozott nyelvek soha nem fognak sikeresek lenni, vagy mindenki PL/1 -et programozna valami C helyett.