ķ
 The Origin Of "A Beginner's Guide To Euphoria II" 
Ľ

Where to begin?  I suppose I should start from my beginning....

It all started when I got my first computer (a TRS-80 Model I) in 1981.
I was 17 back then, and like any bright-eyed teen, I was intrigued
with the technology of that time. I enjoyed fiddling with the hardware
and making it do what I wanted, even though it only had 4K (!!!!!) of
RAM and virtually no semblance of an operating system (yep, everything
hardcoded into the computer). But what I really liked was the ability to
write my own programs. At that time, all I had to work with was a
primitive form of Radio Shack BASIC and Z-80 Assembler, but it was
worth the effort.

As time went on and the technology became more advanced, I played with
more programming languages. I played with GW-BASIC, then QuickBASIC (both
the compiler and interpretor versions). I also flirted with Assembler. But
like the programming languages on my TRS-80, I couldn't find the
language I was really looking for.

One of my reasons for this dissatisfaction was the weak support in
graphics. I was certainly not an artist by any standards, plus the
amount of graphic commands available did not make it very easy to
create images. Even though there were programs out there that created
very professional graphics, it was extremely hard to get information in
layman's term on how to load them into the programs I wrote. A second
beef was the amount of (what I considered personally to be) "junk variable"
types that were too complex and too inflexable to be of any use. My third
beef was the trend programming languages were heading. I noticed that
as programming languages got more powerful, the protective barrier
between the program and the operating system became thinner. By the time
I went to C programming, I was playing with dangerous commands
like pointers and Assembler calls to graphic routines. As a result, I
found current programming languages too inflexable for writing
software.

This changed when I came across Euphoria. It was version 1.2 at the time,
which I downloaded from a BBS. The first thing that caught my eye was
the number of variable types. There were only two types: atoms and
sequences. I initially found this rather lacking, seeing that C for example
had many variable types. What could be done with two? But as I experimented
with the code, I understood the reasoning behind Euphoria variables. By
only introducing two very elemental types of variables, you have the
ability to use them as building blocks to create more complex variable
types for your use. The concept of the sequence type variable was
extremely radical, yet had the best traits of both
singular data values and arrays. With this sort of variable, you can
treat it as both a single value and as a list of values. Another thing
that I really liked about Euphoria was the emphasis on program stability.
Euphoria will not allow you to write programs with uninitialized variables.
Euphoria also did away with pointers, yet still allowed programmers to
pass a series of values to procedures without any restrictions. C on the
other hand needs pointers in order to pass a dynamic list of parameters
to procedures. But the best I saved for last: the ability to read in
bitmapped graphics (.BMP's) without needing to write the required code.
In other words, only one line of code is needed to read in any .BMP made
by a professional graphic program. To display that bitmap on the screen,
you only needed one line of code. That's two lines of code!

I was won over. I registered at 1.3 and became interested in learning
this language in more detail. Actually, I became a fan and started
to tell my friends about it. Some of them were a little leery at first.
They felt Euphoria's new approach to data organization and the easy way it
can handle bitmapped graphics made it more like an intelligent "query"
script instead of a programming language. However, once they tried to
write sample programs with the shareware release, they realized how
powerful Euphoria was.

It was at this point I wanted to kill two birds with one stone, namely to
learn the language in more depth and to further advertise Euphoria to
other people. This stone turned out to be a web page devoted to teaching
novice programmers about Euphoria. I felt I could pull it off because I
have tutored people in QuickBASIC before, and also was a computer programmer
for two years before the recession of 1990 put a permanent change to my
career. Also, while Rapid Deployment's Euphoria manual explained Euphoria's
features clearly, it could not teach a user who was totally new to
programming how to write a program. I mean, how could they understand
what a variable was, or how to perform input and output? I wrote an
Email to Rapid Deployment Software asking for permission to write a
web page that taught Euphoria programming on a beginner's level. When they
gave me the go-ahead, I began to write the first six installments
of "A Beginner's Guide To Euphoria".

On April 21st 1996, "A Beginner's Guide To Euphoria" made it's debut on the
Internet with the first six installments. As time went on, I wrote more
installments and added them to the web page. I received positive comments
in Email about how much the web page helped them understand Euphoria.
However, one common theme I was reading in the Email was a request to
create an "offline" version of the web page. This made sense because it
by the time I wrote my last installment, entitled "Euphoria And DOS" on
June 28th 1996, "A Beginner's Guide To Euphoria" contained 36 installments.
A lot of online time was needed to go through the entire web page.

I didn't want to write just any old text version of the program. I wanted
the "offline" version to be entertaining and interesting to view. I
also wanted to take the advertising of Euphoria one step beyond by
demonstrating what Euphoria can offer as you read the tutorial. So, I
decided to write a program version of the web page that people could
run on their computer. The program would be based on a futuristic storyline
about warring language factions of a spacefaring civilization (Euphoria
being one of them) fighting for supremacy. The storyline was based on
the very real history of programming language evolution. After all,
there are so many programming languages available today. To learn
Euphoria, you would sit in front of this training console and read the
information on the screen. By using the mouse, you can move anywhere in
the tutorial and even run examples of Euphoria's graphic and DOS features.

The first tutorial (as I now like to call it) was released shy of
August 1st, 1996. And judging from the number of downloads (nearly 2,500
from August 1996 to July 1997 according to Interlog), and from the Email
from users, the tutorial appears to have done it's job very well.
However, it really wasn't the tutorial I wanted to release. Due to time
constraints, I had to make some concessions on the appearance of the
tutorial. Instead of the original design of a pure GUI interface using
just a mouse, I created an acceptable yet more awkward interface that
mirrored more the keyboard than the mouse. Also, I found that maintaining
the text of the tutorial was difficult. So, in February 1997, I decided that
a new second tutorial was necessary, and began work on what was originally
called "A Beginner's Guide To Euphoria 2.00". The new tutorial would
be similar to the first one with the following enhancements:

- the material introduced in the tutorial would follow the style
  used by the reference manual supplied with the Euphoria software.

- the user would only require a mouse to operate the entire tutorial
  (with the exception of the keyboard during the execution of any demo
  programs), using a simple to understand GUI interface.

- the user can view the source of demo programs as well as run them.

- the second tutorial would use graphics and colour more effectively, giving
  it a more professional look.

- the Euphoria programming language would be covered in a much wider scale
  to appease those newcomers to Euphoria who were proficient in other
  languages like QBasic or C. For example, chapters were added explaining
  the concepts of bits and bytes and how to use Euphoria library routines to
  manipulate them. At the same time, the material was made more detailed
  and broadened to help even the completely computer naive person who
  wanted to learn programming.

By the time I finished, there was so little left of the original tutorial
I changed the name to "A Beginner's Guide To Euphoria II", Version 1.00.

RDS was asked, as with the first tutorial, to test the tutorial and review
the text to make sure everything was accurate. As a result, this tutorial
is RDS-approved as a supplement to understanding Euphoria. In addition,
several "test drive" versions were released between April 1997 and July
1997 for users to try in order to find any bugs or inaccuracies in the text.

It is my intention to use the easier to maintain structure of this tutorial
to add references to any new features of Euphoria that come out, rather than
create yet another tutorial software. I do not expect to write a "A
Beginner's Guide To Euphoria III" for at least two years or more.

In the meantime, I am in the process of exporting the text from inside
the new tutorial to files stored in directory DATA (chapters 00 to 11
are stored there right now). This is needed in order to reduce the size
of the executable down to a managable level. I also want to add a
"print" feature and to expand on the remote to give it more features,
like a "subject index".

David Gay
July 27th, 1997
