Forth as an Advanced Language

I have been browsing this early work by Charles Moore that was mentioned on our call yesterday. pdf matrix

Moore explains what he had learned about application programming and how it had lead to FORTH. It is delightful, especially for someone old enough to remember when many of the lessons were not yet common knowledge.

My own background from school was in compilers and operating systems. The lab where I worked extended this to cybernetics and VLSI. But the choices I faced when writing a program were not as well addressed as Moore does in this report.

Coincidently I had been searching for more powerful representational organization and was touched by FORTH, Lisp and Smalltalk, which I often compared. I considered each of these to be "advanced" and differing only slightly in how they organized memory: Lisp as cons-cells, Smalltalk as objects, and FORTH? What was the representational abstraction of FORTH? Some would say "stacks" but that was dynamic state.

This report answered my question in section titled Dictionary.

6. Dictionary 1. Entry format 2. Search strategy 3. Initialization

In Lisp and Smalltalk I was designing representations but not so in FORTH. I was working on a large chip design, working in FORTH, using abstractions coded by Tom Almy, who would add to the vocabulary what ever I needed when I needed it. I was happy to have Tom's support but much more interested in my own circuits than how he thought about and then built the tools I used.

I can't remember how it was that Tom and I worked together. I defined words that represented circuits expressed as geometry in silicon. When ever I found this difficult I described my troubles to Tom who would give me new geometric abstraction words the next day. I can't remember how our work came together logistically, but it was fabulous in the moment.