Miről is szól a történet?
Jön az input (pl. soros porton messziről és lassan), beolvassuk az első szót (szó = ami nem whitespace). ha szerepel a szótárban akkor végrehajtjuk. Ha nem szerepel, akkor az szám, értékét berakjuk a stack tetejére. Aztán kezdődik minden elölről.
Szótár: szavak neve és a hozzájuk tartozó láncolt kód (kb. gépi kódú szubrutinok címe).
Az alap szókészlet gépi kódban implementálva, minden más láncolt kódban. Természetesen menet közben saját magát módosítja. A forth "programozás" = új szótárbejegyzés készítése.
Aztán ez egészen elfajulhat: a legelterjedtebb forth variáns a PostScript.
Érdeklődőknek:
- LJ67 blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
"May the FORTH be with you!"
- A hozzászóláshoz be kell jelentkezni
nem véletlen az úrkutatás hajnalán született
<Troll mode on >Ez akkor valami vatikáni project? :D </Troll mode off>
"The only valid measurement of code quality: WTFs/min"
- A hozzászóláshoz be kell jelentkezni
Nem. De érdemes ezt elolvasni:
"Share what you know. Learn what you don't."
- A hozzászóláshoz be kell jelentkezni
Ez egyébként egy „rejtett hibajelzés„ volt... észrevetted?
- A hozzászóláshoz be kell jelentkezni
Mérhetetlen előnye, hogy ha másik mikrovezérlőre kellett átvándorolni, akkor egy kisebb assembly meló árán implementáltad a nagyon egyszerű FORTH alapot és innentől ráborítottad a bevált FORTH kódot.
Ezáltal nagyon könnyű volt egyik architektúráról a másikra áttenni a szoftvert, az algoritmus pedig mindeközben garantáltan változatlan maradt.
Mondhatnánk, hogy de a C az jobb. Igen, a C struktúráltabb nyelv. Viszont ha van egy egyedi kis procid, amire nincs stabil C fordító, akkor a lehetőségeid:
a.) assembly: nehézkes, a kódbázisod pedig odaragad, nem hordozható
b.) C fordító: igen sok erődet elviszi, amíg a C fordítót hibátlanra megírod
c.) kettő között jön képbe a FORTH
Hallomásból tudom, hogy az űrkutatáson kívül a hadászati rakéták tűzvezetése, stb célokra is előszeretettel használták. A FORTH környezetet könnyen implementálták az új procira, a rakétatudósok algoritmusát pedig a FORTH hordozta.
Viszont a felhasználási módjai terén nem találok információt.
a.) teljes FORTH implementációval, interpreterrel stb. hol és mikor dolgoztak? Mindenhol, vagy volt ahol a b.) eset játszott?
b.) szeparálva a FORTH fordító és a "repülő példány" minimalizált, hibatűrő mikrovezérlős cuccába már csak a bytekód és annak nagyon rövid futtatókörnyezete került? Lásd: https://hup.hu/node/174397
Illetve milyen esetben volt interpretált feldolgozású és milyen esetben készült bytekód a FORTH felhasználása során? Alapból az új kulcsszavak ( : kulcsszó .... ; ) mindig lefordultak bytekóddá?
Egyébként nyelvet még a 2010-es években is fejlesztették: http://www.forth200x.org/documents/forth-2012.pdf
Ha valaki ismeri a múltját, örömmel venném ha a különböző felhasználások hogyanjáról írna néhány hasznos sort.
- A hozzászóláshoz be kell jelentkezni
milyen esetben volt interpretált feldolgozású és milyen esetben készült bytekód a FORTH felhasználása során?
Az interpretáltság és a byte-kód nem zárják ki egymást. A byte-kódot már Billy Gates is alkalmazta az ALTAIR BASIC interpretere megalkotásánál.
- A hozzászóláshoz be kell jelentkezni
A kérdés nem erre irányult, hanem arra hogy
- hol alkalmaztak teljes FORTH implementációt és ebben az esetben az milyen ökölszabály alapján döntött a környezet az előfordítás + bytekód futtatás vagy szimpla értelmezés között?
- és volt-e eset, ahol kizárólag a bytekód futtatót implementálták. Ennek előnye, hogy ide még kevesebb memória kellett és egyúttal kisebb lett a memóriahiba kockázata is.
- A hozzászóláshoz be kell jelentkezni
A fordított kód helyett a FORTH alapvetően az ún. láncolt kód megoldást használta (ez tkp. egyfajta korai virtuális gépnek is felfogható):
https://en.wikipedia.org/wiki/Threaded_code
Ez segítette a könnyebb átvihetőséget is.
Emellett sok olyan publikus megoldás született, amelyek könnyen hozzáférhetők:
http://forth.org/tutorials.html
illetve
"Share what you know. Learn what you don't."
- A hozzászóláshoz be kell jelentkezni
milyen ökölszabály alapján döntött a környezet az előfordítás + bytekód futtatás vagy szimpla értelmezés között?
Nekem két feltétel jutott eszembe. Az egyik a kód hordozhatósága. A másik az alkalmazási környezet milyensége. Ahol beágyazott a hardver és kevés a memória, ott a byte-kód a kézenfekvő megoldás. Persze ezt felülírhatják speciális szempontok, de általánosságban ilyen helyeken lehet hozadéka a byte-kódnak.
- A hozzászóláshoz be kell jelentkezni
Powermac gépekben bootoláskor az openfirmwarebe belépve szintén forth található.
- A hozzászóláshoz be kell jelentkezni
Ahogyan a régebbi SUN gépekben is...
"Share what you know. Learn what you don't."
- A hozzászóláshoz be kell jelentkezni
Elég szemléletes cikk:
- A hozzászóláshoz be kell jelentkezni