Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Kent Pitman on what has been lost moving from Lisp Machines to Emacs / X Windows
- Google Groups
- More LispOS talk (was Re: Lisp subverts the world (was Re: ints vs fixnums (was Re: Java ... (was Re: ... (was Re: ...)))))
- Kent M Pitman Feb 20, 1999 3:00 AM
- Posted in group: comp.lang.lisp
- cba...@2xtreme.net (Christopher R. Barry) writes:
- > Within Garnet you can move your mouse over any object in your GUI and
- > hit F1 to bring up the Inspector which gives you information about
- > every single slot value in the object, displays it's "is-a" hierarchy,
- > and shows you what things it's formulas depend on.
- Within DW, you can move your mouse over any object or subobject
- that has been displayed, whether or not it was part of any GUI.
- You get this virtually for free and have to work hard to suppress it
- if you don't want it. But it doesn't require any special programming.
- One of the most common ways to get a foothold in Genera for debugging
- something is to (1) find a place where the thing you want to use
- appears visually, (2) click Super-Left to get the object into your
- hands for read-eval-print, inspection, etc, (3) use (ed (type-of *))
- to find its source reliably and with no foreknowledge of what the
- type is, who wrote the program, what their file conventions were,
- who loaded it, or any of myriad other things that other systems
- make me do.
- > Under the X windowing system there is this standard tool "editres"
- > that lets you click on any client and bring up it's class hierarchy
- > tree and edit resources interactively.
- Not resources. Objects. All objects. Not just the heavyweight ones.
- Lists. Integers. I somehow don't believe you when you say this is the
- same as what Genera does.
- The usual thing DW enables is the debugging of things that the
- person did NOT make part of the standard interface. Pointing to a UI
- tool and saying it allows you to plan for structured debugging of
- something is missing the point.
- Or maybe you're saying that Garnet allows me to cross the boundary into
- the internals of systems. Maybe I'm missing out.
- When you can make the claim that if you teach me a few paragraphs
- worth of stuff, I will have all of the information I need in order to
- bootstrap myself into a complete understanding of the entire operating
- system and all of its conventions, I'll believe you Garnet and X are
- as powerful as Genera and Dynamic Windows. Until then, I'll continue
- to believe they are different. Incidentally, I'm dying to know that
- there is a tool that will do all that Genera could do only for stock
- hardware becuase the stack of books I need to buy in order to be
- equivalently competent with other systems is daunting and I could
- really do with the savings in time, energy, and money of learning things
- about standard systems in the way I've been doing...
- I don't even find Emacs itself to be equivalently self-documenting and
- easy to get around in, much less the many systems that Emacs touches.
- > I know these things aren't as cool as the LispM's equivalent, but is
- > that it? It sounds like you have few nice applications that have
- > functionality equivalent to modern environments but because of their
- > tight integration you can do a few things that you otherwise couldn't.
- Dynamic Windows offered a tight integration with the system.
- You alleged that all that it offered is captured by Emacs.
- The burden is on you to show that it is. Defining away the problem
- does not do that.
- You haven't said how Emacs lets me "discover" systems. You've only
- said it provides tools that enable those who already know about a system,
- and Garnet/X tools that let me inspect the formally presented UI of a
- system. That's not the same.
- > > But for example, there's no assurance when I read in a source file
- > > that it's the same source file that I loaded. The lisp machine
- > > keeps meticulous records not only of which source files are loaded
- > > and from where but which functions have been patched by which files.
- > > That means I can't make a mistake and use the wrong tags file or the
- > > wrong version of files backing up a tags file.
- >
- > There are modern IDEs available for popular languages with powerful
- > project file mechanisms with very similar capability. Not as cool, but
- > still powerful and usable.
- This started out by a discussion of what's cool. You said Emacs was
- cool and nothing else was needed. Now you're qualifying your remarks
- by saying everything is not as cool, and dodging the specifics I laid out.
- > > There are myriad subtle ways in which Emacs is only a pale shadow of
- > > Zmacs.
- >
- > Other than some of the cool functionality that arises within Zmacs
- > from its super-tight integration with the rest of the environment,
- > what can Zmacs itself specifically do that Emacs can't?
- Paraphrase: "Other than the fact that the system you're talking about
- involved a lot of people investing time and thought on various issues
- that have been lost, can you explain to me why a system in which
- that thought has been lost is deficient?" Uh, ... no. I can't.
- This was about lost features. This was about your claim that nothing
- had been lost. If you leave out the stuff that's lost, you're right,
- there's no difference.
- Look, I used to literally sit around in my office at MIT years ago and
- fuss at people who said Lisp Machines were everything. (I used and liked
- Lisp Machines but I myself didn't think they were what they were because
- of the hardware--they were what they were because of the software and
- the ideas behind them.) I used to ask people "What's an impossible thing
- to do? I'm looking for something to do this afternoon in Teco that people
- say can only do on Lisp Machines." People said Zmail. I wrote the
- approximate equivalent in Teco--filters, and all that. They wanted a
- filter menu. I wrote that in Teco. They wanted mouse handling. (That
- was tough because PDP10's didn't have mice, but I used my imagination a
- little and arranged a mouse protocol from Lisp Machines so you could telnet
- to the teco-based Emacs and click on my filter menus.) They wanted
- Zmail init files. I wrote a Lisp compiler in Teco so that I could use
- people's Zmail init files unmodified. It was about 20K words of Teco
- code, btw. Code was smaller back then... sigh.
- Anyway, I *know* what it is to look at functionality and duplicate it
- elsewhere. It CAN be done. I am not saying it can't. What I'm
- saying is that it has not been done, and it's a crying shame. Few
- people even know there ever WAS a lisp machine, and those who do are
- mostly not rich enough personally to invest the time to duplicate what
- was there. Many people spent a big chunk of their lives investing in this
- dream and it didn't pan out quite as we wish. Ok. Sometimes other
- events win out--not always even for the right reasons. Or at least for
- the reasons you wish. But don't add insult to injury to say that the
- losers in battles such as these had nothing to offer.
- Common Lisp beat out Interlisp, and maybe for good reasons but it doesn't
- mean Interlisp had nothing to offer--some very good ideas got lost in the
- shuffle and I don't pretend that Common Lisp just obviously had a better
- way. Java is going to beat out Smalltalk perhaps, but that doesn't mean
- Java is better than Smalltalk. We owe it to the losers in these little
- skirmishes to make sure that, if nothing else, the good ideas are not lost
- along with the framework. And we do not accomplish that by defining
- that there was nothing lost. That's both callous to those who worked
- hard on these other things and short-sighted to the future, which might one
- day care about the things that got lost.
- There are still Lisp Machines around. If you want to opine on them
- with authority, get one and use it. There is no substitute for first-hand
- data in situations like this.
- > > > And XEmacs can
- > > > embed cool color graphics and glyphs/widgets into the frames to.
- > > > Is there anything a programmer cannot do elegantly and efficiently
- > > > within Emacs?
- > >
- > > In principle? Well, it's all software. You can make it be whatever
- > > youwant, I guess. But in practice, if you're asserting that Emacs
- > > duplicates the features of Genera's editor, I think you're kidding
- > > yourself.
- >
- > This functionality to click on an instance of any object seems really
- > cool, and indeed Emacs as it is currently could never do this. But is
- > that all? And again, this feature doesn't seem specific to Zmacs but
- > rather Genera itself within which Zmacs is tightly integrated.
- No. It's not all. I could enumerate any of a zillion things the
- Lisp Machine editor system has that are not in Emacs. But what would be
- the point? You'd see any finitely enumerable list, tell me it was all
- stuff that could be done, and then say that my point was moot.
- Here are a few, not intended to be complete, but to give you a spirit
- of the degre of "precision" in Zmacs commands that distinguish them from
- Emacs commands:
- * Tags Multiple Query Replace From Buffer
- This is an extension to Tags Multiple Query Replace (which does a
- multiple-strings-at-once Query Replace over a Tags Table; and,
- incidentally, the Tags Tables don't have to be files--the Lisp
- Machine just makes them up on the fly from spaces of buffers, from
- system definitions, etc. on user request). It allows you to put
- pairs of elements and their replacements in a buffer and have
- all replaced in parallel.
- As with all operations of this kind (including Tags operations and
- other mapping operations like "Edit Compiler Warnings"), this creates
- a "possibilities buffer" which is a physical manifestation of keeping
- your finger on where you were in the middle of a complex operation
- so that if you see something else you want to do while you are
- doing the replacement, you can suspend the operation and resume it
- later perhaps after doing other replacements or edits. When editing
- the ANSI CL spec, something I refused to do on anything but a Lisp
- Machine, I often had dozens of these buffers stacked up in simultaneous
- use and was successfully able to resume them to make sure all completed
- while allowing the system to accomodate my "focus".
- * Source Compare
- This command allows you to run a source comparision program (which
- itself is just presentationally way better than Unix diff or
- emacs compare-windows). There was a public version of a source
- comparison program written by someone a while back that is as good
- but is in CL and isn't integrated into Emacs. Alas. But in addition
- to the presentational issues, which are comparatively minor, the real
- feature was how this could be called. It prompts for two things
- describing what to compare, including "buffer", "file", "region",
- "definition", "top of kill ring" and "second in kill ring". you type
- a single character (B/F/R/D/c-Y/m-Y) for each such prompt. It's
- completely essential for comparing files. What I can't comprehend
- is why no one thinks this is essential in a non-versioned file system.
- It's important enough in a versioned file system but in a non-versioned
- system one is always finding "probable copies" of files all over the place
- and trying to understand the differences. Ready access to program
- controlled source compare is central to everything I do and basically
- wholly absent on stock hardware. Another example is when you are saving
- a file on the lisp machine and you find it's been written by someone else;
- in emacs the query just tells you of a problem--in zmacs it offers to
- compare the files before making you decide whether to continue saving.
- It's not the feature itself, though that's important, but
- it's the attention to detail at this fine-grained level throughout the
- system which is why the lisp machine is so fondly remembered.
- And that's my overall point. It's not just about what's missing.
- It's about the lack of interest in those who have created Emacs in
- supporting those other things. I still just use my Lisp Machine.
- It's right here next to my PC, and on a regular basis I just move to
- the other chair and edit in Zmacs. 6 years after heavy-duty
- development ceased on Zmacs, it still whomps the competition and makes
- me not care that processor speeds have gone up a zillionfold in the
- meantime. Others will tell you the same.
- I WISH I could use features like that on a fast processor. that would
- be great. But it isn't likely to happen soon.
- You can say the burden is on us old-timers to tell you what's missing or
- we shouldn't be whining. But I don't see it that way. I see the burden is
- on the victors, who have the resources and who claim their way is better,
- to show us that they won for good reason. We did our part for the cause.
- We may or may not continue to try to do things to assure the ideas aren't
- lost.
- I spend a lot of my time trying to make sure old ideas make it onto
- the books and don't get lost. But I'm just one person. It takes more
- than one person. And the task does not begin by dismissing the need
- to do the job.
- > > Also, I'm not suggesting this was a property of the Lisp Machine or of
- > > special hardware. Nothing the LispM did couldn't be implemented in
- > > standard systems if people were of a mind to do it. But they haven't
- > > been, and it's historical revisionism to deny that stuff has been lost.
- >
- > Problem is, only people that have access to them know specifically
- > what makes them cool. It's nice to hear from you what some of this
- > functionality really is, but it seems that most of it is duplicated at
- > least in part by some modern tools/environments.
- You can order doc sets ... people give them away on this and other lists
- periodically.
- > > Also, I don't see how GNU Emacs Lisp could ever become CL-like, since
- > > Stallman seems to control it and he doesn't seem to like CL. I and
- > > others fussed at him long ago when he diverged from CL. It seemed to me a
- > > conscious decision on his part to not care. (Maybe even a good decision,
- > > I'm not trying to moralize. i'm just saying that the decision to be more
- > > or less cl-like is a political one, and not a community one. And for all
- > > he talks about freedom for all, my impression is that he's very possessive
- > > and controlling about these free things he makes, such that you have a pretty
- > > severe obstacle to ever really changing it...)
- >
- > As I mentioned before, GNU Emacs is slated for Guile Scheme and
- > nothing in the world can stop that. I remember some post from a guy
- > that was working on getting lexical scope into GNU Emacs and the
- > compiler but he said that RMS expressed reluctance in an email because
- > the introduction of lexical scope would probably break some older code
- > and in his opinion (I speculate) it must not be worth the effort to
- > update older code to do the right thing in a lexical environment
- > despite its advantages. I know GNU Emacs is kinda doomed in this
- > specific regard, but XEmacs isn't. The developers are more open and
- > have expressed interest in modernization to CL. For example, as of
- > XEmacs 20.x the character-integer equivalence no longer applies and
- > there are new data types like "character" and "char-table". There are
- > functions like "old-eq" and "old-equal" that pretend that characters
- > and integers are the same.
- >
- > Under GNU Emacs:
- >
- > (eq ?A 65)
- > t
- >
- > Under XEmacs:
- >
- > (eq ?A 65)
- > nil
- >
- > (old-eq ?A 65)
- > t
- >
- > Now of course, we've got to get the "#" read syntax going so we can do
- > #\A instead of ?A, and have the read-case uppercase symbols by default
- > instead of doing everything case-sensitively, for starters....
- I wish you luck in this regard. These matters are syntactically small
- and I don't really care a lot about them at the micro level. But agreement
- is important and Anything that unifies the Lisp communities is good.
- "?" is a bad choice of character becuase it frustrates Scheme programs
- who want to use "?" instead of "P" for the end of predicate names.
- Even if one isn't going for Scheme compatibility, going for things that
- don't creating gaping divides between the communities is good.
- Previous post Next post
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement