Hacker News new | past | comments | ask | show | jobs | submit login
My Lisp Experiences and the Development of GNU Emacs (2002) (gnu.org)
116 points by shawndumas on Oct 10, 2014 | hide | past | favorite | 39 comments



"They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off."

That bit really jumped out at me, because it's something I've felt about computers in general for a long time. People get it into their heads that computers are hard/complicated/etc., and so they get scared of them, and so then they don't do anything with them but a strict subset they've decided they understand and wind up doing all sorts of things wrong or inefficiently. Often, in trying to protect the computer and themselves from what they've convinced themselves they don't understand, they wind up breaking it instead: they don't know what they're doing because they think they can't learn. "It's too complicated."


I was reading a book on a long train journey from Paris to Nice by train that I read usually once a year. My girlfriend couldn't understand why I was reading a kids book as it had an elephant on the front. I told her it wasn't, but was in fact one of the most profound books about teaching you to think in a new way.

So I let her read it and she got about half way through and she totally got it and loved it. No harder than doing a crossword or a sudoku for the first time.

The book is: http://mitpress.mit.edu/books/little-schemer


> My girlfriend couldn't understand why I was reading a kids book as it had an elephant on the front

Thought you were going to say it was Learn You a Haskell For Great Good.


I'm actually reading that one right now. It's quite good, and has made a Haskell fan out of me already despite getting a bit fatigued by chapter 8.


Finished chapter 8 yesterday in the middle of a 40C fever. Checked the page number only to realize I wasn't even halfway through...


That would be 38C... apparently my brain hasn't fully caught up yet.


Oh you'll be rid of the fatigue soon enough, that's about when the real fun starts :)


I seriously need to get a copy of this book. I've been hearing about the Little Schemer ever since I first entered the Lisp world; and one of the authors of that edition even works on my favorite Lisp (Racket).


It's brilliant. By gradually building up to it, I started to really understand recursion, the power of lambdas and closures, etc. I also started to get Lisp and Scheme in the process. It's a great book, well worth it and if you're venturing out into the Lisp world, I strongly recommend it. If you're not into Scheme, I believe the book also contains equivalent Common Lisp code.


It’s amazingly well written/designed.


100% agreed, reading this is like being 8 and walking down a path with your hero holding your hand explaining about whatever is mystifying you. It's that pleasant.


Programs are so absurd to most people... they have to use rote learning to do anything with it (that's why changing the slightest bit will drive them mad). And most programs are full of hidden state. This is everything a programmer despise, we spend a huge amount of time ensuring our paradigms are principled and transparent, but these qualities rarely make it to the user level. So I cannot but sympathize with normal users about computer fear and wish them some better paradigm to reach acceptance (I believe ideas revived by Brett Victor are gold mines here)


Oh I don't just mean programming; I've run into perfectly intelligent people who nonetheless respond to even the most basic computing tasks as if you've asked them to insert their tenderparts into a badger's den. Now, I'm perfectly willing to accept that some people just won't "get" computers, but I've also seen elderly retirees who took to it like a fish to water once you talked them out of being afraid of the thing in the first place.


Didn't mean programming either. I wanted to add my sense of the absurd burden put onto normal users with computers. These are systems full of cruft (historical, economical) that is impossible to understand really. Always moving for so-called "progress" and fed through authority (which user would ever question the way MS Office or MS Windows works ? they don't know anything else). So most of them will lose any sense of logic when dealing with these machines/OS and I can't blame them.


A system wide easily accessible undo may solve this.


Some people are excited about programming in the sense that they can "make the computer do stuff". But the way I see it, I make the computer "do stuff" by just simply pressing the power-on button. And writing a "hello world" doesn't make the computer accomplish more than to write the same string in a word processor.

Maybe some people should just be reminded that programming is not fundamentally different from using a computer in general. Just that you have more fine-grained control.


Indeed, you can just type “Hello world” in a text editor!

A non-programmer, I'm sure making it a welcome checkpoint at a programming language is an incredibly stupid tradition. It should always be an one-liner that does something no app in the world can do, with clearly identified spots that a newcomer can tweak for their individual needs.


The fate of Symbolics wound up having little to do with Stallman, Greenblatt, or LMI. Sun et al. just blew away Symbolics with the economies of scale of UNIX workstations, and the advantages of LISP didn't persuade many people to go with LISP machines instead.

Similarly, Rational Software started out making ADA machines, and only survived and prospered after a total pivot away from hardware and ADA alike.


Sadly the same happened with Lillith and Oberon machines from ETHZ.

Hardware targeted to a specific language only has advantage for a little while, until general purpose hardware catches up.

As for the economies of scale of UNIX workstations, former AT&T, Stanford and BSD students got lucky with their workstation startups.


Stallman has the normal sort of blindness most zealots have for areas outside of their zealotry. I have always found it a little bit fascinating to see what a naive view of the world he really has for anything that isn't the politics of software.

Which I don't say to be unfair, although I could see those who idolize him taking it that way.


I agree with your assessment but the comment you're replying to is making an untrue assumption, he didn't say that he sunk Symbolics himself or anything close to that. He said that he hindered their plan to drive LMI out of business for some time.


One of the huge problems of the Lisp maschines was that they where quite happy with taking money from military and other huge copperation and did not really try to compete with in that market.

They where also not quick enougth to get at least a subset of there software running on other hardware.


He didn't say that he sunk Symbolics himself.


> At the time, TCL was being pushed heavily for this purpose. I had a very low opinion of TCL, basically because it wasn't Lisp.

I figured this was the case[1], but hadn't actually seen it stated explicitly. His dislike usually seemed broached in hated of a commercial shepherd (Sun), or going on about (perceived or real) technical shortcomings.

[1] https://news.ycombinator.com/item?id=3408617


Ousterhout did some marketing pieces and he stated a lot of random things.

http://www.tcl.tk/doc/scripting.html

There was some controversy around it at the time...


I didn't realize that was a very controversial paper.

If the timelines are correct though, that wouldn't have been offending rms yet:

> rms: That was not the end of the GNU projects involved with Lisp. Later on around 1995, we were looking into starting a graphical desktop project. [...]

>

> At the time, TCL was being pushed heavily for this purpose. I had a very low opinion of TCL...

--

JOs paper appears to be published 1998, 3 years later, citing papers from 1996.

[edit: formatting]


There were similar earlier claims made by Osterhout. I just picked one which demonstrated the topic.


He does kinna have a point though -- had Tcl remained Sun's property, Oracle would now be closed-sourcing it and trying to assess huge license and support fees for it. And/or suing people over it.


The video: https://www.youtube.com/watch?v=4Jjhmc3Txv0

(Unfortunately, the audio isn't great.)


I think it's interesting how he never explicitly says that he forked Gosling Emacs (I think that's what he did, but if not please correct me!).

"Therefore, when I wrote my second implementation of Emacs, I followed the same kind of design...Now, this [GNU Emacs] was not the first Emacs that was written in C and ran on Unix. The first was written by James Gosling, ... I discovered that Gosling's Emacs did not have a real Lisp. It had a programming language that was known as ‘mocklisp’, which looks syntactically like Lisp, but didn't have the data structures of Lisp... I concluded I couldn't use it [it here means mocklisp, but can be confused to mean Gosling Emacs] and had to replace it all, the first step of which was to write an actual Lisp interpreter. I gradually adapted every part of the editor based on real Lisp data structures, rather than ad hoc data structures, making the data structures of the internals of the editor exposable and manipulable by the user's Lisp programs...This second Emacs program was ‘free software’ in the modern sense of the term"

Perhaps I'm reading too much into it.


Yes, he did. At that time or a bit later I worked for UniPress; the owners knew that taking any action about that beyond a polite request would untimely be harmful. But it was seriously reckless of RMS to put his GNU effort in jeopardy.


Mike (the friend at UniPress who RMS mentioned) and I were wandering around an SF convention and ran into RMS. Mike said, "Richard, I heard a rumor about your house being burnt down. Is that true?" Richard immediately shot back "Yes, but where you work, I'd have thought you'd have heard about it in advance!"

We all had a good laugh. RMS is a funny guy and quick of his feet!


Sounds like he Ship of Theseus'd it.


"There's an interesting benefit you can get from using such a powerful language as a version of Lisp as your primary extensibility language. You can implement other languages by translating them into your primary language."

This is so short-sighted hand-waving; it doesn't take into account the existing ecosystem (libraries, tools, etc.) at all. Unlike lisps and schemes, TCL is way less fragmented and has a bunch of libraries for everything. Not to mention that libtcl can be used as a cross-platform layer for files, filesystem, threads, networking, etc.


At the time he said it, and about the time of the decision he was making, what you say about the TCL ecosystem was not necessarily true. I was using TCL/TK in '95, and it was clunky then. I have the same misgivings about LUA now, but it seems a better choice for embedding than TCL at the moment.

I keep returning to the "I'd like an embedded scripting language in my C environment" year after year, and there is nothing that has made me pull the trigger yet. TCL is a non-starter for me; LUA is dubious; GUILE is a non-starter with GPL licenseing. Java is clunky and heavyweight, but maybe plausible, though it's more common to JNI C into your Java main. I think it'd be nice to have an embeddable Javascript like v8 that can attach to C underpinnings, but don't know if there is one. Maybe duktape?


Not really think of Javascript and the browser, Javascript is deeply flawed but still powerfull enough to be the target of several compilers. A language like Guile Scheme has the same potential, while TCL has not.


"The original Emacs did not have Lisp in it. The lower level language, the non-interpreted language — was PDP-10 Assembler. The interpreter we wrote in that actually wasn't written for Emacs, it was written for TECO. It was our text editor, and was an extremely ugly programming language, as ugly as could possibly be. The reason was that it wasn't designed to be a programming language, it was designed to be an editor and command language. There were commands like ‘5l’, meaning ‘move five lines’, or ‘i’ and then a string and then an ESC to insert that string. You would type a string that was a series of commands, which was called a command string. You would end it with ESC ESC, and it would get executed."

Funny this makes it sound like the emacs predecessor was closer to vim in editing style then modern emacs


Bravo, RMS.

I wish I could work on an OS written in Lisp, or in an equivalently expressive language. It's so damn important to have a really user-friendly system easily customizable by non-programmers. Actually, programmers should be routinely put out of their jobs, essentially the same way programmers put others out of theirs. :-)


After reading this article, I read up on the history of Lisp Machines, and the conflict between Richard Greenblatt and Russell Noftsker. Interestingly, Noftsker was himself forced out of Symbolics after a battle with their CEO. Karma, I guess.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: