30年婚姻叫什么婚
Paradigma | imperativní (procedurální), strukturovany |
---|---|
Vznik | 1969 |
Autor | Charles H. Moore |
Typová kontrola | beztypovost |
Ovlivnil jazyky | PostScript, Joy |
Forth je programovací jazyk, ktery se v dne?ní době pou?ívá zejména ve vestavěnych (embedded) systémech a real-time prost?edích. Jazyk Forth vyvinul roku 1969 Charles H. Moore, ktery je jednou z vyznamnych osobností, je? se podílely na rozvoji vypo?etní techniky.
Historie
[editovat | editovat zdroj]Kolem roku 1970 se objevuje ozna?ení FORTH (název je od slova FOURTH-?tvrty, jazyk pro p?í?tí, ?tvrtou generaci malych po?íta??). Forth tedy nevznikl akademickym 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 vypo?etní techniky, zejména vestavěnych (embedded) ?ídících systém? a systém? bě?ících v reálném ?ase. Moore byl pry p?ekvapen, kdy? zjistil, ?e systém, ktery vyvinul pro své pot?eby, pou?ívají i dal?í lidé, kterym v jejich práci vyhovuje více ne? v té době komer?ně prosazovany Fortran.
Do zna?ně heterogenního prost?edí po?íta?? a opera?ních systém? sedmdesátych let p?i?el Moore se svym jazykem (?i lépe ?e?eno celou vyvojovou platformou) Forth. Vyvojové prost?edí Forthu obsahovalo interaktivní editor, interpret jazyka Forth a univerzální vazbu na assembler upraveny na právě provozovany 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?ivatelsky a dokonce ani multitaskovy.
Vlastnosti
[editovat | editovat zdroj]Forth je zalo?en na pou?ití dvojice zásobník?. První zásobník se nazyvá zásobník operand?, druhy zásobník návratovych 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 matematickych operací je pou?ita postfixová notace, někdy také nazyvaná 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?ádkovy 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í byt
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
11 1 do ( první argument slova do je hodnota se kterou se porovnáná index - musí byt men?í -
druhy je po?áte?ní hodnota indexu )
i . cr \ slovo i vlo?í na vrchol zásobníku index
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?ny 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 | editovat zdroj]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