The A-Z of Programming Languages: Forth

Charles H. Moore talks about the origins of Forth and how it shows that a computer language can be simple and powerful.

Was the language developed particularly for your work at the National Radio Astronomy Observatory?

I did most of my work at NRAO in Forth: controlling several radio telescopes and data-collection/reduction systems, with the reluctant approval of the administration. The only reason this was permitted was that it worked: projects took weeks instead of years, with unparalleled performance and capabilities.

If you had the chance to re-design the language now, would you do anything differently?

Would I do anything differently? No. It worked out better than I dreamed. The thing about Forth is that if I wanted a change, I made it. That's still true today. Forth is really a language tool kit. You select and modify every time you encounter a new application.

Do you still use/work with Forth?

Yes indeed, I write Forth code every day. It is a joy to write a few simple words and solve a problem. As brain exercise it far surpasses cards, crosswords or Sudoku; and is useful.

What is your reaction to comments such as the following from Wikipedia:

'Forth is a simple yet extensible language; its modularity and extensibility permit the writing of high-level programs such as CAD systems. However, extensibility also helps poor programmers to write incomprehensible code, which has given Forth a reputation as a "write-only language"'?

All computer languages are write-only. From time to time I have to read C programs. They are almost incomprehensible. It's not just the syntax of the language. It's all the unstated assumptions. And the context of the operating system and library. I think Forth is less bad in this regard because it's compact; less verbiage to wade thru. I like the observation that Forth is an amplifier: a good programmer can write a great program; a bad programmer a terrible one. I feel no need to cater to bad programmers.

Do you know of many programs written using Forth, and if so, what's your favourite?

Forth has been used in thousands of applications. I know of very few. The Forth Interest Group held conferences in which applications were described. It was amazing the variety. My current favorite is that Forth is orbiting Saturn on the Cassini spacecraft.

In your opinion, what lasting legacy do you think Forth has brought to the web?

The various Web pages and forums about Forth make a powerful point: Forth is alive and well and offers simple solutions to hard problems. Forth is an existence proof. A lasting legacy to KISS (keep it simple, stupid).

What made you develop colorForth?

I was driven away from Forth by the ANSI standard. It codified a view of Forth that I disliked: megaForth; large, unwieldy systems. I was finally faced with the need for VLSI chip design tools. And [I was also] blessed with some insight as to how Forth could be made faster, simpler and more versatile. Hence, colorForth. Sadly [it has been] ignored by most Forth programmers.

Tags a-z of programming languages

More about IBM AustraliaISS GroupMicrosoftSaturnWikipedia

5 Comments

Anonymous

1

I think that I can learn Forth at our school.

<a href="http://mikecrabe.wordpress.com/">MikeCrabe</a>

Andy Korsak

2

I have been using Forth since around 1977 just after a Forth Interest Group (FIG) was formed in the San Francisco bay area. Every year at the National Forth Day meeting in November the genius of Chuck Moore has continued to impress us during his "fireside chat" about some great new innovation using the Forth approach to software. Various Forth interest groups scattered around the globe are still active, although nowhere near the peak activity level during the 1980's. Forth Inc http://forth.com is still commercially distributing programming environments for various platforms. There are free downloads for Windows, Mac, Linux, and other platforms, e.g. Win32Forth, MOPS.
http://tech.groups.yahoo.com/group/win32forth/
http://apps.sourceforge.net/mediawiki/powermops/index.php?title=Main_Page
http://www.thefreecountry.com/compilers/forth.shtml

Carl Gundel

3

HP-67 to Forth to Smalltalk

When I was a kid my father taught me to program the HP-67 calculator. This is a stack based, RPN calculator. I can't say that this is a Forth machine, but it prepared me for my serendipitous discovery of Starting Forth at my local library a few years later. I was hooked. Forth is a great language. I didn't really understand what made it great at the time honestly. I was only 15 years old when I first tried it (on a VIC-20 with HES Forth). I still did most of my programming in BASIC then, and a little 6502 assembler.

Later on the book Thinking Forth really gave my brain a shot. Then I was exposed to Smalltalk which I consider to be Forth on steroids. I've been Smalltalking ever since, but I still pay attention to what's going on in the world of Forth. Thanks to HP, Charles Moore, Leo Brodie, and Alan Kay!

Markoff

4

I used Forth for years on embedded systems and for that it's great. Ultimately, I gave it up because it seemed to poorly integrate when run under an OS and given libraries of modular routines, which is where I've spent most of my time since.

Regarding languages that are "fun", Forth is by no means the only one. My favorite is APL, the first I ever learned and the most elegant at least within its original context (even uses real multiply and divide characters, rather than repurposed from a typewriter design that didn't have them)-- it too has become somewhat of an anachronism in the context of the modern OS, though I still use an APL interpreter I wrote as a calculator daily. And, for "the satisfaction of finding a neat representation," APL is light-years ahead of Forth. But I've always felt that Forth, Lisp and APL had that extensibility in common (APL user-defined functions behave exactly like operators even though they're not represented by a single symbol as are the built-ins). Forth took it a few steps further by including extensibility of the compilation phase, but they all have the problem of working like a bit of a square peg-- they work great when on their own, but try to connect them with the rest of the computing world and it's somewhat awkward.

Vince Otten

5

I learned FORTH on a 16K (not 16 megabytes or 16 gig) TRS--80 using MMSFORTH. It was exciting being able to not only write programs that seemed to run as fast as assembler (and waaay faster than interpreted BASIC), but learning to extend the compiler itself!
The biggest plus of FORTH programming revealed itself when I was contracted to write some embedded software in the late 1970s on a 4K KIM-1 system. I had to learn a bit of 6502 assembler in order to interface with the RS-232 port, and build the program up to a (single-line) menu system. In usual FORTH fashion, it was debugged only once, and I never had to return and correct any code after it was burned into PROM.
The biggest minus is a lack FORTH shares with most other programming languages: lack of the success/failure return signals common to SNOBOL and Icon.
But I still love incremental compilers, and FORTH tops the list there.

Comments are now closed

Queensland Police arrest man for allegedly hacking US gaming developer site

READ THIS ARTICLE
DO NOT SHOW THIS BOX AGAIN [ x ]