[comp.lang.forth] Learning FORTH

ir230@sdcc6.ucsd.EDU (john wavrik) (08/03/89)

 
   SCFVM.BITNET!ZMLEB (Lee Brotzman) writes:
 
> I don't think that Forth is easy to learn.  But, I think that time spent
> learning Forth is time well spent... I have used the techniques I gained 
> from an intimate knowledge of Forth in other, "academically accepted", 
> languages.
 
> This may be a harsh statement, but I still think that the only way that
> Forth can be truly appreciated is to write a Forth interpreter on you own.
 
> At its heart, Forth is extremely simple.  In its soul, Forth is something 
> that approaches enlightenment.  With a small amount of knowledge about how 
> computers work, and some assembly language programming, Forth is yours. 
> Just remember that Forth is not hard, it is only different.
-------------------------------------------------------------------------
 
                              LEARNING FORTH
 
 
    FORTRAN, BASIC, Pascal, C, ADA, etc. belong to a family of similar 
languages. Learning one after having learned one of the others is a 
relatively minor matter of coping with a new syntax. Compound statements may 
be delimited by BEGIN .. END in one and curly brackets in another; statements 
may be terminated or separated; the terminator/separator may be a semi-colon 
in one language and a comma in another; keywords may vary: "case" may be 
called "switch"; "print" may be called "write"; etc.  One of my students, a 
faculty member steeped in the lore of these languages, expressed his 
frustration at being unable to translate his pre-conceived ideas to Forth by 
saying "What kind of crazy language has 800 keywords?". 
 
    Any learning depends on "organizing principles": techniques or devices 
