Channels ▼

Jonathan Erickson

Dr. Dobb's Bloggers

Whatever Happened To...?

September 23, 2008

Whatever happened to Chuck Moore? You know who I'm talking about -- the "father of FORTH".

 Chuck developed the first complete, implementation of Forth in 1971 for the 11-meter radio telescope operated by the  National Radio Astronomy Observatory (NRAO). This system ran on two minicomputers -- a 16-KB DDP-116 and a 32-KB H316 -- connected by a serial link. He subsequently ported Forth to dozens of computer architectures.

From the outset, Chuck's guiding principle -- his "Basic Principle" -- in terms of design (hardware and software) has always been "Keep it simple!"

As the number of capabilities you add to a program increases, the complexity of the program increases exponentially. The problem of maintaining compatibility among these capabilities, to say nothing of some sort of internal consistency in the program, can easily get out of hand. You can avoid this if you apply the Basic Principle. You may be acquainted with an operating system that ignored the Basic Principle.

It is very hard to apply. All the pressures, internal and external, conspire to add features to your program. After all, it only takes a half-dozen instructions, so why not? The only opposing pressure is the Basic Principle, and if you ignore it, there is no opposing pressure.

In Chuck's view, the main enemy of simplicity is programmers who speculate on future needs and provide for them. So he added a corollary to the Basic Principle: "Do not speculate!"

Do not put code in your program that might be used. Do not leave hooks on which you can hang extensions. The things you might want to do are infinite; that means that each has 0 probability of realization. If you need an extension later, you can code it later -- and probably do a better job than if you did it now. And if someone else adds the extension, will he notice the hooks you left? Will you document this aspect of your program?


Although Chuck was a co-founder of Forth, Inc.  (a software  company which is still the largest Forth vendor), Chuck over time shifted his focus from software to CPU design (assuming, of course, we can differentiate between the two), launching companies such as Novix, Computer Cowboys (a consulting firm where he developed the Sh-Boom processor), and iTv Corp.

  So what's Chuck been up to recently? Well, a couple of years ago he co-founded and became CTO of IntellaSys , where he just announced a new 40-core processor -- the SEAforth 40C18 -- that's designed for embedded wireless, portable, and distributed data processing applications. The SEAforth 40C18 is an array of 40 fully functional CPUs operating asynchronously, each of the cores a complete computer, with its own ROM, RAM, and interprocessor communication. Together they can deliver up to 26 billion operations per second.

According to Chuck, "the beauty of this single-chip 40 CPU processing solution is that it is completely programmable -- meaning if a spec changes, it is a code issue, not a silicon turn. With 40 cores operating independently on the chip, designers can dedicate groups of them to handle specific tasks. For example, some could be assigned compute-intensive Fast Fourier Transforms (FFT) while others handle wireless connectivity, standard I/O interfaces or drive external memory."

The processor will be offered with VentureForth , a Forth-based (what, you expected Java?) IDE that includes interactive programming, testing, and debugging facilities. VentureForth includes compilers for both Windows and Linux and a simulator for debugging, and contains low-level primitives as well as the high-level tools necessary to map programs across the array of cores in a SEAforth processor.

For more on the 40-core SEAforth processor and how Forth fits into the picture, see Stephen Pelc's article Extreme FORTH.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.