Forth (programovací jazyk)

Forth
Paradigmaimperativní (procedurální), strukturovaný
Vznik1969
AutorCharles H. Moore
Typová kontrolabeztypovost
Ovlivnil jazykyPostScript, Joy

Forth je programovací jazyk, který se v dnešní době používá zejména ve vestavěných (embedded) systémech a real-time prostředích. Jazyk Forth vyvinul roku 1969 Charles H. Moore, který je jednou z významných osobností, jež se podílely na rozvoji výpočetní techniky.

Historie[editovat | editovat zdroj]

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.

Tento člověk se jmenuje Charles „Chuck“ Moore a dodnes patří mezi zajímavé a současně velmi rozporuplné osobnosti, které se podílely na rozvoji výpočetní techniky, zejména vestavěných (embedded) řídících systémů a systémů běžících v reálném čase. Moore byl prý překvapen, když zjistil, že systém, který vyvinul pro své potřeby, používají i další lidé, kterým v jejich práci vyhovuje více než v té době komerčně prosazovaný Fortran.

Do značně heterogenního prostředí počítačů a operačních systémů sedmdesátých let přišel Moore se svým jazykem (či lépe řečeno celou vývojovou platformou) Forth. Vývojové prostředí Forthu obsahovalo interaktivní editor, interpret jazyka Forth a univerzální vazbu na assembler upravený na právě provozovaný systém. Toto prostředí umožňovalo spouštět souběžně více procesů a současně mohlo v systému nezávisle pracovat až 64 uživatelů, a to i na platformách, jejichž operační systém nebyl multiuživatelský a dokonce ani multitaskový.

Vlastnosti[editovat | editovat zdroj]

Forth je založen na použití dvojice zásobníků. První zásobník se nazývá zásobník operandů, druhý zásobník návratových adres. Prakticky všechny forthovské příkazy ovlivňují položky v jednom nebo obou zásobnících. Pro zápis příkazů i matematických operací je použita postfixová notace, někdy také nazývaná obrácená polská notace (anglicky Reverse Polish Notation). Při tomto způsobu zápisu se nejdříve uvádějí operandy a teprve za nimi následují operátory. Ve Forthu se místo označení operátor nebo funkce používá "slovo".

Příklady[editovat | editovat zdroj]

Jednoduchá aritmetika[editovat | editovat zdroj]

10 20 + ( toto je komentář ) 10 20 * \ toto je jednořádkový komentář 10 20 - ( 10 způsobí vložení čísla 10 na vrchol zásobníku operandů a         slovo - vezme dvě horní čísla ze zásobníku a vrátí na zásobník jejich součet ) 10 20 + 30 * ( zpětné lomítko a závorky jsou také slova, takže musí být             oddělena mezerou od okolních znaků ) 5 4 3 2 1 * / + - 

Vytvoření nového slova[editovat | editovat zdroj]

: print   . \ slovo . vypíše hodnotu na vrcholu zásobníku   cr \ slovo cr vypíše znak konce řádku ; 

Použití nově definovaného slova[editovat | editovat zdroj]

10 print 1 2 + print 1 2 3 * - print 

Základní slova pro práci se zásobníkem[editovat | editovat zdroj]

1 2 swap \ zásobník: 2 1 drop \ zásobník: 2 dup \ zásobník: 2 2 drop drop \ zásobník: 1 2 3 rot \ zásobník: 2 3 1 over \ zásobník: 2 3 3 1 

Řídící struktury[editovat | editovat zdroj]

Podmínka[editovat | editovat zdroj]

10 20 > if   20 . else \ větev else je nepovinná   10 . then 

Počítaná smyčka[editovat | editovat zdroj]

\ tento cyklus vypíše čísla od 1 do 10 10 1 do ( první argument slova do udává, kolikrát se bude cyklus opakovat         druhý udává počáteční hodnotu počitadla )     i . cr \ slovo i vloží na vrchol zásobníku hodnotu počitadla loop 

Cyklus while-do[editovat | editovat zdroj]

\ tento cyklus vypíše čísla od 1 do 10 0 begin     dup 10 < while     1 +     dup . cr repeat drop 

Cyklus s podmínkou na konci[editovat | editovat zdroj]

\ vypočítá pomocí Euklidova algoritmu největší společný dělitel ze dvou čísel : gcd     begin         swap over mod         dup 0 = \ podmínka     until \ opakuje se dokud je podmínka nepravdivá     drop ; 

Nekonečný cyklus[editovat | editovat zdroj]

\ tento cyklus vypíše čísla od 1 do 10 0 begin     1 +     dup . cr     dup 10 > if         abort \ slovo abort ukončí smyčku     then again 

Externí odkazy[editovat | editovat zdroj]