GARTHWILSON wrote:
I was just looking at forth.org's (not Forth, Inc.'s at forth.com) website and I see it hasn't been updated in a year and a half but I followed a link to http://www.figuk.plus.com/4thres/systems.htm which has Pygmy Forth v1.5 linked just above the middle of the page. Samuel, I think you've used that one haven't you? Would it be a good one for Daryl to start with? Or do you have another recommendation for a beginner?
For absolute beginners, though, this depends on your platform. If you're using Linux or BSD, I would strongly encourage the use of GForth. GForth is smart enough to configure its memory map to try to catch stray pointers (which happens a lot in Forth if you're new). It won't catch them all, but, you'll find that most illegal memory references will be caught. If you tried this same thing in Pygmy, you'll corrupt the binary in RAM, and you'll crash the DOS environment.
Be aware that the Starting Forth text online has been updated for ANSI Forth systems. In particular, iForth and SwiftForth systems are referenced. GForth is also an ANSI-compatible implementation (in fact, it is the reference implementation).
This is why I advocate GForth for learning Forth now.
For Windows systems, I probably would go with either SwiftForth or iForth, again, because the book is (re)written to those implementations.
Regarding I/O:
Under the hood, Forth's management of I/O will be unique for every Forth system you use. Adapting Garth's Forth to the SBC-3 will prove a unique experience from, say, porting pForth. It has to be, for there is never one way to accomplish I/O, and each Forth system has its own assumptions.
In this regard, Forth is like C -- it lacks any language-defined I/O or memory management primitives. ANSI's attempts to standardize the core wordset comes from a desire for a standard library of words. It's best to think of ANSI's Forth definition as though it were Forth's equivalent to the standard C library. It's incomplete, sometimes limiting, and so obviously designed by committee. But, it exists, it's portable within reason (even to CPUs which lacks a hardware return stack, much to my consternation), and it's provided Forth with a new level of respect in the industry (which isn't saying much, but . . .).