Forth (programovací jazyk)
Paradigma | imperativní (procedurální), strukturovaný |
---|---|
Vznik | 1969 |
Autor | Charles H. Moore |
Typová kontrola | beztypovost |
Ovlivnil jazyky | PostScript, 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
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
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
Jednoduchá aritmetika
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
: print . \ slovo . vypíše hodnotu na vrcholu zásobníku cr \ slovo cr vypíše znak konce řádku ;
Použití nově definovaného slova
10 print 1 2 + print 1 2 3 * - print
Základní slova pro práci se zásobníkem
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
Podmínka
10 20 > if 20 . else \ větev else je nepovinná 10 . then
Počítaná smyčka
\ 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
\ 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
\ 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
\ 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
- 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
Programovací jazyky | |
---|---|
abecední seznam programovacích jazyků | |
multiparadigmatické | |
strukturované (procedurální) | |
objektové | BETA • Boo • C# • Eiffel • Java (Groovy, Kotlin) • JavaScript • Object Pascal • Objective-C • Smalltalk • VB.NET |
funkcionální | Clean • Ceylon • Erlang • Haskell • J • Lisp • Wolfram Language / Mathematica • Miranda • OCaml • Scheme |
dotazovací | |
logické | Gödel • Prolog |
výukové | |
ezoterické | |
historické | |
další | ABAP • AppleScript • ColdFusion • JSA • Julia • MATLAB • R • Visual Basic (VBScript) • Vimscript • Visual FoxPro |
skriptovací/strojový kód • kompilované/interpretované • interaktivní/dávkové • WYSIWYG |