Enter START/NEXT/PREVIOUS to proceed through the 'slides'
(Excuse the "James Burke 'Connections'" style intro!)

START
















































































































































































































































== OVERVIEW OF FORTH ==



'Choose your weapons to match the war.'
         Brad Cox

~'...we can only know something by comparing one thing to another.
  In other words, all understanding comes from the comparison
  of things.'
                  ~Gregory Bateson, 1979

Unix Shell Programming, 3rd ed., Lowell Jay Arthur & Ted Burns
ISBN 0-471-59941-7
John Wiley and Sons, Inc.
p.4, 11

NEXT PREVIOUS
















































































































































































































































== GEO-POLITICAL BACKGROUND ==



Poland, 1920's and 30's

Communist lead Spartacus Legion Revolt in Germany with end of WW I.
Under Poland's General Pilsudsky Red Army defeated in Battle of Warsaw
  temporarily saving Central and Western Europe from Communism.
USSR and Poland sign non-Agression Treaty.
USSR begins getting military aid/training from Germany
Germany keep military 'chops' up training USSR's Red Army
Hitler assumes leadership of Germany
Germany and Poland sign non-Agression Treaty.
  "Poland is at the spearhead of the struggle against
    International Bolshevism".
Germany and USSR sign 'non-Agression' Treaty.
  ......

NEXT PREVIOUS
















































































































































































































































== POLISH RESOURCES AMIDST THIS TURMOIL ==



Land
  Agriculture
  Coal
Humans
  physical labor
  Brains

NEXT PREVIOUS
















































































































































































































































== BRAINS ==



Alfred Korzybski
Kazimierz Twardowski
Jan Lukasiwiecz
Alfred Tarski
Marian Rejewski

NEXT PREVIOUS
















































































































































































































































== WHAT THEY DID: ==



Alfred Korzybski - 'General Semantics'
         Sen. S.I. Hayakawa (USA)
         P.W. Bridgman (USA) / physicist, philosopher, Nobel Laureant
             Monolithic semiconductor crystals
             'Operationalism'
                Quantum Mechanics
                  Max Born, W. Heiseinberg, P.A.M. Dirac, R.P. Feynman,
                  W. Duane, A. Lande etc.
                Alan Turing (UK) / Mathematician
                  Operational definition of Intelligence
         (John W. Campbell)
           A.W. van Vogt, R.A. Heinlein, Fritz Leiber etc.

Kazimierz Twardowski - Founded 'Polish Philosophy/Logic' school

Jan Lukasiewicz - Analysis of Aristotle, multi-valued logic,
                       *Polish notation*

Alfred Tarski - various math and philosophical issues
                  'Definition (Conception) of Truth' 'A <=> "A"'
        Willard Van Orman Quine (USA) / cryptologist, logician, philosopher
        Alissa Rosenbaum (aka 'Ayn Rand') (Rus./USA) / novelist, philosopher
               'A = A'

Marian Rejewski - Breaches the German Enigma Encryption machine
       followed up with work by UK's Bletchly Park
            Alan Turing, Gordon Welchman etc.

NEXT PREVIOUS
















































































































































































































































== RUN UP TO FORTH ==



1950's

Alan Turing -> ACE Report -> ACE machine -> DEUCE machine ->
      George (stack, RPN)

John McCarthy - Lisp

ACM publishes note on RPN assembler

IBM impliments early FORTRAN with threaded code interpreter

HP calculators
Pascal P-code

Charles Moore takes Lisp class from John McCarthy
1958 Moore experiments with interactive interpreter
~1968 Moore begins using term 'FORTH' for intepreter on IBM 1130
1971 NRAO  first large Forth project carried to completion
     Rather and Conklin become involved in SW maintenance
1973 Moore, Rather, Conklin found Forth, Inc.

     Forth + assembler for ~60 operations + 2 weeks = new port

~1978 Moore gives presentation to Bay Area computer club
      FIG founded
      FIG makes source listings available

1980's   Aug. 1980 Byte Magazine Forth issue
         Laxen and Perry F83

1991   Sun Open Boot,  William 'Mitch' Bradley

NEXT PREVIOUS
















































































































































































































































== DECODING THE 'CULT' ==



Rest of IT community                    FORTH
-----------------------------------------------------
Subroutine, function, etc.              Word
Library                                 Dictionary
Cross-Compiler/Assembler                Meta-Compiler
Tokenizer                               Compiler
Compiler Directive                      Immediate word
Interpreter                             Inner Interpreter
Shell                                   Outer Interpreter
Disk Sectors                            Blocks
'.', 'source'                           'load'
echo '....'                             ." ....."
# ....                                  ( .... ), \ ....

NEXT PREVIOUS
















































































































































































































































== DISECTING THE WORD PART I - ALIAS VRS. WORD ==



Shell -- alias name='some commands here'

Forth  --  : name   some commands here ;

alias stored as character string

shell / script construct

word tokenized for later use, assumes global stack available

absolutely the basic subroutine division of language/system

( both ideally one line size )

NEXT PREVIOUS
















































































































































































































































== STACKS ==



division of labor carried to greater extreme than traditional

1 parameter stack   divided into 'cells'
                    passes values between Words
                    stores branch locations during
                          Compilation/tokenization/assembly

1 'Return stack'  - generally used for program flow control
                    return from words
                    DO Loops
                    Temporary value storage

May be more
                     Floating point
                     Split out DO loop parameters
                     Temporary value storage

NEXT PREVIOUS
















































































































































































































































== RPN ==



: greet     ." Hello world."  ;

2 2 + .
4
ok

drop, swap, dup, rot, etc.

For numeric pointer operations, strictly left to right

May read in strings with prefix operation, but does not normally
use any infix operators at all.

All operations/subroutine calls equivalent in operation

*No second pass needed in tokenizing.*
*No recursion anywhere in the process.*

: name    ( ...--.... )  some other words  ; immediate

              --  Tokenizer extension

NEXT PREVIOUS
















































































































































































































































== MEMORY ACCESS ==



>R  R>

12  constant dozen
dozen

variable  age  49 age !
age @

c!, c,, c@, 2!, 2,, 2@,

NEXT PREVIOUS
















































































































































































































































== DISECTING THE WORD PART II - WORD STRUCTURE (FUZZY, GENERAL PICTURE) ==



----------------------------------------------------------------------------
ub | namestring | Link | interpretation bytes | parameter field cells ......|
----------------------------------------------------------------------------
---------------header-------------------------

UB = flag, name count

name string = name of routine

link  = chains words together in a linked list enabling dictionary search

interpretation bytes  = pointer to, OR call to  OR actual routine
                        for interpretation of this word
                        Code Field

parameter field cells = classicly, pointers routines building this word
                        ('Vectored Execution')
                        may be list of subroutine calls
                        may be machine code
                        may be data

NEXT PREVIOUS
















































































































































































































































== VAGUELY FORESHADOWING OBJECT ORIENTED: ==



: name      CREATE  , c, allot etc. setting up data storage....
            DOES>   actions pointed to by code field .....  ;

(put data on stack...) name instance-name

CREATE     makes name header, links into dictionary,

DOES>      sets up a mini-interpeter

NEXT PREVIOUS
















































































































































































































































== FREEDOM ==



: 2 3 ;

NEXT PREVIOUS
















































































































































































































































== LATER DEVELOPMENTS ==



Pre-Tokenization ('compiling') becomes common for interpreted languages
   Java
   Mod-Perl (perl)
   Rexx

At presentation Micro-Soft announces Major New Innovation
For Interpreted Languages
   Ray Duncan (LMI) points out this was not even new with Forth

Adobe's Forth influenced Postscript becomes standard on most serious
printers.

NEXT PREVIOUS
















































































































































































































































== LANGUAGE PHILOSOPHY ==



(based on vague impressions in some cases)

Finite Languages  --   1 way to do things,
                       self documenting,
                       Algorithm oriented
                       complete mental model possible
                       Loved by academics

Pascal
Python
AWK
TCL
Rexx

Infinite Languages  -- More than 1 way to do things,
                       'write only' / cryptic / 'obfuscation' contests
                       access to resources/features
                       continual learning process
                       Dispised by academics

C (etc.)
Forth
Perl

NEXT PREVIOUS
















































































































































































































































== RESOURCES ==



http://www.forth.org
http://www.forth.com
http://www.FirmWorks.com
http://www.home.earthlink.com/~neilbawd/
http://www.taygeta.com/forth.html
http://theforthsource.com
news:comp.lang.forth

'Forth Programmers Handbook' by Edward K. Conklin & Elizabeth D. Rather,
ISBN 0-9662156-0-5

'Learning Forth' by Leo Brodie
ISBN 0-13-843079-9

Dr. Dobbs Journal

'A Tiny Preemptive Multitasking Forth' - Andy Yuen
Mar. / 1996 , p. 58

'Robots and Finite-State Machines' - Everett F. Carter, Jr. (FIG President)
Feb. / 1997 , p. 50

'Forth and Real-Time Control' - William M. Stein
Oct. / 1998 , p. 78

'Smart Cards and the Open Terminal Architecture' - Edward K. Conklin
Dec. / 1998 , p. 70

'Ficl: An Embeddable Extension Language Interpreter' - John Sadler
Jan. / 1999, p. 70

NEXT PREVIOUS
















































































































































































































































END OF PRESENTATION

PREVIOUS START

Valid HTML 4.01!