Forth je neobvyklý jazyk. Je to především interpret a má rozhraní příkazového řádku, takže jej lze používat v reálném čase. Má však také schopnost přijímat sady kódu a kompilovat je. Je to tedy něco jako hybrid.
Z tohoto důvodu se Forth běžně používá na hardwaru, který nemá tradiční operační systém. Je také široce používán k ovládání strojů a byl použit při výzkumu vesmíru – dokonce i na sondě Philae, která přistála na kometě 67P/Churyumov-Gerasimenko.
Historie
Forth vyvinul Charles Moore počínaje rokem 1968 při programování grafiky ve společnosti Mohasco Industries. První kompletní implementace jazyka Forth však přišla až v roce 1971, kdy Moore vytvořil samostatný systém pro ovládání 11metrového teleskopu na americké Národní radioastronomické observatoři (NRAO).
Předchozí verze jazyka Forth upoutaly pozornost programátorské komunity. V tomto okamžiku se však stal velmi populárním v astronomické komunitě. Proto Moore v roce 1973 založil se svými kolegy z NRAO Elizabeth Ratherovou a Edwardem Conklinem společnost FORTH, Inc.
Společnost portovala program na mnoho různých systémů. A FORTH, Inc. je i nadále významnou společností, která poskytuje produkty související s jazykem Forth lidem v obchodě, akademické sféře a státní správě.
Přehled jazyka Forth
Programovací jazyk Forth má řadu jedinečných aspektů. Zde probereme ty nejdůležitější.
Vlastnosti jazyka Forth
Forth nabízí mnoho jedinečných vlastností:
- Interaktivní programování
- Vytváření kompilovaných rozšíření jazyka zvaných „slova“
- Sklady a reverzní polská notace
- Přímé spojení mezi uživatelem a hardwarem.
Reverzní polská notace
Forth provádí matematické výpočty pomocí reverzní polské notace. To závisí na ukládání čísel do zásobníku.
Připraví výpočet: 2 + 3
. Ve Forthu by se to provedlo tak, že bychom na zásobník umístili číslo 2, pak bychom na zásobník umístili číslo 3 a pak bychom je sečetli. Vypadalo by to asi takto: 2 3 +
.
Vypadá to trochu divně, ale pro počítač je to jednodušší, protože takto počítače skutečně provádějí výpočty. A jakmile si na to jako programátor zvyknete, stane se to zcela přirozeným.
Kromě toho nejsou potřeba závorky. Vezměme si následující dva příklady. (Poznámka: znakem zpětného lomítka začíná komentář.)
2 3 + 5 * This is the same as (2 + 3) * 52 3 5 * + This is the same as 2 + 3 * 5
V prvním příkladu je na zásobník posunuta číslice 2 a za ní číslice 3. Číslice 2 je tedy druhá v zásobníku a číslice 3 je první. Operátor „+“ je aplikován na první dva prvky zásobníku. Tím se tyto dva prvky ze zásobníku odstraní a na vrcholu zásobníku zůstane 5 (2 + 3).
Poté na zásobník přisuneme položku 5. Tím umístíme 5 na první a druhou pozici zásobníku. Nakonec použijeme operátor „*“, čímž na vrchol zásobníku umístíme 25 (5 * 5).
V druhém příkladu umístíme na zásobník 2, 3 a 5, takže 5 je na první pozici, 3 na druhé a 2 na třetí. Poté aplikujeme operátor „*“ na dva horní prvky zásobníku (5 * 3), což vede k umístění 15 na vrchol zásobníku.
V tomto okamžiku je 15 na první pozici a 2 na druhé pozici. Po použití operátoru + zůstane na vrcholu zásobníku 17 (15 + 2).
Ukázkový program
Následující program je velmi jednoduchý, ale demonstruje mnoho z toho, co se v jazyce děje.
: OUTMATH Output a mathematical calculation ." We will now calculate: (2 + 3) * 5" CR 2 3 + 5 * ." This equals: " . CR ; OUTMATH
První věc, kterou tento program dělá, je definice funkce s názvem OUTMATH
. Řádky, které po ní následují, jsou součástí funkce až do řádku, který končí středníkem. První řádek vypíše text: „Nyní budeme počítat: (2 + 3) * 5“ a následuje za ním návrat vozíku.
Následující řádek provede výpočet, o kterém jsme hovořili výše, a výsledkem je umístění čísla 25 na vrchol zásobníku. Poslední řádek funkce vypisuje: „To se rovná: „, za kterým následuje hodnota na vrcholu zásobníku (reprezentovaná znakem „.“) a návrat vozíku.
Poté funkci jednoduše spustíme. Když tedy program běží, jeho výstupem je:
We will now calculate: (2 + 3) * 5This equals: 25
Učení jazyka Forth
Pro většinu programátorů je to nový způsob myšlení. Je však překvapivé, jak přirozený se zdá, jakmile s ním začnete pracovat. Zde je několik výukových programů a knih, které vám pomohou s jazykem začít pracovat.
Výukové programy pro jazyk Forth
Na internetu najdete spoustu výukových programů. Protože jazyk Forth je pro programátory, kteří v něm nepracují, cizí a zároveň je pro stávající uživatele samozřejmý, mnoho výukových materiálů zamlčuje věci, které mohou být pro začátečníky matoucí. Tyto výukové programy tento problém nemají.
- Snadný Forth: tato krátká e-kniha je vynikajícím úvodem. Její jedinou nevýhodou je, že neobsahuje mnoho příkladů. Proto se podívejte na některé z příkladů níže.
- A Beginner’s Guide to Forth: toto je další dobrý úvod. Je trochu techničtější, ale obsahuje více příkladů.
- And So Forth…: toto je velmi důkladný úvod do Forthu – téměř stejně dobrý jako kniha.
Forth Books
Často je snazší naučit se nový jazyk, když si pořídíte knihu, která vás provede krok za krokem. Existuje spousta dobrých knih o Forthu – zejména z 80. let, kdy se Forth skutečně rozjel. Zde je sbírka těch nejlepších a nejdůležitějších.
- Objevte Forth: Objevte jazyk Forth (1982) od Thoma Hogana: je to dobrý a stručný úvod do jazyka Forth.
- Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals (1982) by Leo Brodie: toto je klasika a skvělý způsob, jak se naučit Forth. Není již v prodeji, ale použité výtisky není těžké sehnat za málo peněz. Je také zdarma k dispozici online. Pokročilí programátoři ve Forthu by se mohli podívat na Brodieho novější knihu Thinking Forth.
- Programming a Problem Oriented Language: Forth – How the Internals Work (2014) od Charlese Moorea: jedná se o Kindle verzi knihy, kterou kdysi dávno napsal sám tvůrce Forthu. Stále poskytuje pronikavý vhled do jazyka, ale není nejlepší volbou pro začátek.
- Forth Programmer’s Handbook (2007) by Elizabeth Rather and Edward Conklin: toto je pokročilejší kniha o Forthu od dalších dvou průkopníků Forthu. Podívejte se také na knihu Ratherové Forth Application Techniques (2006).
Other Resources
- Forth Interest Group: na této stránce najdete nejrůznější zajímavé informace včetně starých historických dokumentů. Bohužel má také mnoho nefunkčních odkazů. Ale i tak stojí za to si ji prohlédnout.
- Odkazy na programy v jazyce Forth: Toto je skvělá sbírka skutečných příkladů programů, jako je tabulkový procesor a řešitel hádanek Sudoku.
- Skupina Forth Google: Toto je velmi aktivní skupina uživatelů jazyka Forth, kteří kladou otázky a odpovídají na ně.
- Forth Subreddit: toto není příliš aktivní fórum, ale stále jsou na něm znalí lidé.
Implementace Forthu
V průběhu let vzniklo mnoho implementací Forthu. Zájmová skupina Forth má dlouhou stránku věnovanou překladačům Forthu. Takže pokud se vám náhodou v garáži povaluje PDP-11, můžete si pro něj pořídit kompilátor Forthu! Ale pro modernější systémy jsou zde běžnější možnosti.
bigFORTH
V polovině 80. let Dietrich Weineck, Georg Rehfeld a Klaus Schleisiek vyvinuli volksFORTH pro 16bitové stroje jako 8086 IBM PC a 6502 Apple, Commodore a Atari.
Nakonec vytvořili 32bitovou verzi pro Atari ST založené na (16bitové sběrnici) 68000. Přestože volksFORTH dělal pokroky, projekt v podstatě zanikl (i když byl později znovu obnoven).
Bernd Paysan se však o tuto verzi volksFORTHu (do té doby nazývanou turboFORTH) zajímal natolik, že z ní vytvořil základ bigFORTHu.
Jeho první verze vyšla pro Atari ST v roce 1990. Do roku 1995 byl bigFORTH portován na 386 a v následujícím roce byl k dispozici pro Windows NT, OS/2 a Linux.
Grafické rozhraní
V té době začal Paysan pracovat na MINOSu. (Technicky se jedná o „MINOS“, ale běžně se mu říká prostě „MINOS“)
Jedná se o grafické rozhraní pro bigFORTH. Možná bude nejjednodušší představit si ho jako „Visual bigFORTH“ podobně jako Visual Basic, protože to je víceméně to, co to je. Poprvé bylo vytvořeno pro systém X-Windows. Brzy však byl k dispozici i pro Windows.
Vývoj bigFORTHu i MINOSu se zřejmě zastavil kolem roku 2010. Oba jsou však snadno dostupné a docela užitečné (bigFORTH je kompatibilní s ANSI). Ve skutečnosti je s MINOSem spousta zábavy.
zdroje pro bigFORTH
Pokud chcete bigFORTH používat nebo pro něj dokonce vyvíjet, budete mít k dispozici všechny potřebné nástroje:
- Zdrojový kód: toto je kód z posledního oficiálního vydání z 22. března 2010, verze 2. Tento zdrojový kód je v angličtině.4.
- Balíček Debianu: snadno instalovatelný balíček pro jakoukoli linuxovou distribuci založenou na Debianu (např. Ubuntu, Mint). Instaluje se do /usr/local/bin a obsahuje MINOS, i když se jmenuje xbigforth.
- Samoinstalační spustitelný soubor pro Windows: stejný jako balíček Debian, ale pro Windows. MINOS se dokonce jmenuje xbigforth.exe.
- Dokumentace (PDF): tato téměř 300stránková kniha slouží jako výukový program a reference, jejímž autorem je JL Bezemer. Velká část je věnována obecnému Forthu a je z ní převzata kniha „And So Forth…“.
- Domovská stránka Bernda Paysana: na této stránce najdete mnoho zajímavých informací a příkladů týkajících se Forthu. Za zmínku stojí zejména Paysanův značkovací jazyk založený na Forthu.
- bigFORTH Repository: konečný cíl pro všechny vaše potřeby bigFORTHu.
Gforth
Gforth je GNU implementace Forthu. Má význačný rodokmen.
Projekt Gforth byl zahájen v roce 1992 tvůrci bigFORTH Berndem Paysanem a Antonem Ertlem za podstatného přispění Jense Wilkeho.
Jedná se o kombinaci bigFORTH a mnohem staršího fig-FORTH (viz níže). Jeho historie je však pohnutá, protože bigFORTH vznikl z volksFORTH, který byl založen na fig-FORTH.
Jelikož se jedná o projekt GNU, bylo na něm od jeho vzniku odvedeno velké množství práce. Nyní je zcela kompatibilní s ANSI a dosáhl všech svých původních cílů. Nejnovější verze je 0.7.3, přičemž poslední záznam (od Paysana) pochází z 25. února 2013.
Z hlediska svobodných implementací jazyka Forth je Gforth nejpoužívanější. Částečně je to dáno jen tím, že je součástí projektu GNU a jeho dostupností. Ale také proto, že je výkonný a rychlý.
Zdroje Gforthu
Gforth má všechny zdroje, které potřebujete k tomu, abyste ho mohli použít, jak potřebujete:
- Zdrojový kód: Na této stránce najdete zdrojový kód Gforthu od verze 0.2.1 až po současnou, 0.7.3.
- Balíčky pro Debian: Pro distribuci Debian Linux jsou k dispozici různé balíčky. Všimněte si, že v závislosti na vybraném balíčku může být nutné nejprve nainstalovat jeden nebo více dalších balíčků.
- Samoinstalační spustitelný soubor pro Windows: jedná se o starší (0.7.0) verzi Gforthu, ale rychlý způsob, jak začít.
- Dokumentace (PDF): tato 250stránková kniha se vztahuje k verzi 0.7.0 Gforthu. Je k dispozici také ve formátu HTML.
- Repozitář Gforthu: zde lze nalézt v podstatě vše, co se týká Gforthu.
pbForth
pbForth již zřejmě není podporován, ale je to natolik zajímavá implementace jazyka Forth, že stojí za to se na něj podívat.
Jak jsme již řekli, jazyk Forth byl vždy spojován s řízením hardwaru. Nebylo tedy vůbec překvapivé, že implementace jazyka Forth byla vytvořena pro robotickou stavebnici LEGO MINDSTORMS – konkrétně pro 16bitový RCX, který vyšel v roce 1998.
Zdá se, že nikdy nebyl aktualizován pro práci s druhou generací, řadou NXT, která vyšla v roce 2006, ani se současnou MV3, která vyšla v roce 2013.
Ačkoli pro pbForth neexistuje žádná oficiální stránka, stále je možné se o něm dozvědět a dokonce ho používat. Může však nastat strmá křivka učení, protože informací není tolik. A je jasné, že byste potřebovali LEGO MINDSTORMS RCX (není tak těžké je sehnat použité).
NXT používá úplně jiný (a 32bitový) procesor, takže pbForth by s ním určitě nefungoval. Přesto by to mohla být zábava. A pokud se na to chystáte, mohli byste to pravděpodobně portovat na stavebnice druhé a třetí generace.
pbForth Resources
Ty informace, které jsou k dispozici na běžném internetu, jsou většinou strohé a vždy odkazují na domovskou stránku pbForth, která není v provozu nejméně od roku 2010. Většina z nich je k dispozici jen díky internetovému archivu.
- Historie robotiky LEGO: ačkoli se netýká jazyka pbForth, poskytuje stručný přehled produktů LEGO MINDSTORMS.
- Úvod do jazyka pbForth (PDF): tento 30stránkový návod vám pomůže začít s jazykem.
- Zdrojový kód pbForth: Všimněte si, že pbForth je napsán v assembleru a Tcl, takže budete potřebovat mít k dispozici tyto nástroje.
- Grafické uživatelské rozhraní Windows: Tento soubor se spouští, i když přimět ho k nějaké činnosti může být složitější. Pokud chcete pbForth pro Linux nebo Mac, budete muset použít zdrojový kód.
- phForth Home Page Circa 2009: tato stránka obsahuje odkazy na poměrně dost zajímavých informací o pbForth, především na půl tuctu ukázkových skriptů.
Ostatní implementace
- fig-FORTH: jedná se o jednu z prvních implementací Forthu, kterou vytvořila Forth Interest Group. Jedná se o 16bitovou implementaci. Je k dispozici pro některé nádherné staré počítače, jako je Data General Eclipse a Alpha Micro, a také pro počítače založené na 8086 a 6502. Problémem je, že neexistují žádné spustitelné soubory – pouze kód v assembleru. A ve většině případů pouze bitmapové soubory PDF s kódem. Skutečný kód je zřejmě k dispozici pouze pro 8088/8086, PDP-11 a 6800. (6800 je 8bitový procesor, takže zřejmě existovala i 8bitová verze fig-FORTH.)
- SP-Forth: jedná se o svobodnou implementaci Forthu pro Windows a Linux.
- 4tH: jedná se o snadno použitelnou implementaci Forthu, která je k dispozici pro širokou škálu hardwaru (včetně Raspberry Pi) a obsahuje dobrou dokumentaci.
- SwiftForth™: toto je kompilátor jazyka Forth od původní společnosti, která přinesla Forth světu. Jedná se o komerční produkt, který je však za rozumnou cenu.
Souhrn
.