Založeno:     10.10.2007
Aktualizace: 20.12.2012
FORTH

Úvod Výukové lekce Download
mFC DIOS Forth

   Vítejte,
tyto stránky vznikly v dobrém úmyslu seznámit návštěvníka s programovacím jazykem FORTH, jeho historií, vlastnostmi, syntaxí, strukturou.
V oddíle Výukové lekce jsou vysvětlovány příkazy jazyka Forth, v oddíle Download jsou odkazy na články, dokumenty, programy.
Stránky budou postupně doplňovány.

   Historie a vlastnosti

   Kořeny jazyka Forth sahají do počátku 60.let, kdy si Charles H. Moore (*1938) v astrofyzikalní observatoři pro zjednodušení práce, zrychlení výpočtů, vytvořil interpreter slov oddělených mezerami. V polovině 60.let doplňuje interpreter o zásobník, proměnné, definici procedur, vstup/výstup. Kolem roku 1970 se objevuje označení FORTH (název je od slova FOURTH-čtvrtý, jazyk pro příští, čtvrtou generaci malých počítačů). Forth tedy nevznikl akademickým rozhodnutím, vytvářel ho jeden člověk, jedno desetiletí, jako pomůcku pro práci. První kompletní samostatnou aplikací Forthu je v roce 1971 řízení radioteleskopu pro NRAO. Další aplikace jsou v řízení antén, teleskopů, databáze, zpracování obrazu.

   Forth je vyšší programovací jazyk, interaktivní, kompaktní, nemusí mít operační systém, vývojové prostředí je obsaženo již ve Forthu. To usnadňuje a zrychluje vývoj aplikací. Je vhodný do vestavěných (embedded) systémů a real-time aplikací. Ke stroji připojíme terminál a můžeme dodefinovat jeho další funkce. Není potřeba počítač se stovkami MB operačního systému, editorem, kompilátorem. Forth si vystačí s několika kB paměti, je dokonce úspornější než assembler. První ZX81 měla část systému ve Forthu, později se přepsala do assembleru (rychlejší, ale delší). V této době se pamětí šetřilo, počítala
se v kilobajtech.

   Chucka Moora překvapilo, jak je Forth snadno přenositelný, stačilo přepsat několik desítek primitiv (základní slova definovaná v assembleru). V sedm-
desátých letech přenesl Forth na osmnáct různých procesorů.

   V roce 1973 Moore, Rather a Conklin založili firmu Forth, Inc. na komerční využití Forthu. Jejich nový produkt se jmenoval microForth a byl implementován na rozšířené 8-bitové mikroprocesory Intel 8080, Motorola 6800, Zilog Z80. V roce 1978 se Bill Ragsdale obrátil na Forth, Inc., aby přenesli microForth na procesor 6502. Neúspěšně, pro firmu to nebylo ekonomicky zajímavé, což vedlo ke vzniku Forth Interest Group (FIG). Jejich 6502 FIG Forth Model se postupně rozšiřuje na další procesory a rozšiřuje se i počet členů FIG na tisíce. Ve snaze o vytvoření standardu vznikají FORTH-77, FORTH-79, FORTH-83, ANS Forth (od r.1987).

   Výraznou vlastností Forthu je postfixová notace, RPN (reverzní polská notace). Umožňuje, aby Forth byl tak jednoduchý, jak je, ale zhoršuje čitelnost zdrojového kódu. Nejdříve jsou uvedeny operandy, pak operace, která je zpracuje:
1 2 3 * +   je zápis pro   2*3+1
z 4 < if      je zápis pro    if z<4

   Forth, to jsou slova, samá slova…Konstanty, proměnné, funkce, větvení, překladač všechno jsou slova. Nová slova se definují z již existujících, dokonce si můžeme nadefinovat překladač a určit, jaké se mají vytvořit datové struktury a jak se budou zpracovávat.
: OBVOD + 2* ;     Překladač dvojtečka (COLON) nadefinuje nové slovo OBVOD, provede se součet, výsledek se vynásobí dvěma, středník
                                 ukončuje překlad.
5 10 OBVOD .        Spočítání obvodu, provede se (5+10)*2 a tečka zobrazí výsledek 30

   Na závěr, co je velmi charakteristické pro Forth, je používání zásobníků. Veškeré operace s daty probíhají přes zásobník LIFO, což je datová struktura, do které se data ukládají postupně, za sebou a při čtení se odebírají také postupně, od posledně zapsaného. Představme si to, jako když stavíme z kostek komín a zase ho rozebíráme. Vždy je dostupná jen kostka na vrchu. Konstanty, proměnné, ukazatele – vše jde přes zásobník. Vedle datového zásobníku DATA STACK je tu RETURN STACK, zásobník návratových adres. Při vnořování do slov, se musí uložit adresa, od které se po návratu bude číst další slovo. Jeho využití je širší, při smyčkách, definicích, přesunech mezi datovým a návratovým zásobníkem. U 8-bitových a 16-bitových procesorů je šířka dat 16bitů, u 32-bitových 32 bitů.
____________________________________________________________________________________________________________________
26.10.2007 - Luboš Pěkný, čerpáno z www.forth.com, www.forth.org, Pavel Tišnovský: Programovací jazyk Forth a zásobníkové procesory, X3J14 dpANS-6.