
Lisp Machines - apgwoz
http://patrickcollison.com/blog/2008/04/lisp-machines
======
EdwardCoffin
Kent Pitman wrote a pretty good posting in a comp.lang.lisp thread, in which
he described some of the tight integration that made Genera so good:
[http://groups.google.com/group/comp.lang.lisp/browse_thread/...](http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/5e9bd4c05db129b9/b2c0190dc30c3e5f?lnk=st&rnum=1#b2c0190dc30c3e5f)
.

This was one of the things that convinced me to buy one (I have a MacIvory
Model II). I've found it a bit difficult to get into, mainly because I don't
have the time to spend immersed in it long enough to make the things I've
learned stick. I also suspect that a number of the real benefits come from
things that aren't immediately apparent, you really need to work with people
who know the environment to show you these tricks. I know that's the way I
learned Smalltalk - if I'd learned it from books on my own, I'd probably have
not realized all the advantages that could be gotten from such an interactive
environment.

If anyone can suggest any features like the two that Pitman describes above
that I (or anyone else) could investigate, that would be great.

------
mark_l_watson
I used a Xerox 1108 Lisp Machine from about 1982 through 1989 - a great
developer experience, and not a bad platform to sell software products on.

That said, I encourage people who want to hack/learn Lisp to stick with one of
the modern setups like: Common Lisp (with Emacs or a complete free IDE setup
like ClozureCL), Clojure (with Emacs or other IDE), Racket, or, ...., etc.

I would much rather see people spend time learning a Lisp language rather than
fiddling with very old environments.

~~~
jf
While I agree with you in principle on not "fiddling with very old
environments", I had to try out Genera after hearing from two separate people
that Lisp Machines were the best computers they ever used. One guy was a VP at
Yahoo. The other guy is a core contributor to the Java VM.

Both of these guys are hardcore Emacs users, running Mac OS X, and have in-
depth knowledge of POSIX. It was hard for me to write them off as people who
just didn't understand how modern computers work.

Fiddling with Genera has been a very worthwhile endeavor because of how much
I've learned from it.

What have I learned? Well, so far I've learned that Genera is basically a case
study showing that Richard Stallman's fears were actually well founded. I also
learned a tremendous amount about an important but obscure part of the history
of computing, a history that I think is actually a vision of what our future
is.

So, yes, by all means, hack on and learn on one of the modern setups that Mark
suggests above. Once you've done that, look me up and I'd be more than happy
to give you a tour of Genera on my MacIvory.

~~~
javascriptlol
>It was hard for me to write them off as people who just didn't understand how
modern computers work.

I'm glad you didn't fall for that trap. Software engineers constantly make
excuses for doing things in idiotic ways. Almost nothing I use really works
anymore. It just "kind of" works most of the time. Look at your average web
applicaton and the ridiculous resources it takes to get the thing up on the
screen and interacting with the user. We've become addicted to high powered
machines and finding more complex and inefficient ways of doing the same
things.

~~~
jf
> I'm glad you didn't fall for that trap.

Well, maybe I'm not in that trap now, but I was for a long time.

> Almost nothing I use really works anymore.

I'm hoping that I can hide from that inside the Emacs monastery. That didn't
seem to work for jwz though, so I'm not sure if there's a way to avoid having
to update my silly software several times a decade.

------
jf
I ended up purchasing a Symbolic MacIvory because of this blog post. They
aren't cheap!

I wrote about my experiences learning to use Genera here:
<http://genera.posterous.com/> \- which reminds me, I need to spend more time
with Genera.

~~~
_exec
What's the advantage of using a MacIvory against using the emulation method in
the linked article? Aren't the physical machines slow by today's standards
(+cots of maintenance, failed hardware etc)?

~~~
jf
The primary advantage for me is that purchasing a MacIvory gave me a legal
license to run Genera. This is important to me because I work for Microsoft, a
company that pays my salary by selling licenses to software.

I've also been told that a lot of things didn't work or were missing in the
version of Genera that people can find online. I can't speak to the validity
of that statement though.

------
scottjad
It's too bad no one has released a virtual machine with all the configuration
steps already done and the system up and running so people can easily try it
out.

~~~
kinleyd
That is something which looks pretty doable. It would be worth taking a crack
at it.

------
geoffhill
If only hardware research and optimization had gone the way of stack machines
instead of register machines. I can only imagine the world of Lisp machines,
Forth machines and APL/J Machines that would exist if the hardware more
closely matched our expressive languages.

~~~
rayiner
It wasn't stack machines so much as it was RISC and UNIX. The RISC philosophy
basically took every instruction not needed for efficiently implemented C and
punted it to software, even if it could be efficiently implemented in
hardware. Then UNIX took pretty much every machine feature not needed for
running C programs and hid them from software.

Take, for example, read and write barriers for GC. On a modern system with
virtual memory, each memory access is run through a TLB which has among other
things protection and page out bits. That could easily be supplemented with a
couple of extra bits to implement GC barriers. While we were getting greedy,
we could even add a lightweight trap mechanism of handling the associated
faults in user space, at the user's privilege level, to avoid the expense of
transitioning into kernel privilege level (indeed Intel and AMD implement all
the necessary functionality in their virtualization extensions).

~~~
jgon
This is very much in line with what Alan Kay says about current chip
architectures compared to what was available when he was coming up in the
field. He often talks about the Burroughs machines and how much more advanced
they were compared to our current CPUs and laments that for all the gains that
Moore has given us, we have lost incredible amounts of speed via our
architectures being aimed solely at C.

One anecdote that he likes to use is to compare the speed of Smalltalk running
on the Xerox Alto computer with Smalltalk running on a current CPU that is
50,000x faster than the Alto. He notes that benchmarks run in both systems are
only 50x faster, claiming that this means we've lost a factor of 1000x in
efficiency just on the basis of using inferior architectures (at least
inferior if your target language isn't C).

Part of me is thankful for the relentless push of x86 and the speed gains
realized, but another part of me really regrets that all of the crazy
architectures from the 70's and 80's have been lost.

~~~
rayiner
The 1000x figure is probably an overstatement, as is the 50,000x figure.

The Alto's main memory had a cycle time of about 850 nsec, and could transfer
2 16-bit words per cycle: [http://www.computer-
refuge.org/bitsavers/pdf/xerox/parc/tech...](http://www.computer-
refuge.org/bitsavers/pdf/xerox/parc/techReports/CSL-79-11_Alto_A_Personal_Computer.pdf).

This gives a main memory bandwidth of roughly 5 MB/sec. A top-end single CPU
system today has probably 25 GB/sec available to it, a factor of 5,000 more.
Moreover, much of that is achieved through optimizing burst reads--actual
sustained random access throughput is going to be much lower and the delta
much less.

Given modern implementation techniques, the actual efficiency loss is probably
on the order of 10x rather than 1000x. And much of it is the result of the
memory wall, which has been driven by DRAM physics rather than micro-
architecture. Doing a couple of memory lookups to support dynamic dispatch is
a hell of a lot more expensive, relative to an ALU operation, these days than
it was 30 years ago.

------
mrbill
This just reminds me that I really need to get the MacIvory board set that I
bought from David Betz up and running... I have the old Mac, the AEK II with
template, and so forth, just not the TIME. :(

------
kruhft
I'm trying it out, but I can't seem to get past the "Please type the date and
time:". Does anybody know the format that it expects to keep from dropping
into the debugger?

I'm assuming that it should be getting the date and time from the network but
that doesn't seem to be working either, although I'm not using a dedicated
host like in the article. I'll do further exploration on a dedicated machine
at a later date.

~~~
ScottBurson
You tried "MM/DD/YYYY hh:mm:ss"? Uh, maybe add " PDT" or whatever is
appropriate for your timezone.

(It's been a couple of years since I booted my LispM, but I used to know how
to do this :-)

~~~
kruhft
I tried your format, and every time I get

    
    
      Error: Unable to set calendar clock
      
      TIME:SET-CALENDAR-CLOCK
        Arg 0 (TIME:NEW-TIME): 354054620
    

and then drop into a debugger. Are there any steps I could do when it can't
set the time to get the rest of the system to boot?

Edit: the emulator is outputting:

    
    
      arithmeticexception; file stub/output10 line 215
    

when I enter the time, so there must be an emulation error of some sort.

~~~
ScottBurson
Are you typing the year as "2012" rather than "12"? The universal time you
have shown here decodes as 3/22/1911, which is close enough to 100 years ago
to make me wonder. Either that, or you copied the display contents by hand and
left off a digit.

~~~
kruhft
Yes, I did type in 2012 and I did copy the display contents by hand due to no
copy/paste from the terminal window. I think I got it right, but I might have
missed a digit.

~~~
zqfm
Have you had any luck with this? I'm running into the same issue.

------
_exec
Why hasn't anyone ported (Open)Genera to modern architectures? What are the
barriers?

~~~
sedachv
Here's the least-hairy part of the disk drivers in the LMI source code:
[http://code.google.com/p/jrm-code-
project/source/browse/trun...](http://code.google.com/p/jrm-code-
project/source/browse/trunk/lambda/io/new-disk.lisp) I haven't looked at any
Genera source code, but I suspect it is similarly hairy. It's a lot of work.

~~~
_exec
Outch..are there any other Lisp OSes? I remember finding a list sometime ago
but none of them showed any promise AFAIK.

~~~
kruhft
Movitz is one: <http://common-lisp.net/project/movitz/movitz.html> and
<http://trac.common-lisp.net/movitz> for where to get the code.

------
kinleyd
@apgwoz: Thanks for sharing. Going to take a crack at it, and also try to make
a VirtualBox OpenGenera appliance. No eta though, but the aspiration exists.

