Try   HackMD

A colorForth Magenta színű változója

2003. szeptember 05 - Howerd Oakford www.inventio.co.uk

Összefoglaló

A colorForth magenta változója a forráskódbeli cellájának címét adja vissza. A magenta értékének futtatás közbeni megváltozása automatikusan átírja a forráskódban a változóhoz rendelt értéket, megnyitva az utat a program és az adatok szorosabb integrálása érdekében.

Egyszerűség

Chuck Moore legújabb Forth fejlesztése, a colorForth, egyszerűbb, mint a többi Forth, mert olyan kialakítást használ, amely a korábban nélkülözhetetlennek gondolt számos funkciót kiküszöböl:

  • A szövegbeviteli puffert, az ACCEPT (vagy az EXPECT) és a QUIT szót használták a terminálon beírt karakterek összegyűjtésére és értelmezésére.
  • A csatolt listás szótár lehetővé tette a változó hosszúságú név, kód és paraméter mezők egyetlen tömbbe - a szótárba - való összeállítását.
  • Az olyan szavak, mint az .S és a DUMP, lehetővé tették a verem és a memória megjelenítését.

Meglepőnek tartom, hogy Chuck képes volt egyszerűsíteni vagy eltávolítani ezeket a szabványos Forth-struktúrákat, és mégis olyan környezetet biztosít, amely felhasználható komplex alkalmazások fejlesztésére:

  • A verem tartalma a szerkesztő képernyő alján jelenik meg. A legfelső veremelem Huffman dekódolt karakterláncként is megjelenik. Egy Forth szó nevének „beírása” felhalmozza a Huffman Shannon-Fano kódolt bitmintát a legfelső veremelemben. Az egyes gombok lenyomásakor a verem teteje megváltozik, és megjelenik a karaktersorozata.
  • Mivel a szó neve és a „tokenizált kódmező” (szín) is be van csomagolva a tokenjébe, a szótár két lineáris tömbre, a tokenekre és a paramétermezők címeire redukálható. A szótár keresés és ennélfogva az összeállítás rendkívül gyors.
  • Az előre értelmezett forrást 1K oktett blokkokban tároljuk. Ezeket a RAM-ban tárolják. Bekapcsoláskor a lemezről betöltik a RAM-ba, és save „mentés” funkcióval másolják ki a lemezre vagy más külső tárolóra.
  • .S nem szükséges, mivel a verem megjelenik a szerkesztőben.
  • A szövegbeviteli puffert (mondjuk egy 80 karakteres sort) egy kétdimenziós szerkesztő képernyő váltotta fel. Ez egy hagyományos blokk alapú Forth szerkesztőnek tűnhet, de valójában nagyon más.

Régi és új

Érdekes megjegyezni, hogy a hagyományos Forth konstrukcióknak nincs egyszerű colorForth megfeleltetése.

Például a QUIT funkcionalitását felváltotta a legfelső veremelem Huffman kódolása, a kijelző folyamatos háttérfeladat-frissítése és egy összetettebb szerkesztő kombinációja.

Hasonlóképpen a colorForth bíborváltozó nem írható le egyetlen hagyományos Forth konstrukcióval. A legközelebbi analógia VÁLTOZÓ, és bármelyik változótípus végrehajtása valóban az adatok címét hagyja a veremben. A különbség abban rejlik, hogy hol tárolják az adatokat. A hagyományos változó egy címet ad vissza, amely a lefordított kód paramétermezőjére mutat. A bíborváltozó a forráskód következő 32 bites cellájának címét adja vissza.

Ügyes trükk

Fontolja meg a változó két típusának inicializálását:

VÁLTOZÓ x 123 x!                \ hagyományos

A forráskódban megadott értéket a változó paramétermezőjében tároljuk.

[ bíborvörös ] x 0 \ colorForth

A bíborváltozó definiálásakor az alapértelmezett értéke 0 lesz. Ha új értéket tárolunk benne, a forrás megváltozik.

[ sárga ] 123 x! \ sárga „értelmezett” parancsok

[ bíborvörös ] x 123 \ colorForth

Mivel az érték magában a forráskódban van tárolva, egy új érték tárolása megváltoztatja a forrást.

Átmeneti összeállítás és forrásmegosztás

A fordítás az ember által olvasható forráskódot gépi futtatható utasításokká alakítja. Mivel az emberek és a számítógépek nagyon különbözőek, ez nem triviális művelet. Mivel a bíborváltozó adatait a forrás tárolja, a lefordított kód eldobható az információk elvesztése nélkül.

Ennek három hatása van:

  • „Pont időben” vagy átmeneti összeállítás lehetősége. Például az „észak” meghatározása „46 betöltés”, amely kódot tölt be az „Északi híd” PCI regisztereinek megjelenítéséhez - a hibakeresési állapot megmarad, még „üres” után is.
  • A forráskód elosztható a változók aktuális értékeivel. Például a cfdos.blk jelenlegi terjesztése tartalmaz egy programot a Mandelbrot halmaz megjelenítésére a 64. és 66. blokkban, az x, y, skála és egy adott minta előállításához szükséges iterációkkal együtt.
  • A programok távolról futtathatók, csak forráskód átvitelével. Az aktuális állapotinformációkat a forrás tartalmazza.

Összegzés

A colorForth környezet lehetővé teszi egy új konstrukciót, a bíborváltozót , amelynek adatait a forráskód tárolja. Ez lehetővé teszi az alkalmazások összeállítását és elvetését állapotinformációik elvesztése nélkül, ami viszont más, egyszerűbb stílusú programozást tesz lehetővé.