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."