Forth (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.
Paradigma | imperativní (procedurální), strukturovaný |
---|---|
Vznik | 1969 |
Autor | Charles H. Moore |
Typová kontrola | beztypovost |
Ovlivnil jazyky | PostScript, Joy |
Historie
editovatKolem 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
editovatForth 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
editovatJednoduchá aritmetika
editovat10 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
editovat10 print
1 2 + print
1 2 3 * - print
Základní slova pro práci se zásobníkem
editovat1 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
editovatPodmínka
editovat10 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
\ 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
;
\ 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- Obrázky, zvuky či videa k tématu Forth na Wikimedia Commons
- Seriál Forth z časopisu Amatérské radio
- Seriál o programovacím jazyku Forth na Root.cz
- Forth.cz