[comp.lang.forth] ***** NEON *****

LANGOWSKI@FREMBL51.BITNET (Joerg Langowski / EMBL Grenoble) (03/19/90)

A while ago, Bob Loewenstein <rfl@oddjob.uchicago.edu> posted a note on this
board about his extensions to NEON, a Forth-based OOP system for the Mac.
People on this board might recall that NEON was originally developed by Kriya
Systems, who don't support it any more; a sad fact that everyone regrets who
ever used this excellent product.
I recently received a letter from a MacTutor reader in Australia who doesn't
have access to E-mail systems and thus asks that his letter be posted. (The
letter was originally sent to Bob Loewenstein). His name and address:

    Michael Hore
    5/137 Elouera Rd.
    Cronulla, NSW 2230, Australia

The copy of Mike's letter follows:

"Dear Bob,

I've just read your comments on NEON in the October issue of  MacTutor  (which
takes  a while to arrive on the newsstands here). I was amazed (and delighted)
to see that there are still a number of folks using NEON - I thought  I  might
be  the  only  one!  I  have  always thought that this was the most underrated
development system for the Mac. A good product with potential to  be  a  great
one, but torpedoed by a marketing strategy which bordered on the nonexistent.

I  also  found no problem running on a Mac II - my personal finances don't run
to one, but I had a report that an application that I wrote in NEON worked  OK
on  a  Mac  II.  Like  you  I kfound I had to set a larger stack size than the
default - unless I set at least  7K  I  got  random  crashes,  usually  during
Standard File calls. Maybe this was the cause of the problems others ran into.

I  also started to develop NEON, but thinking I was about the only user I took
a more radical line than you - I completely  reimplemented  the  nucleus  from
scratch.  It now compiles subroutine-threaded code, with optimized native code
for common sequences. The result is that applications run  4-5  times  faster,
and  are  about  10%  smaller. The compilation speed is now over 1000 LPM. The
whole assembler compiles in about a minute. I've also introduced quite  a  few
improvements  to the high-level code - at least I think they are improvements.
Multiple inheritance, for example. I thought the changes were  radical  enough
to  justify  a  change  of  name,  so  now  I'm  calling  it  Mops  (Michael's
Object-oriented Programming System!)

My understanding of copyright legalities  is  that  the  Mops  nucleus,  being
completely  new, would not violate Kriya's copyright on NEON. That is unless a
language, as such, is copyrightable,  rather  than  the  specific  code  which
comprises  a specific implementation. I think it probably isn't copyrightable,
but I'm not a lawyer. But since I haven't changed  all  the  high-level  code,
Kriya  still  definitely  hold  the copyright to that (unless you were able to
persuade them to release it into the public domain - how did you get on?). But
I'm  quite  happy  to  send  Mops  to  anyone who has NEON, since that doesn't
involve legal problems. In any case, I don't have the time or  inclination  to
document  Mops from scratch for someone unfamiliar with NEON. I will produce a
file listing the changes between Mops and NEON, if anyone wants Mops.  If  I'm
the  copyright  holder on the Mops nucleus, my only conditions are that it not
be used for commercial purposes without my permission.

So if you or any other NEON users are interested in giving Mops  a  try,  just
write me, or better, send me a disk with some of your NEON developments on it,
and I'll send it back to you with Mops. Sorry for the horse and buggy  method,
but  distance  precludes  electronic transfer. Perhaps you could do me a favor
and post some of this letter on  some  appropriate  bulletin  board,  in  case
anyone might be interested.

Of course, if your NEON code makes much use of implementation details of NEON,
like expecting certain things to be at CFAs or whatever, it won't  work  under
Mops  without  rewriting.  Also,  I  took  a different line on floating point.
Actually, this was only experimental since I don't need FP in my work  -  it's
all  string  handling. NEON FP is very implementation-dependent, so a fair bit
of work would have to be done to get existing FP code to work under Mops.  But
it certainly could be done.

Apart  from  that,  the  main  differences  from  NEON are in the direction of
improving the error checking, and also in bringing the underlying  Forth  more
in line with Forth 83 and the forthcoming ANSI standard. Most of the necessary
changes to  NEON  code  can  be  done  semi-mechanically.  I  found  the  most
troublesome  was the change in boolean "true" from 1 to -1. If you don't often
do arithmetic on booleans, you won't have much trouble.

I've also tried to make Mops 32-bit clean, and it seems  to  work  OK  on  new
Macs.  At  least  it  worked  on  a  friend's  SE/30 (which cheered me up, and
slightly compensated for the green colour of my face).

I haven't had time yet to update  all  the  various  NEON  utilities,  or  the
classes  that I don't actually use. But I have updated all the standard stuff,
implemented a modeless dialog class, and written a new decompiler/debugger.  I
also have code that will read and write formatted Microsoft Word documents, if
that's any use to anybody."

-------------------------

If anyone is interested in getting the Mops code, mail Michael Hore a disk.

Please, comments - I'd like to see a revival of NEON.

+----------------------------------------------------------------------------+
| Joerg Langowski                          Bitnet/EARN: LANGOWSKI@FREMBL51   |
| European Molecular Biology Lab             Applelink: LANGOWSKI.J          |
| Grenoble Outstation                                   MACTUTOR             |
 | c/o ILL, 156X                               Calvacom: JL10                 |
| F-38042 Grenobyl Cedex                         GEnie: J.Langowski          |
| France                                        analog: +33-76487306         |
+----------------------------------------------------------------------------+
| "C++ is the Forth of the 90's -                                            |
|                        they don't call it OOPS programming for nothing"    |
+----------------------------------------------------------------------------+