used to make sense of a body of information. Forth can appear hard to those 
who have learned other languages because they have the wrong organizing 
principles. They have been trained to avoid involving themselves with how the 
how a language is implemented. Compilers for conventional languages are very 
complex, and conventional wisdom is that the user should not have to know 
anything about them. ("How a compiler works is no more of interest to a 
programmer than the details of an internal combustion engine is to the driver 
of a car." --anon) 
 
    Forth requires a different set of organizing principles. It is learned 
most easily by understanding how it works. Indeed, Forth's main claim to fame 
is that it trades built-in features for users' knowledge. Forth is an assembly 
language for a virtual machine which can be implemented on any real computer.
The virtual machine has two stacks, two stack pointers, and an instruction 
pointer. Code is compiled as a sequence of addresses of component words. Etc.
Words can be understood in terms of their actions (typically in terms of what 
they do to the stack). A mental image of the underlying virtual machine 
provides a powerful organizing principle. It is not necessary to write a Forth 
system to learn Forth -- but one should learn on a system for which the source 
code is accessible on-line. 
 
   Forth is more a toolkit for building languages than a language itself. By 
providing a low level base, Forth allows the user to make extensions and 
modifications which, for conventional languages, would require the services of 
a professional compiler writer. By providing a mechanism for extensibility, 
Forth permits the user to build a tailor-made high level language. Unlike most 
assembly languages, the commands of Forth can be used interactively. This has 
been found to speed development (and makes it easy to produce an interactive 
application language). Since Forth includes the elements of an operating 
system, highly portable complete systems can be created which include I/O from 
keyboard, console, and mass storage. Forth, as conceived of by Charles Moore, 
has both power and portability. 
 
   A user's access to the implementation is only half of the virtue of Forth.
The other half is that the implementation is simple enough for the access to 
be useful. The simplicity of Forth's implementation is the key both to 
understanding the language and to its power. 
 
                                                --J. Wavrik
 
 
 

GEnie@willett.UUCP (ForthNet articles from GEnie) (12/21/89)

 Date: 12-19-89 (18:21)              Number: 493 (Echo)
   To: JACK BROWN                    Refer#: NONE
 From: GORDON GANDERTON                Read: 12-19-89 (22:13)
 Subj: LEARNING FORTH                Status: PUBLIC MESSAGE

 Jack, I d/l all the diaryx.zips, tried to read thru the documentation
 then decided it would be quicker to print them out and read at my
 letter. An inch thick of paper later, I decided to stop half way then
 read thru. I had all the documentation for F83. That could be useful.
 The rest was dry reading about standards that I dont need just yet. I
 see lots of evidence that F83 is a good standard to use to learn Forth.
 But MVPforth is recommended for starting with forth 79. Then, I have
 Abundance and FPC and should I d/l FPC 3.5. What to do! What to do!
 What to do!. Have you discontinued the tutorial or am I missing
 something after lesson 5???
 ---
  ~ EZ-Reader 1.20 ~ .EXE -ex
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'

GEnie@willett.UUCP (ForthNet articles from GEnie) (12/21/89)

 Date: 12-19-89 (23:42)              Number: 494 (Echo)
   To: GORDON GANDERTON              Refer#: 507
 From: JACK BROWN                      Read: NO
 Subj: LEARNING FORTH                Status: PUBLIC MESSAGE

 GG>But MVPforth is recommended for starting with forth 79. Then, I have
 GG>Abundance and FPC and should I d/l FPC 3.5. What to do! What to do!

 Well...  I shall putting up the latest version of Guy Kelly's PC-Forth83
 which he claims is the best system to learn on!  So then you will have
 another choice to ponder.  I have a colleague who wants to learn Forth
 too but he won't sit down at the keyboard!  Wants to learn it by reading
 books!

 So if you want to learn Forth...  pick a system,... any of those you
 mentioned will do but the best one would be the one that you know your
 colleagues and associates use.  That way you are more likely to get help
 with your problems.  We have a number of people in the BC Fig chapter
 that use F-PC.  Dave Brown, me, Zafar Essak, Kenneth O'Heskin, Roger
 Bicknell, ...  just to mention a few that come to mind.

 Once you pick a system then stick with it and write code.  If you can't
 write any code then try someone else's code and modify it (improve it!).
 If it breaks find out why and fix it! Then you will have learned
 something new.


 GG>What to do!. Have you discontinued the tutorial or am I missing
 GG>something after lesson 5???

 Well...  yes....  I must agree it looks like it has been discontinued
 but in fact it is only stuck!  I'll try and get started again...  In the
 mean time if you are looking for something to program why not try one of
 the puzzles that I have been posting in the  PEER (ECFB) or REVIEW
 (BCFB) conference.
 ---
  * QDeLuxe 1.01 #260s

 NET/Mail : British Columbia Forth Board - Burnaby BC - (604)434-5886   
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'

ForthNet@willett.UUCP (ForthNet articles from GEnie) (01/06/90)

 Date: 12-22-89 (16:17)              Number: 495 (Echo)
   To: JACK BROWN                    Refer#: 494
 From: GORDON GANDERTON                Read: NO
 Subj: LEARNING FORTH                Status: PUBLIC MESSAGE

 S>Once you pick a system then stick with it and write code.
 Thanks for the advice Jack.
 S>mean time if you are looking for something to program why not try one of
 S>the puzzles that I have been posting in the  PEER (ECFB) or REVIEW
 I appreciate the availability of these puzzles, Jack, but what I really
 would like to learn is an overall concept of Forth. I know this must be
 possible because I learned overall concepts of Basic and C. For
 example, a simple name and address program. Nick Dennis showed me one
 in Abundance but to me it was too complex using unique Abundance words.
 As you know, I missed the demo of a simple data base at the club
 meeting. I know that Dave Brown has a simple data base but again, this
 is too complex for me. I am looking for something just a little bit
 beyond the simple:

 : INPUT ." What is your name? " KEY ;
 : ANSWER ." Your name is " ;
 : RESULT  INPUT ." Hello " ANSWER ;

 This example was done in a hurry and is full of errors and wont work. I
 just wanted to demonstrate how little I know about simple strings.
 Thanks, Jack and Merry Christmas and Happy New Year to you, Dave and
 your family. Thanks a lot for all your help in the past year. rgds.

 ---
  ~ EZ-Reader 1.20 ~ .EXE -ex

 NET/Mail : British Columbia Forth Board - Burnaby BC - (604)434-5886   
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'

plph@caen.engin.umich.edu (Mark Montague) (07/03/90)

I am interested in learning FORTH, but can't afford to spend much (if any)
money on it.  If I could get everything electronically, that would be ideal.
I have a 80386 system running both OS/2 and MS-DOS, but would like to keep
my learning "clean" and applicable to all machines.  Could somebody out there
please help me out and point me in the right direction?

Thanks.

Mark Montague
plph@caen.engin.umich.edu

skoda@AQ.SSC.AF.MIL ("A1C John F. Skoda IV") (08/14/90)

	Where can I find some good FORTH reference material, is Leo Brodie
 the only FORTH author? Also what projects have used FORTH sucessfully ?

*******************************************************************************
* jskoda@aq.ssc.af.mil    *  '...What do you do if you ARE a manically        *
* jskoda@aqlan.ssc.af.mil *  depressed robot...'                              *
* SSC/AQAA Gunter AFB     *              -- Marvin (The Hitchhikers Guide To  *
* Montgomery, Al, 36117   *                        The Galaxy )               *
*******************************************************************************