[net.micro.mac] Neon Information

dubois@uwmacc.UUCP (Paul DuBois) (05/09/85)

Someone asked for information on Neon.  One of the lab techs here
just got it, and I have just spent a couple of hours perusing the
manual.  Note that I have not used it, seen it, or anything.  I
don't even know how much it costs.  It looks interesting, though,
so if/when I find out more from him, I'll post more information.
This review is, therefore, from an un-experienced reviewer at best.
Further, I wrote things down while paging through pretty much at
random; what follows will probably reflect that fact.  It also
reflects my own bias in what I would look for in a language.

Neon is an object-oriented language, a cross between Forth and
Smalltalk, I guess.  There are classes and objects within classes,
etc.  Neon provides several built-in classes, such as windows and
menus, to help eliminate as much of the setup and initialization as
possible.

The manual is about an inch think, comes in a 3-ring looseleaf binder,
about 5 1/2 x 8 1/2 (i.e., IBM manual size).  First thing I checked
was whether it had an index.  Nope.  Too bad.  But I'm not sure it
would help much.  The manual is very dense and full of all sorts of
confusing information.  This is not to say that I didn't enjoy it.  I
personally prefer difficult manuals that have to be read a few times
to appreciate, as opposed to all-fluff/no-content easy-to-read manuals
like the Mac* manuals.

The type size is quite small, so if you need glasses, you'll really
need them to read this - its smaller than 9-point on the Macintosh
screen.  But of course, it was typeset with a LaserWriter, so it's all
ok.  :-)

The Manual is organized into a tutorial and a reference section.
The tutorial has a general info, then 19 lessons, and then some general
information about various aspects of Neon.  The reference manual has a
section describing the built-in classes, and a glossary of the
built-in words (1000 of them!  86 pages!).  There are three appendices
(the plural of kleenex is kleenices, by the way), one for error
messages (it even tries to say what you should do to correct the
errors), one of toolbox miscellany (essentially it consists of the
contents of the .h files found in any sumacc system), and a tree of
predefined classes.

There are a number of minor typos.  This could be an irritation.  An
errata sheet is included, though, which catches most of the ones I
saw.

I don't think Neon is copy-protected, since one of the first things in
the manual is an admonition to make a backup copy and then squirrel
away the original so you're not tempted to use it.

The disk does not contain a system file, so you have to boot up and
copy stuff you want onto a system disk.  All of it won't fit, but this
is because of a marvelous reason - they include much of the Neon
source code as text files.  Bravo.  These you of course don't need on
a system disk.

Neon will run on a 1-drive 128K, but they recommend a 2-drive 512K.

This version only has integer arithmetic.  Floating point "in the
future".  Something to consider.  It does has unsigned operations (on
single precision (32-bit) words) and signed double (64-bit) words.

Does various sorts of string operations.

Has most (all?) of the standard Forth words.

The prompt is interesting.  It shows the current stack depth and has
an indicator of the current arithmetic radix.  Examples:

	3->	(3 items on stack, decimal)
	0$>	(empty stack, hex)
	1?>	(1 item on stack, "other" radix)

Allows named parameters and local variables, to obviate much of the
messing around with the stack that's such a hassle in Forth.  An
example, to calculate (a+b-3c)/(b+3c):

	: formula { a b c \ num denom }
		a b + 3 c * - -> num
		3 c * b + -> denom
		num denom /
	;

The stuff in the { } to the left of the \ are the parameters (which it
pulls off of the stack).  To the right are the local variables.  Both
are optional, I think.  This is certainly a welcome relief from
swap/dup/rot, etc.  From the manual "When you use named input
parameters and local variables in the same definition, your worries
about the stack nearly disappear."  The person from whom I borrowed the
manual seems to agree.  It was one of the first things he mentioned.


Has a C "++"-type operation, (++> var), but no "--".  It would be easy
enough to define one, though, using "negate" and "++>".

Has "<<" and ">>", that act like C shift operators.

Can create applications with no licensing fee.  You must strip down
the system so the user can't break out of your application and get at
Neon itself.  They give instructions in gruesome detail how to do
this.

There is a "patch" word that replaces references to "word1" in user
defined words with references to "word2".  Forward references are
also allowed.  I suppose that these can be used to create recursive
and mutually-referencing words.  That's a plus.

Modules are provided.  These can be separately compiled.  Classes
visible only within the module can be defined.  In fact, the only
thing visible to outside is what you allow with exports.  I think that
that user is responsible to free unused modules from within an
application so as not to run out of memory.  On the other hand, if
this is done right, you can write applications bigger than available
memory.

Neon beeps on errors (like typing in an unknown word).  The manual
says that you will "welcome" this feature [sic].  Given the tone of
some of the discussion in this newsgroup lately, I have my doubts.
I know that I hate the Apple II's predilection to make noise.  I tend
to think that my first purchase after getting Neon (if I get it) would
be a cheap audio plug at Radio Shack, so's it will shut up.

You can test for various sorts of events.  I think you can also put
events in the queue.

Range checking on indices can be turned on/off.

Has a case statement.  There is no fall-through as in C.  There is a
default case.  There is also a select statement which is similar to
the case, except that the selectors must begin at 0 and increase by 1
for each additional clause.  This form is supposed to be more
efficient, hence, faster.  Also has a default.

There are "cls" and "home" statements for the screen.  That ought to
keep us from missing our BASIC interpreters too much!

Apparently it supports the sound, printer, serial drivers.  There are
predefined words especially for the printer, and perhaps the others.
Source is provided for all three as far as I could tell.  Judging from
the difficulties some have been having in this area, Neon might be a
breath of fresh air in this regard.

Has toolbox access, though I'm unqualified to judge how well it does
on this, since I don't have IM and don't know anything technical about
it except what I glean from reading sumacc source (which isn't much
without IM!).
-----
What do I conclude?  Well, I'm anxious to have my friend give me a
demo, to have a look at the source code, to see how fast it is and to
find out how much it costs.  It certainly looks interesting.

-- 
                                                                    |
Paul DuBois     {allegra,ihnp4,seismo}!uwvax!uwmacc!dubois        --+--
                                                                    |
"The presence of weeds in the garden is not explained by            |
  saying that the gardener has not pulled them yet."