Vlákno názorů k článku Grafické možnosti a programové vybavení IQ-151 od Viky - – Ačkoliv Forth je jazykem, který v současnosti používám...

  • Článek je starý, nové názory již nelze přidávat.
  • 6. 4. 2010 1:04

    Viky (neregistrovaný)

    – 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.

  • 6. 4. 2010 1:38

    jkf (neregistrovaný)

    Heslo forthu je „low floor, high ceiling“, z cehoz je dobre videt kde kategorizace na vyssi a nizsi programovaci jazyky selhava.

  • 6. 4. 2010 8:50

    Pavel Tišnovský
    Zlatý podporovatel

    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