Holy moley, 300 pages? And it apparently came out at least 8 times a year, so I'm guessing it was monthly.
There's a great Microsoft advertisement for their various language implementations for CP/M (no Forth), and a column subtweeting Microsoft for Bill's stance on software piracy. (both somewhere around the page 90 mark, magazine page numbering)
!forth in a conventional compiler (even in Forth), rules about the use of plaintext syntax and whitespace are used to help the compiler determine the programmer's intentions in his/her code. this makes for a fundamentally simpler editor but a more complex compiler responsible not only for generating executable code but policing the programmer for unambiguous input.
in colorForth(/ArrayForth), the editor employs colour as syntax and source is packed in a form readily understandable by the compiler while the programmer enters it. this makes for a more complex editor but fundamentally a simpler compiler, as the latter -- no longer necessarily responsible for trying to determine programmer's intentions -- now only processes unambiguous directives given in the packed code (eg, so begins a new word, this word is to be run when this source block is compiled, this is the name of a variable, etc).
there are not many computing devices still in existence that don't second-guess their operators.
Here Chuck is talking about how he got tired of all the various loop construct and says that what he is doing today is just recurse into yourself if you need a loop.
What he is describing is basically a named let and a tail call. Very cool. The similarities, or maybe duality, of !scheme and !forth have never been more obvious.
> (Jeff) You might point out that your semicolon after WORD results in tail recursion and converting the call in WORD to a jump and that is how it functions.
> (Chuck) So there is no reason to make that a call since you are never going to go anywhere afterwards so you just make that jump. In fact in all my latest Forths semicolon kind of meant either return or jump depending on the context and it's optimized in the compiler to do that. It's a very simple look back optimization that actually saves a very important resource, the return stack.
> Many programmers choose to reject the idea that Forth is the OS. Instead they prefer to implement Forth as a conventional programming language on top of the operating system of their choice. By doing so they violate several of the original definitions of Forth. What they have is not longer a complete system, instead they have choosen to return to the multi-level nightmare.
@roka @awg "multiple" is sort of an understatement. It feels like the only language that has more implementations is !forth . :-)
Many people like #racket, as it has an IDE that is very helpful to newcomers. #Chez is performant and complete. I quite like #guile as it's GNU, used for #guix and has some intriguing new async stuff I'd like to play with.
A decade ago when I did #SICP in uni, the course recommended Racket (then Dr Scheme) or MIT Scheme, but I used Guile because it had a very POSIX-y and familiar command line and I wrote my lab exercises with Makefiles running the tests.
Back then I also had a look at #gauche (also very script-y and POSIX-y) and #scheme48, which integrates well with SMILE in emacs. These days there's #geiser for guile, which is likely to be the best emacs+Scheme interactive mode out there.
Chuck Moore made honourable mention of the book Computer Approximations, Hart et al. This book, published in 1968 (!), still deserves a place on the bookshelf for those seeking to making the most of integer arithmetic in embedded and realtime applications. !forth #forth
long before gcc could be used to compile itself, there was metacompilation in Forth. and it took barely much time time even in a indirect threaded implementation on slow hardware. (... pregnant pause for emphasis ...) !forth
http://bootstrappable.org/projects.html explains Mes better in English than the repo or the announcement does, and it also clarifies that mes and stage0 are two different things.