[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]

Date: 21 JUN 1980 2137-EDT
From: LPD at MIT-AI (L. Peter Deutsch)
Subject: Interlisp things I miss on the Lisp Machine
CC: teitelman at PARC-MAXC

First let me say that there aren't very many things of this kind, and there are quite
a few LM things I will miss going back to Interlisp (backquote and decent macros,
screen editor, wonderful and simple manual, FORMAT, CATCH/THROW, closures,
instances, remote file system).  However, here are some things I still miss even
after five months of acculturation:

1) Masterscope.  The LM has no tools at all except text searches and WHO-CALLS for
finding out facts about programs, or selectively editing places where certain
conditions (perhaps partly syntactic and partly requiring more complex testing)

2) Structure editor.  Although I have become quite fond of the screen editor and
will miss it, I also miss the fact that I can't write Lisp programs that edit
things (programs or data).  I'm sure there are hooks for this in ZWEI, but they
aren't in the manual.  Also, I have yet to be convinced that text editing is
the right model for programs editing programs (although ZWEI does much better
about editing list structure than I would ever have predicted), and I know it
isn't right for programs editing data.

3) Better editor/evaluator/file system integration.  It bothers me that when I
edit something, I have to remember to tell the system to re-eval or recompile it.
It bothers me that updating of the compiled file doesn't happen automatically
(although PKG-LOAD will do this for packages, I don't know how to make it happen
for non-packaged programs).  It bothers me that the transition time between the
editor and listener is a couple of seconds, and that ctrl-alt evaluation,
Evaluate Region, and the ordinary listener all feed different typescripts.
A minor nuisance is that there doesn't seem to be a way to update compiled code
files incrementally.

4) History and the ability to edit my input.  I find myself having to choose
between typing stuff I want to evaluate into the editor and using Meta-Top-E
(in which case the typescript is ephemeral and I wind up cluttering up some
file with the input), or going out to the listener (in which case I can't
recover and edit my input in the case of an error, or re-execute it).

5) Performance.  Yes, I know the LM is twice as fast as a KA-10, but so is
Maxc, and even though Interlisp runs slower than Maclisp if you don't block-
compile, it's quite competitive on non-numeric block-compiled programs,
which are what I usually work with.  The thing that really kills me, though,
is paging.  The problem is that the address space is enormous, and since
there is no garbage collector, data structures wind up sprawling over many,
many pages.  I have an instance of this in the current program I'm working
on -- I do a lot of CONSes, most (but not all) of which become garbage,
and the remainder skip from one page to another.  Yes, I know I can use areas,
but a garbage collector would be much preferable.  I also have a feeling
that something is taking a long time -- I will run a benchmark on Maxc
when I go back and see how it compares.

Hope this answers your question adequately.  I'll be happy to amplify.