5 ms·
How strange, I just picked up a book from my bookshelf, my old copy of Starting Forth by Leo Brodie. I was trying to remember if Forth was created by Charles Mo
by todd8 6y ago
How strange, I just picked up a book from my bookshelf, my old copy of Starting Forth by Leo Brodie. I was trying to remember if Forth was created by Charles Moore or Calvin Moores. Charles Moore invented Forth.
I really enjoyed reading Starting Forth when it came out. I've used Starting Forth together with Threaded Interpretive Languages: Their Design and Implementation by R. G. Loeliger to create my own Forth system. This second book is not about "threads" as we know them today; threading is a way to very efficiently dispatch the execution of Forth primitives.
Calvin Moores is a language inventor too. I've also implemented a version of his language TRAC. TRAC is mentioned prominently in a book that I really enjoyed while in grad school in the 70's, Computer Lib by Ted Nelson. Described by Wikipedia as the first book on personal computers.
The appeal of Forth, and even more so of TRAC, is that they are very simple languages to implement. It is completely possible to implement either language in assembly language, but C would be a bit easier. As a project to learn Perl, back when it was new, I wrote a TRAC interpreter over a couple of days.
TRAC, like the roughly contemporaneous language GPM invented by Christopher Strachey, is a macro processor. GPM and TRAC are "Turing complete" macro processors. So they can be used to write arbitrary programs and are in fact designed for this purpose.
Some links/references:
Leo Brodie, Starting FORTH : an introduction to the FORTH language and operating system for beginners and professionals, Prentice-Hall, 1987. https://www.forth.com/starting-forth/ https://www.forth.com/starting-forth/
Martin Campbell-Kelly, Christopher Strachey, 1916-1975: A Biographical Note, IEEE Annals of the History of Computing, 1985, https://www.computer.org/csdl/magazine/an/1985/01/man1985010019/13rRUy3gmZc https://www.computer.org/csdl/magazine/an/1985/01/man1985010...
R. G. Loeliger, Threaded Interpretive Languages: Their Design and Implementation, BYTE Books, 1979, https://www.abebooks.com/servlet/BookDetailsPL?bi=22536154738&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22536154738&clickid=1rPxe9yy8xyLRH4wUx0Mo3b5UkETmTzEEzAf0A0&cm_mmc=aff-_-ir-_-353196-_-77798&ref=imprad353196&afn_sr=impact https://www.abebooks.com/servlet/BookDetailsPL?bi=2253615473...
Calvin Moores, TRAC, A Procedure-Describing Language for the Reactive Typewriter, CACM Vol 9, Num 3, March 1966, https://dl.acm.org/doi/10.1145/365230.365270 https://dl.acm.org/doi/10.1145/365230.365270
Ted Nelson, Computer Lib/Dream Machines, self-published, 1974, https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines
- rwmj 6y ago> It is completely possible to implement [FORTH] in assembly language I know because I did :-) https://news.ycombinator.com/item?id=10187248 https://news.ycombinator.com/item?id=10187248
- guerrilla 6y agoThanks for that by the away. It's an amazing educational resource.
- mikewarot 6y agoMe Too - For OS/2, and it was direct threaded code https://sourceforge.net/p/forth2/wiki/Home/ https://sourceforge.net/p/forth2/wiki/Home/
- alatz 6y agoI also wanted to say thank you for Jonesforth. Using it as a guide while implementing a Forth in 6502 assembly is the most fun I've had programming.