FORTH
A HupWiki-ből...
Ismertető
Programozási nyelv, mely nagyrészt verem műveletekre épít. Negyedik generációs programozási nyelv, innen lenne a fourth név, de - az anekdota szerint - a rendszer, amin fejlesztették, csak ötbetűs nevet tett lehetővé, ezért lett végül Forth a neve.
Általános célú felhasználásra sosem terjedt el, de van sok terület, ahol előszeretettel használják. Ilyen például a RISC gépek firmware-jei, pontosabban azok, amelyek valamilyen rokonságban állnak az OpenFirmware specifikációval.
Továbbá vannak akik Forth programból csinálnak egyszerű áramköröket.
Gyorstalpaló
Egy FORTH program forráskódja kétféle dologból áll:
- szavak (= utasítások)
- számok
A klasszikus FORTH rendszer pedig a következő részekből épül fel:
- belső értelmező (inner interpreter)
- külső avagy szöveges értelmező (outer interpreter)
- fordító (compiler)
- szótár
- verem
Az interpreter amíg nem talál utasítást, addig minden adatot lepakol a stackre, ha pedig utasítást talál, akkor végrehajtja azt, az utasítás pedig bármit kezdhet a vermen található adatokkal, mert a teljes veremtartalom az ő paramétereinek tekinthető. Ennek előnye, hogy se a programozónak, se az editornak, se az interpreternek, se a compilernek nem kell törődnie a paraméterek - sorrendben - specifikálásával, syntax highlight-olásával, ...
Példák:
: a 1 b ;
A ":" nevű szót az interpreter végrehajtja, aminek hatására a rendszer compiler üzemmódba kapcsol, s egyúttal el is lopja a compiler elől a következő szót és ilyen néven elkezd a szótárban egy új definiciót.
Az "1" sztringet a compiler megpróbálja kikeresni a szótárból, ám mivel alapesetben nem létezik, számmá alakítja és az "a" szó definíciójához hozzáilleszti azt a "gépi kódot", aminek hatására majd az "a" szó végrehajtásakor az 1-es szám fog a veremre kerülni.
A "b" szót felismerve a compiler olyan kódot ad az "a" szó definiciójához, hogy az "a" szó futásakor végrehajtódjon a "b" szó.
A ";" nevű szó meg van jelölve egy speciális immediate nevű flag-gel, aminek hatására a compiler nem ragasztja hozzá az "a" szó definiciójához, hanem végrehajtja azt, miként ez interpreter módban is történne. Végrehajtásának eredményeképpen pedig a rendszer visszaáll interpreter módba és lezárja az "a" szó definicióját. Ennek eredményeképp az "a" szó azonnal használható. Tehát mind az interpreter, mind a compiler rá fog találni a definíciójára a szótárban.
FIXME onetom!! :)