Negyedik nyelvbeszélgetés - 3. oldal

Fórum régi számítógépek gyűjtőinek és felhasználóinak

negyedik

System.cfg Adatbázis-hozzáférés

Vita a negyedik nyelvről

Re: Vita a negyedik nyelvről

Üzenet Dominika »2013. március 30. 12:17

itt van a Factorial program, az MO05-re fordítva
Ez a program a FORTH DIMENSION folyóiratban jelent meg, de nem találtam a szerző nevét
Lássuk a részleteket:

1 - A Forth egyik előnye a hordozhatóság. Könnyebb lefordítani a Forth-ot
gépről egy másikra, mint például a Basic.
Még mindig óvatosnak kell lenned:

a) Ricardo meghatározza a + értéket! elején, mert ez a szó nem létezik a szókincsében. Számunkra létezik, így nincs szükség.
b) Van DEFINE BYTE-ARRAY. Ez a Jupiter Forth egyik legnagyobb hibája, amely kihagyta a szót
Szerencsére itt a fordítás egyszerű.

c) A negyedik? DUP szót -DUP-nek hívjuk. De ugyanaz (lásd a 4. oldalt)


d) Az ASCII szó nem létezik a Forth-ban. Mivel kibocsátásról van szó, közvetlenül 44-et teszünk (vagy 46-at egy pontra).

e) Néhány FORTH-ban a THEN-t az ENDIF helyettesíti.

f) Az eredeti felsorolásban (* BUFF) hiba történt:>> helyett>> olvassa el

- Győződjön meg arról, hogy a szerkesztőt a Xavier március 28-i magyarázata szerint feltette.
Tegye fel a K7 "Fakto-t"

A FORTH-ból tegye:

1 3 TÖLTŐ FACTO

majd az első tesztet 10 FACS-szal

Re: Vita a negyedik nyelvről

Üzenet __ült__ »2013. március 30. 12:29

Kis magyarázatok az alapvető progikról. Bonyolultnak tűnnek, de alapvetően nagyon egyszerűek. Az idő kiszámításának vagy az eredmény megjelenítésének rutinjai "csavarodnak". Maguk az algosok úgy döntenek, hogy nagy számokat adnak hozzá hordozással (amely csak egyetlen "for" ciklust vesz igénybe), kombinálva egy nagy szám kis számmal való szorzásával (vagy osztásával), amit egy egyszerű for ciklus is elvégez.

A trükk ezen algók megértéséhez és a nagy számok fogalmának megértéséhez. A nagy számok olyanok, mint a mi kis számaink, de ahelyett, hogy a 10-es bázisba írnánk, nagy bázisba kerülnek (az egyszerűség kedvéért 10 000-et veszünk). Az 10000 bázis minden egyes száma egy tömb helyét foglalja el. Tehát egy tömbben lévő doboz valójában a nagy számom négy számjegyét jelenti. Az 1000 méretű tömb körülbelül 2kb RAM-ot foglal el, és 1000 * 4 = 4000 tizedesjegyet képes tárolni. Látjuk, hogy 32k hozzáférhető ram mellett sok nagy számmal rendelkezhetünk, amelyeknek sok nagy számjegyük van. (Sasfépu sokkal többre képes, mint gondolnánk, ha megfelelő algoritmusokat kapunk). Nagyszámú összeadási/kivonási algoritmusokhoz úgy tesszük, ahogy a kis osztályban tanítjuk az összeadási táblákkal és a hordozás terjedésével.

  • REM (1) az összeadás/kivonás mellett a hordozás +1 vagy -1, elegendő egy egyszerű egész szám
  • REM (2) kis súlytól nagy súlyig
  • REM (3) két nagy számjegy hozzáadása
  • REM (4) A fenti teszt elvégezhető aritmetikailag:
  • REM (1) Felhívjuk figyelmét, hogy a levonás a BASE-1-ig terjedhet
  • REM (2) kis súlytól nagy súlyig
  • REM (3) Óvakodjon a túlcsordulástól. A termék elérheti a BASE * D-t. Meg kell találnia az ACCU számára egy olyan típusú adatot, amely képes veszteség nélkül tárolni. Itt vettem egy duplát.
(az osztás hasonló, kivéve, ha a legjelentősebb súllyal kell kezdened, és a hordozás/kivonás számítása kissé eltér)
Az F tényleges számítás (F [EDIT] A Dominique most közzétett progja néhány részletességgel pontosan ezt teszi: A 100-as bázison működik, nagy számjegyű bájtokban tárolva. Valószínűleg ez a legjobb választás azok számára, akik natívan dolgoznak 16 bitben. Tehát a szorzásokban nem várható túlcsordulás.
___
(*), de nem túl nehéz megvalósítani egy negyedik rutint, amely kiszámítja a mul16 * mul16 értéket 32 ​​bites eredménnyel.

Re: Vita a negyedik nyelvről

Üzenet Daniel »2013. április 02. 17:53

Re: Vita a negyedik nyelvről

Üzenet Xavier31 »2013. április 03. 00:22

@Domi: nagyszerű, köszönöm! A programot kézzel fogom átírni (nem túl hosszú), annak érdekében, hogy
ismeri a szerkesztőt. Hogyan jelenítsünk meg egy egyszerű 250 * 3000 számítást a Forth-ban ?

@_Sam_: köszönöm a magyarázatokat: Jól ismerem a Basic-et, jól megpróbálom
értsd meg a programjaidat, hogy Forth-ban, az én ritmusomhoz igazítsd őket.

@Daniel: Igaz, hogy ez a vita a sasfepu kevésbé ismert aspektusát mutatja be. Lenne
nagyon jó látni a programokat, ha megtalálják őket.

Re: Vita a negyedik nyelvről

Üzenet Dominika »2013. április 03. 01:26

A kérdésre adott gyors válasz a következő

Negyedik 7. oldal, látni fogja, hogy az U * két előjel nélküli egyszemélyes (16 bit) szorzását hajtja végre, ami a veremben kettős pontosságot eredményez 32 biten.

32 bites érték (tehát az adatsorozat két szakaszának) kinyomtatásához a D parancsot kell használnunk (míg az egyszerű .