Michael Parker - Toys
Update: The Symbolics is for sale.
I don't use it as much lately
as I used to, and the wife wants to put the computer room to other
uses. It's a Symbolics XL1200 with 8MW RAM, late-style monochrome
display, 1 800mb ESDI drive currently configured as boot and paging
drive, 4gb bootable SCSI holding main filesystem, and CD-ROM drive,
all Symbolics software (Joshua, Statice, CLOS, CLIM, C, X-Windows, FTP,
NFS etc). No paper manuals (fortunately! -- they fill a wall), but it's all
online. $3000 obo.
NeXT and Symbolics workstations snuggling happily
The NeXT Station has a 33mhz 68040 and 32 MB RAM, and
was built in I believe 1991. It is running NeXTStep 3.3,
which is a direct ancestor to Mac OSX. Unlike OSX, it not
only runs on such limited hardware, but is even snappy.
Although NeXTStep is a dialect of Unix, the GUI is built on
Display Postscript, not X Windows. Sadly, the dominance of X has
pretty much killed this concept. The system software is
written in Objective-C, which is a cross between Smalltalk
and C, and a much better OO language than C++ (and I've
worked on multi-million-line C++ projects, so I know whereof
I speak). Given the close relationship between NeXTStep and
Mac OSX, I suspect that large chunks of current mac software
is probably also written in Objective-C. The OS is object
oriented to a degree that Windows XP wishes it were. And
this system was available in 1988.
The Symbolics has a 40mhz Ivory processor and 8 MW RAM,
and also dates to the very early 90's. It is a word-
addressed stack machine with 5-byte words, where each word
consists of 32 bits of data and 8 bits of type information.
This type information is used rigorously by the processor to
enforce program safety. The closest equivalent nowadays
would be the JVM, except that this machine does it all in
hardware. So trying to treat an integer as if it were a
pointer will cause an exception. Walking off the end of a
string or array will cause an exception. Although commonly
called a "Lisp Machine" this is a misnomer, since it also
runs Fortran, Pascal, Ada, Prolog, C, and ML quite happily.
This particular XL1200 runs Genera 8.3. The software is
written in a variety of lisp dialects, with Zetalisp and
ANSI Common Lisp being the most common. Contrary to claims
that lisp isn't suitable for low-level work, all the
low-level code on this machine is written in lisp. Garbage
collector, device drivers, everything. Except for X Windows,
which AFAICT is basically the MIT code compiled with the
Symbolics C compiler. I'm told that the Ivory processor
discovered an amusing number of bugs in the MIT X Windows
code during the porting process.
The Genera operating system is object-oriented to a
degree that even the NeXTStation can't aspire. Everything
on the screen is an active object; you can do a directory
listing on the console, and each filename knows what it is
and what you can do with it. Mouse over it and it hilights
to let you know it's active. Left-click on it and you get a
menu with options for edit, rename, delete, compile, etc.
Any error message that gets printed out to the console will
have active keywords that if you click on them will bring up
the online manuals to the appropriate spot. You can bring
up a dialog inline in the console, and after you finish with
it it will remain in the scroll buffer like any other text.
Imagine what an XML shell would be like, and you're starting
to get the picture. Except that this type of behavior is
consistent everywhere in the system, the editor, the help
system, the browsers, the inspectors, everything.
The documentation system is a full hypertext system that
predates the WWW and the British Telecom patent by 4-6 years.
Unlike HTML, when printed out in paper form it looks
like it came out of a professional typesetting system. It
also comes with a very nice authoring system called
Concordia that is a wonderful system for banging out things
like manuals.
Other software on the sytem includes Statice, a
quite nice persistent object database, Joshua, an
inference engine and associated framework for doing
rule-based programming. There are a variety of compilers
for things like C, Pascal, Ada, and Fortran. X Windows.
NFS. Yellow Pages. FTP. Telnet. HTTP. And even exotic
things like the Nichimen graphics software.
No Java though, which is amusing because its probably the
closest thing to a Java Processor currently out there. OTOH
Java is a net loss compared to Lisp, so there's not much
point in the exercise.
Some more pictures:
This is the command shell (which Genera calls the
Listener) right after boot-up. Notice the box
around the text
"Press <Select> D to select Document Examiner to read online
documentation", which indicates that it is a hyperlink.
Document Examiner, showing a bit of the Zmacs help.
Again, the cursor is sitting on a hyperlink. The pane to
the upper right gives a listing of the top-level documentation
topics, and the lower right-hand pane ("Bookmarks") shows
you recent topics.
File System Browser. Notice the file versions. VMS had
this feature also, and it's really really nice. It's no
substitute for a Version Control system, but then VC systems
are no substitute for file versioning either.
Peek System Inspector. Looks like an innocuous process
list, except that you can also get to performance meters,
filesystem stuff, other servers, windows, etc. From here
you can grab a window or process and toss it into the
debugger. Even system processes and windows. And since the
system comes with source for pretty much everything, and is
essentially a debug build without the associated speed
penalties, it makes for an eminently hackable box. :-)
For more info, pictures, and descriptions, visit Ralf
Möller's
Lisp Museum .