Forth (programovací jazyk)

programovací jazyk

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.

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

Historie editovat

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

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

Jednoduchá aritmetika editovat

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

: 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

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

Základní slova pro práci se zásobníkem editovat

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

Podmínka editovat

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

Počítaná smyčka editovat

\ 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

\ 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

\ 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

\ 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