[comp.lang.forth] Teaching Forth

ma168a@sdcc3.ucsd.EDU (John Wavrik) (12/15/87)

Every other year I post this inquiry -- it is now time to do it again:

   I am interested in locating others who teach Forth (at any level).
   I think it would be valuable for people who are teaching Forth
   to communicate with each other -- and I would be willing to do
   what I can to facilitate communication.

   Please contact me if you are teaching Forth.

   ...ucbvax!sdcsvax!jjwavrik  (UUCP)
   jjwavrik.ucsd.edu  (BITNET)
   jjwavrik@sdcsvax.ucsd.edu (ARPA)
					    Prof. John J Wavrik
					    Dept of Math   C-012
					    Univ of Calif - San Diego
					    La Jolla, CA  92093

For the curious:  two years ago the set of people who read this newsgroup
  and teach Forth had one element.

wmb@MITCH.ENG.SUN.COM (09/26/90)

Forth Crash Course report.  by Michael Saari

On September 18, 1990 I presented a "Forth Crash Course" here at
Sun Microsystems to approximately 200 attendees.  It ran for 3 1/2
hours (3 one-hour sessions with breaks), and was designed to convey
a practical overview of the language with emphasis on actual usage.

About 140 attendees were Sun employees.  I would guess that half of
these were technician-level people who wanted to learn Forth for the
purpose of writing machine diagnostics for system debugging.  The other
half were probably simply interested in getting familiar with the language,
since Sun is now using Forth on most of its new workstation platforms.

The other 60 attendees were third-party vendors, here for our two-day
"SBus Expo".  The class was presented here because Forth is an
integral part of the SBus interface (for adding peripheral cards to
Sun systems).  These people were thus interested in learning Forth as
part of their SBus card development efforts.

As such, I had an easy job of it.  Everyone was there because they
wanted to learn Forth - I didn't have to try to convince them of
anything or try to "sell" them.  The audience seemed generally awake
and interested.  Most of the questions were appropriate and relevant.

Because of the limited time, and the mixed needs of the audience, I
restricted the subject area to Forth basics, i.e. 83-Standard words
for the most part.  I did not go into SBus FCode specifics (i.e.
attributes) or SPARCstation diagnostics specifics (such as memory
mapping).  The idea was that these particulars can be learned from
existing documentation.  The goal here was an overview of the
language, its capabilities, and practical tips.

Although I didn't receive any "rave reviews", the general feedback
I got from the class was positive.  My intent was to convey enough
"familiarity" that people could go out and use the language if
needed.  I gave out extensive (56 page) class notes, plus a quick
"reference card" listing all of the commands in an easy-to-use
format organized by functional groups.  The class was also
videotaped, and the video and/or the class notes will be made
available to anyone who requests it, both inside and outside of
Sun.  Contact:

Michael Saari
Sun Microsystems - SBus Technical Support Group
2550 Garcia Ave., Mailstop MTV 21-19
Mountain View, CA  94043
(415) 336-3609
Email:  saari@robotman.Eng.sun.COM

Here's an outline of the class and what was covered.  Several examples
of use were given for most words covered.

FIRST HOUR - Basics
- ----------
Logistics, etc.
Characteristics of Forth - Advantages and disadvantages
Versions of Forth - 83-Standard vs. Sun's versions
  -this class covers the subset common to all
Basics (syntax, stack, interpreter, definitions, file downloading)

BREAK

SECOND HOUR - Tools
- -----------
"Hang onto your hats" - presented a *lot* of material very quickly,
    but with good notes handed out for later reference.
Operators (stack, arithmetic, memory, text and numeric I/O, numeric base)
Conditionals (flags, If-then)
Loops (conditional, DO)
CONSTANTs, VALUEs, VARIABLEs
Array creation with CREATE C,

BREAK

THIRD HOUR - Actual Practice
- ----------
General Guidelines (how to write readable, modular code)
Practical example (right way vs. wrong way to initialize a complex device)
Testing/debugging with above example
Common pitfalls of Forth
Advanced topics (was going to be handouts with no discussion, but I had
   some extra time so they got discussed anyway...)
- -Return stack usage
- -"see" decompiler
- -"patch" and "npatch", to change definition contents quickly
- -ABORT and ABORT" and QUIT
- -Deferred execution
- -Basic dictionary structure
- -Assembler (general, no specifics)
- -CREATE and DOES> (concept of creating new defining words only)


Notes for Forth people:

I didn't mentions vocabularies at all, nor did I mention "immediate" words.
Dictionary structure only got mentioned at the very end.  EXPECT was
not mentioned.

Many of my examples used interactive "compile-only" words, such as:
ok  begin  4000 c@ .   key? until
11 11 11 11 11 11 11 11 11 11 11 11 11
ok
which is allowed in our versions of Forth (but not in the 83-Standard).
Personally, I consider this a deficiency in the Standard.

We use files for downloading.  BLOCKs were not mentioned at all.

We use a 32-bit Forth, with words such as:  c@ (8 bit), w@ (16 bit),
l@ (32-bit) and @ (unspecified, for VARIABLEs only).  This approach
should make it easy to port to any 16-bit system if necessary.  These
words were described, but the 16-bit vs. 32-bit aspect was mostly
glossed over.


Michael Saari


------- End of Forwarded Message