Advertisement
rmloveland

Kent Pitman on what has been lost moving from Lisp Machines

Dec 1st, 2018
429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.10 KB | None | 0 0
  1. Kent Pitman on what has been lost moving from Lisp Machines to Emacs / X Windows
  2.  
  3. Google Groups
  4. More LispOS talk (was Re: Lisp subverts the world (was Re: ints vs fixnums (was Re: Java ... (was Re: ... (was Re: ...)))))
  5. Kent M Pitman Feb 20, 1999 3:00 AM
  6. Posted in group: comp.lang.lisp
  7. cba...@2xtreme.net (Christopher R. Barry) writes:
  8.  
  9. > Within Garnet you can move your mouse over any object in your GUI and
  10. > hit F1 to bring up the Inspector which gives you information about
  11. > every single slot value in the object, displays it's "is-a" hierarchy,
  12. > and shows you what things it's formulas depend on.
  13.  
  14. Within DW, you can move your mouse over any object or subobject
  15. that has been displayed, whether or not it was part of any GUI.
  16. You get this virtually for free and have to work hard to suppress it
  17. if you don't want it. But it doesn't require any special programming.
  18.  
  19. One of the most common ways to get a foothold in Genera for debugging
  20. something is to (1) find a place where the thing you want to use
  21. appears visually, (2) click Super-Left to get the object into your
  22. hands for read-eval-print, inspection, etc, (3) use (ed (type-of *))
  23. to find its source reliably and with no foreknowledge of what the
  24. type is, who wrote the program, what their file conventions were,
  25. who loaded it, or any of myriad other things that other systems
  26. make me do.
  27.  
  28. > Under the X windowing system there is this standard tool "editres"
  29. > that lets you click on any client and bring up it's class hierarchy
  30. > tree and edit resources interactively.
  31.  
  32. Not resources. Objects. All objects. Not just the heavyweight ones.
  33. Lists. Integers. I somehow don't believe you when you say this is the
  34. same as what Genera does.
  35.  
  36. The usual thing DW enables is the debugging of things that the
  37. person did NOT make part of the standard interface. Pointing to a UI
  38. tool and saying it allows you to plan for structured debugging of
  39. something is missing the point.
  40.  
  41. Or maybe you're saying that Garnet allows me to cross the boundary into
  42. the internals of systems. Maybe I'm missing out.
  43.  
  44. When you can make the claim that if you teach me a few paragraphs
  45. worth of stuff, I will have all of the information I need in order to
  46. bootstrap myself into a complete understanding of the entire operating
  47. system and all of its conventions, I'll believe you Garnet and X are
  48. as powerful as Genera and Dynamic Windows. Until then, I'll continue
  49. to believe they are different. Incidentally, I'm dying to know that
  50. there is a tool that will do all that Genera could do only for stock
  51. hardware becuase the stack of books I need to buy in order to be
  52. equivalently competent with other systems is daunting and I could
  53. really do with the savings in time, energy, and money of learning things
  54. about standard systems in the way I've been doing...
  55.  
  56. I don't even find Emacs itself to be equivalently self-documenting and
  57. easy to get around in, much less the many systems that Emacs touches.
  58.  
  59. > I know these things aren't as cool as the LispM's equivalent, but is
  60. > that it? It sounds like you have few nice applications that have
  61. > functionality equivalent to modern environments but because of their
  62. > tight integration you can do a few things that you otherwise couldn't.
  63.  
  64. Dynamic Windows offered a tight integration with the system.
  65. You alleged that all that it offered is captured by Emacs.
  66. The burden is on you to show that it is. Defining away the problem
  67. does not do that.
  68.  
  69. You haven't said how Emacs lets me "discover" systems. You've only
  70. said it provides tools that enable those who already know about a system,
  71. and Garnet/X tools that let me inspect the formally presented UI of a
  72. system. That's not the same.
  73.  
  74. > > But for example, there's no assurance when I read in a source file
  75. > > that it's the same source file that I loaded. The lisp machine
  76. > > keeps meticulous records not only of which source files are loaded
  77. > > and from where but which functions have been patched by which files.
  78. > > That means I can't make a mistake and use the wrong tags file or the
  79. > > wrong version of files backing up a tags file.
  80. >
  81. > There are modern IDEs available for popular languages with powerful
  82. > project file mechanisms with very similar capability. Not as cool, but
  83. > still powerful and usable.
  84.  
  85. This started out by a discussion of what's cool. You said Emacs was
  86. cool and nothing else was needed. Now you're qualifying your remarks
  87. by saying everything is not as cool, and dodging the specifics I laid out.
  88.  
  89. > > There are myriad subtle ways in which Emacs is only a pale shadow of
  90. > > Zmacs.
  91. >
  92. > Other than some of the cool functionality that arises within Zmacs
  93. > from its super-tight integration with the rest of the environment,
  94. > what can Zmacs itself specifically do that Emacs can't?
  95.  
  96. Paraphrase: "Other than the fact that the system you're talking about
  97. involved a lot of people investing time and thought on various issues
  98. that have been lost, can you explain to me why a system in which
  99. that thought has been lost is deficient?" Uh, ... no. I can't.
  100. This was about lost features. This was about your claim that nothing
  101. had been lost. If you leave out the stuff that's lost, you're right,
  102. there's no difference.
  103.  
  104. Look, I used to literally sit around in my office at MIT years ago and
  105. fuss at people who said Lisp Machines were everything. (I used and liked
  106. Lisp Machines but I myself didn't think they were what they were because
  107. of the hardware--they were what they were because of the software and
  108. the ideas behind them.) I used to ask people "What's an impossible thing
  109. to do? I'm looking for something to do this afternoon in Teco that people
  110. say can only do on Lisp Machines." People said Zmail. I wrote the
  111. approximate equivalent in Teco--filters, and all that. They wanted a
  112. filter menu. I wrote that in Teco. They wanted mouse handling. (That
  113. was tough because PDP10's didn't have mice, but I used my imagination a
  114. little and arranged a mouse protocol from Lisp Machines so you could telnet
  115. to the teco-based Emacs and click on my filter menus.) They wanted
  116. Zmail init files. I wrote a Lisp compiler in Teco so that I could use
  117. people's Zmail init files unmodified. It was about 20K words of Teco
  118. code, btw. Code was smaller back then... sigh.
  119.  
  120. Anyway, I *know* what it is to look at functionality and duplicate it
  121. elsewhere. It CAN be done. I am not saying it can't. What I'm
  122. saying is that it has not been done, and it's a crying shame. Few
  123. people even know there ever WAS a lisp machine, and those who do are
  124. mostly not rich enough personally to invest the time to duplicate what
  125. was there. Many people spent a big chunk of their lives investing in this
  126. dream and it didn't pan out quite as we wish. Ok. Sometimes other
  127. events win out--not always even for the right reasons. Or at least for
  128. the reasons you wish. But don't add insult to injury to say that the
  129. losers in battles such as these had nothing to offer.
  130.  
  131. Common Lisp beat out Interlisp, and maybe for good reasons but it doesn't
  132. mean Interlisp had nothing to offer--some very good ideas got lost in the
  133. shuffle and I don't pretend that Common Lisp just obviously had a better
  134. way. Java is going to beat out Smalltalk perhaps, but that doesn't mean
  135. Java is better than Smalltalk. We owe it to the losers in these little
  136. skirmishes to make sure that, if nothing else, the good ideas are not lost
  137. along with the framework. And we do not accomplish that by defining
  138. that there was nothing lost. That's both callous to those who worked
  139. hard on these other things and short-sighted to the future, which might one
  140. day care about the things that got lost.
  141.  
  142. There are still Lisp Machines around. If you want to opine on them
  143. with authority, get one and use it. There is no substitute for first-hand
  144. data in situations like this.
  145.  
  146.  
  147. > > > And XEmacs can
  148. > > > embed cool color graphics and glyphs/widgets into the frames to.
  149. > > > Is there anything a programmer cannot do elegantly and efficiently
  150. > > > within Emacs?
  151. > >
  152. > > In principle? Well, it's all software. You can make it be whatever
  153. > > youwant, I guess. But in practice, if you're asserting that Emacs
  154. > > duplicates the features of Genera's editor, I think you're kidding
  155. > > yourself.
  156. >
  157. > This functionality to click on an instance of any object seems really
  158. > cool, and indeed Emacs as it is currently could never do this. But is
  159. > that all? And again, this feature doesn't seem specific to Zmacs but
  160. > rather Genera itself within which Zmacs is tightly integrated.
  161.  
  162. No. It's not all. I could enumerate any of a zillion things the
  163. Lisp Machine editor system has that are not in Emacs. But what would be
  164. the point? You'd see any finitely enumerable list, tell me it was all
  165. stuff that could be done, and then say that my point was moot.
  166.  
  167. Here are a few, not intended to be complete, but to give you a spirit
  168. of the degre of "precision" in Zmacs commands that distinguish them from
  169. Emacs commands:
  170.  
  171. * Tags Multiple Query Replace From Buffer
  172.  
  173. This is an extension to Tags Multiple Query Replace (which does a
  174. multiple-strings-at-once Query Replace over a Tags Table; and,
  175. incidentally, the Tags Tables don't have to be files--the Lisp
  176. Machine just makes them up on the fly from spaces of buffers, from
  177. system definitions, etc. on user request). It allows you to put
  178. pairs of elements and their replacements in a buffer and have
  179. all replaced in parallel.
  180.  
  181. As with all operations of this kind (including Tags operations and
  182. other mapping operations like "Edit Compiler Warnings"), this creates
  183. a "possibilities buffer" which is a physical manifestation of keeping
  184. your finger on where you were in the middle of a complex operation
  185. so that if you see something else you want to do while you are
  186. doing the replacement, you can suspend the operation and resume it
  187. later perhaps after doing other replacements or edits. When editing
  188. the ANSI CL spec, something I refused to do on anything but a Lisp
  189. Machine, I often had dozens of these buffers stacked up in simultaneous
  190. use and was successfully able to resume them to make sure all completed
  191. while allowing the system to accomodate my "focus".
  192.  
  193. * Source Compare
  194.  
  195. This command allows you to run a source comparision program (which
  196. itself is just presentationally way better than Unix diff or
  197. emacs compare-windows). There was a public version of a source
  198. comparison program written by someone a while back that is as good
  199. but is in CL and isn't integrated into Emacs. Alas. But in addition
  200. to the presentational issues, which are comparatively minor, the real
  201. feature was how this could be called. It prompts for two things
  202. describing what to compare, including "buffer", "file", "region",
  203. "definition", "top of kill ring" and "second in kill ring". you type
  204. a single character (B/F/R/D/c-Y/m-Y) for each such prompt. It's
  205. completely essential for comparing files. What I can't comprehend
  206. is why no one thinks this is essential in a non-versioned file system.
  207. It's important enough in a versioned file system but in a non-versioned
  208. system one is always finding "probable copies" of files all over the place
  209. and trying to understand the differences. Ready access to program
  210. controlled source compare is central to everything I do and basically
  211. wholly absent on stock hardware. Another example is when you are saving
  212. a file on the lisp machine and you find it's been written by someone else;
  213. in emacs the query just tells you of a problem--in zmacs it offers to
  214. compare the files before making you decide whether to continue saving.
  215.  
  216. It's not the feature itself, though that's important, but
  217. it's the attention to detail at this fine-grained level throughout the
  218. system which is why the lisp machine is so fondly remembered.
  219.  
  220. And that's my overall point. It's not just about what's missing.
  221. It's about the lack of interest in those who have created Emacs in
  222. supporting those other things. I still just use my Lisp Machine.
  223. It's right here next to my PC, and on a regular basis I just move to
  224. the other chair and edit in Zmacs. 6 years after heavy-duty
  225. development ceased on Zmacs, it still whomps the competition and makes
  226. me not care that processor speeds have gone up a zillionfold in the
  227. meantime. Others will tell you the same.
  228.  
  229. I WISH I could use features like that on a fast processor. that would
  230. be great. But it isn't likely to happen soon.
  231.  
  232. You can say the burden is on us old-timers to tell you what's missing or
  233. we shouldn't be whining. But I don't see it that way. I see the burden is
  234. on the victors, who have the resources and who claim their way is better,
  235. to show us that they won for good reason. We did our part for the cause.
  236. We may or may not continue to try to do things to assure the ideas aren't
  237. lost.
  238.  
  239. I spend a lot of my time trying to make sure old ideas make it onto
  240. the books and don't get lost. But I'm just one person. It takes more
  241. than one person. And the task does not begin by dismissing the need
  242. to do the job.
  243.  
  244. > > Also, I'm not suggesting this was a property of the Lisp Machine or of
  245. > > special hardware. Nothing the LispM did couldn't be implemented in
  246. > > standard systems if people were of a mind to do it. But they haven't
  247. > > been, and it's historical revisionism to deny that stuff has been lost.
  248. >
  249. > Problem is, only people that have access to them know specifically
  250. > what makes them cool. It's nice to hear from you what some of this
  251. > functionality really is, but it seems that most of it is duplicated at
  252. > least in part by some modern tools/environments.
  253.  
  254. You can order doc sets ... people give them away on this and other lists
  255. periodically.
  256.  
  257. > > Also, I don't see how GNU Emacs Lisp could ever become CL-like, since
  258. > > Stallman seems to control it and he doesn't seem to like CL. I and
  259. > > others fussed at him long ago when he diverged from CL. It seemed to me a
  260. > > conscious decision on his part to not care. (Maybe even a good decision,
  261. > > I'm not trying to moralize. i'm just saying that the decision to be more
  262. > > or less cl-like is a political one, and not a community one. And for all
  263. > > he talks about freedom for all, my impression is that he's very possessive
  264. > > and controlling about these free things he makes, such that you have a pretty
  265. > > severe obstacle to ever really changing it...)
  266. >
  267. > As I mentioned before, GNU Emacs is slated for Guile Scheme and
  268. > nothing in the world can stop that. I remember some post from a guy
  269. > that was working on getting lexical scope into GNU Emacs and the
  270. > compiler but he said that RMS expressed reluctance in an email because
  271. > the introduction of lexical scope would probably break some older code
  272. > and in his opinion (I speculate) it must not be worth the effort to
  273. > update older code to do the right thing in a lexical environment
  274. > despite its advantages. I know GNU Emacs is kinda doomed in this
  275. > specific regard, but XEmacs isn't. The developers are more open and
  276. > have expressed interest in modernization to CL. For example, as of
  277. > XEmacs 20.x the character-integer equivalence no longer applies and
  278. > there are new data types like "character" and "char-table". There are
  279. > functions like "old-eq" and "old-equal" that pretend that characters
  280. > and integers are the same.
  281. >
  282. > Under GNU Emacs:
  283. >
  284. > (eq ?A 65)
  285. > t
  286. >
  287. > Under XEmacs:
  288. >
  289. > (eq ?A 65)
  290. > nil
  291. >
  292. > (old-eq ?A 65)
  293. > t
  294. >
  295. > Now of course, we've got to get the "#" read syntax going so we can do
  296. > #\A instead of ?A, and have the read-case uppercase symbols by default
  297. > instead of doing everything case-sensitively, for starters....
  298.  
  299. I wish you luck in this regard. These matters are syntactically small
  300. and I don't really care a lot about them at the micro level. But agreement
  301. is important and Anything that unifies the Lisp communities is good.
  302. "?" is a bad choice of character becuase it frustrates Scheme programs
  303. who want to use "?" instead of "P" for the end of predicate names.
  304. Even if one isn't going for Scheme compatibility, going for things that
  305. don't creating gaping divides between the communities is good.
  306.  
  307. Previous post Next post
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement