– Ačkoliv Forth je jazykem, který v současnosti používám nejčastěji (vedle Assembleru a C), stále váhám, jedná-li se o vyšší nebo nižší jazyk. BASIC byl považován za nižší jazyk, totéž Assembler, Pascal za vyšší jazyk, C za nejnižší z vyšších jazyků (resp. nízkoúrovňový jazyk). Ale Forth? Při vší úctě – lidem, kteří o něm mnoho nevědí, obvykle říkávám, že jde vlastně jen o hodně vychytaný makroassembler. Zkrátka kdybych měl porovnávat mezi BASICem používaným běžně na 8bitech a Forthem, řekl bych, že Forth je o kategorii níže proti BASICu. Ovšem na druhou stranu bych řekl, že jeho filosofie je v mnoha ohledech stavěná stejným způsobem, jako třeba u Lispu („vše je seznam“ – „vše je slovo“, prefixová notace – postfixová notace, možnost neomezeně jazyk syntakticky rozšiřovat pomocí maker – pomocí definujících slov, jednoduchá základní kostra jazyka, definování mnoha základních struktur jazyka v jazyku samém, interaktivita, homoikoničnost, jednoduchost překladače, atp.), který je považován za vyšší jazyk.
– Nejedná se ve výpisu programu na řešení soustav lineárních rovnic o překlep? Ten algoritmus znám pod názvem Gauss-Seidelova metoda, nikoli Sidelova.
– IQ-151 bylo obvykle vybaveno pouze 32 KB RAM, nikoli 64. Ale i 32 KB verze se dala dopájením 4116 do volných pozic na základní desce snadno rozšířit, protože monitor si velikost dostupné RAM testoval po resetu.
– Po resetu zůstal zachován nejen obsah RAM v modulech, ale i na základní desce. Ačkoli v modulech byla instalována SRAM, zatímco uvnitř počítače DRAM, reset netrval tak dlouho, aby se stihl obsah DRAM znehodnotit. Pouze pár proměnných monitoru a BASICu se po resetu inicializovalo. Díky tomu bylo možné i po nechtěném resetu obnovit např. program v BASICu a pokračovat v práci.
Dovolím si s tím Forthem trošku oponovat. Na jednu stranu to v počátcích vypadá jako makroassembler nějakého zásobníkového procesoru, na stranu druhou je to však jazyk s velmi silnými vyjadřovacími schopnostmi (a hlavně s možností tvorby dalších syntaktických konstrukcí), v mnoha ohledech mnohem výš než Basic.
Shrnmě si vlastnosti typických „osmibitových“ Basiců (pozor – modernější BASICy už jsou někde jinde):
1) číslování řádků + skoky na řádky pomocí GOTO (absolutní adresování!!!, toto překoná prakticky jakýkoli assembler)
2) strukturované smyčky – pouze „for“, nic jiného
3) strukturované rozeskoky – žádné v případě, že se příkaz nevleze na jeden řádek
4) uživatelské procedury a funkce (pojmenované) – většinou žádné, pouze GOSUB na řádku (opět absolutní adresování a opět se tato věc dělá mnohem lépe v assembleru či Forthu – tam je to úplně nejjednodušší)
5) parametry funkcí a procedur? většinou jen přes globální proměnné (!)
6) uživatelské datové typy? v naprosté většině žádné
7) + dvě specialitky: automatické deklarace proměnných + automatické inicializace proměnných, na což se aspon jednou nachytal snad každý programátor
[Zatímco například body 1, 2 a 3 se dají ještě zkousnout, jsou body 4, 6 a 7 dohromady zabijácké při tvorbě delších programů]
Výše uvedené vlastnosti vedly (pokud nebyl programátor hodně důsledný) ke vzniku špagetového kodu. Forth je naproti tomu orientován především směrem k tvorbě nových slov (=funkcím), jejichž tělo je docela krátké, umožnuje tvorbu uživatelských datových typů, nových strukturovaných konstrukcí (speciální smyčky atd.).
PS: mým prvním jazykem byl BASIC, takže jsem mu samozřejmě vděčný za to, co jsem se naučil, ale při psaní větších aplikací se člověk už opravdu zamotal a od nějakých 5000 řádkových aplikací se to kvůli bodům 4. 6 a 7 skoro nedalo rozumně zvládnout