eX version 0.4b User's Manual                         File eXMan01.txt
(C) Copyright 1995, 1996, William E. Wilgus III.  All rights reserved.

Preface

eX is an inter-active interpreter for the eX Computer Language and has
both program and inter-active execution modes.  The language was
created to be

     handy,       or easily used, saving time or work,
     convenient,  or favorable to one's comfort,
     clever,      [allowing the programmer to be capable of] devising 
                  almost anything readily,
     adroit,      or skillful in the [implementation of the] exercise 
                  of the [programmer's] mental facilities,
     expeditious, or quick [to program or code],
     dexterous,   [allowing the programmer to be] quick at inventing  
                  expedients,
     adaptable,   or able to change without difficulty so as to
                  conform to new or changed circumstances;

and is intended to fill the functional void between computer operating
systems, and applications programs and more traditional programming
languages.

Other than stating eX is a procedural language, its nature is a bit
difficult to summarize.  Judged by the power and scope of its
components, it may be seen as a high level language; by its `anything
goes' nature, a low level language (although it is not); and by its
basis of operation, a calculator.  The following two functionally
equivalent programs give a small insight into eX: 

            show print $alpha := "Hello, world!"                   (1)

                 $alpha := "Hello, world!"                         (2)
                 show $alpha
                 print $alpha

Both programs assign the value "Hello, world!" to a variable, display 
the value on video, and send it to the printer.  The first version
illustrates that this manual shows some programming techniques that
may be employed.  It does not intend to suggest that these techniques
should be used.  Hopefully, though, the above gave you the hint that a
little bit of eX can go a long way.

eX's inter-active execution capabilities---data may be viewed, edited,
created or deleted before, during, or after program or command
execution---provides an environment in which the eX user/programmer
can just `wing it'.  The power of eX minimizes coding and makes it an
outstanding choice for `throw-away', frequently modified, occasionally
used programs; and those small programs that just aren't worth the
bother in other languages.  Since it is interpreted, there are no
compile or link steps; and as it interprets source code, no conversion
to intermediate code. 

As suggested by the fact that it interprets source code (and
compounded by the heavy execution overhead imposed by its abilities),
eX should generally be considered an in-appropriate choice where speed
of execution is more than a trivial a consideration.  But regardless
of their magnitude or complexity, there may be some tasks for which eX
is the best choice because of one or more of its capabilities.

Although an estimated 10 to 15 percent of this version was written in 
assembly language (sprinkled here and there), the remainder of the
roughly 30,000 program lines of spaghetti code was written in BASIC. 
While slow, the BASIC employed provided the required length encoded variable 
length strings (which are not native to C) and the power of a relatively high 
level language (as opposed to C's relatively low level).  The assembly 
language was used to reduce executable size, make the operating system 
facilities available to the interpreter and language; and---coupled with 
revised BASIC code---an increase in speed over earlier pure BASIC versions 
by a factor of more than 40.  But it is nearly time to port it to C.  I 
sometimes long for dimensioned variables (impractical if not impossible to
implement with BASIC) and I dislike the limited string space in this
version of eX.  And although this version ain't too shabby on my 120MHz 486, 
the thing about execution speed is that there's never enough!

It is possible, of course, to write obscurely in any language.  More
than a few years ago, one of the `hot' topics of discussion was 
implementing English as a computer language.  As wonderful as English
is, the simple sentence 

                       Jack ran after Jill.

presents comprehension problems for the human reader, as well as any
interpreter or compiler.  Did Jill run first or was Jack chasing her? 
As it can be extremely terse, I can write small programs in eX that I
have trouble understanding a couple of MINUTES later.  But as it is
also essentially syntax-free, I can write very coherent programs.  The
economy of syntax allows program elements to be placed `on the paper'
in a way that visually demonstrates the flow of the program, and the
language's brevity allows a large `piece of the puzzle' to be viewed
at one time.  Additionally, both attributes enhance my ability to
implement the solution to the programming problem in the manner that
the solution occurs to me.  So like English eX can be clear or
obscure.  (Or faulty, as was that!)

Learning eX is not difficult, and not much of it needs to be known in
order to use it.  Most will never use all of its capabilities, and
some of its capabilities may never be used by anyone!  eX is a quite
consistent language with only a few simple fundamental concepts to
learn---of which most, if not all, will be recognized by users of
other computer languages.  The division of this manual into two parts
(tutorial and reference) is not as absolute as the implication.  The
intent of the tutorial is to present material that the eX programmer
either must know or should have knowledge of.  It tries to teach eX,
but not computer programming in general.  In addition to providing the
function indicated by its title, the reference presents material that
may be learned as needed.  Regretably, the eX topics are sufficiently
inter-related that writing the manual proved a bit difficult. 
Hopefully, subsequent manuals will be improved. 

Version 0.4b is a further development of the prototype.  eX and this
manual are to date the work of one person, who recognizes that there
is room for improvement.  Your comments and suggestions are invited
and will be appreciated.
