Cooking with Lisp

Another blog about Lisp, the world's greatest programming language.

Wednesday, June 30, 2004

Could Croquet Be Getting Close To Release?

Common Lisp and Smalltalk, especially Squeak, are my two most favorite languages. For the last couple of years, Alan Kay, David Reed, David A. Smith, and Andreas Raab have been toiling away on a major infrastructure built on top of Squeak called Croquet. It now looks like Croquet is very close to a major unveiling.

I've played with the alpha they had a couple of years ago and it's pretty amazing. It really could spark brand new ways of thinking about computing. This is the stuff you'd build The Matrix with.

The best way to learn about it is to watch Alan Kay demo it. He's done several demos of it, but I think the best demo was at Stanford last year.

Some references: academic papers, the original (2 year old) user's guide, and a pretty good introductary article.

After being amazed with the truly breathtaking OpenGL user interface, make sure you dig in deeper and find out about the architecture they have for supporting distributed collaborative objects.

This is going to be very important.

Friday, June 18, 2004

ALU Survey

I'll do my part to advertise ALU's survey of Lisp users.

The responses from everyone so far have been very interesting to read.

I thought the most interesting question was "Do you see any obstacles to further Lisp growth (if so, what is the biggest obstacle in your opinion)?" That's always fresh meat for the hounds of comp.lang.lisp. I'm very interested in the responses to that one, and can't wait to see the consolidated results.

My take on it is that the lack of a single implementation, like Perl, is a pretty big obstacle for newbies. If you don't wind up downloading one of the fine evaluation versions from Franz or Xanalys, you pretty much have to build up your own development environment from various pieces found all over the place.

It's even hard for a newbie to find out what one needs to download. Compare what you get when you google for lisp or common lisp on Google vs. what you get when you google for perl or python. For the later, the top entry for each is the main page. For the former, there's really nothing to let the newbie know where to go.

Now, I don't particularly mind any of this, as I consider building your own Lisp environment akin to a Jedi apprentice building his own lightsaber as the final step towards mastery. Also, I agree with those on c.l.l that the diversity of implementations is good, as they can address different needs.

However, this doesn't help out the newbie very much.

The other obstacle, which I would like ALU to address, is that the only documentation the open source community has is the ANSI Common Lisp Standard, and the general opinion seems that one can't just bundle it up and include it as a core component of your implementation. I don't know if that's really true, as GCL distributes the ANSI Common Lisp Standard (at least one of the draft versions) in info format. I'd like to see ALU either determine that you can freely distribute at least one of the draft versions or get ANSI to make it freely available. Once that's done, tools like dpans2texi can be used to create info and html formatted versions. Other than some usage of Unicode characters, dpans2texi works pretty well. The info pages I created with it is my main reference.

Anyway, please take the survey.

Wednesday, June 16, 2004

Joel on Software Thinks the Major Advantage of Lisp is Garbage Collection (??!?)

Via James Robertson, Joel thinks that the primary advantage of Lisp is its garbage collection:
The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically. It can be with reference counting or garbage collection; it can be Java, Lisp, Visual Basic (even 1.0), Smalltalk, or any of a number of scripting languages.
Incredibly, there's more:
Whenever you hear someone bragging about how productive their language is, they're probably getting most of that productivity from the automated memory management, even if they misattribute it.
Wow! I haven't been in the mainstream developer community since, well, never, so I've always just kind of put up with the fact that I'm different; I don't understand them, they don't understand me, but, wow!, the chasm just seems to be getting wider and deeper.

Friday, June 11, 2004

New SBCL Documentation Support in SLIME

SBCL + SLIME is my favorite Lisp environment on Linux. It just keeps getting better, sometimes daily!

See the link for a cool new feature in SBCL 0.8.11 and SLIME. Basically, some errors and warnings now generate a link to the CLHS and the SBCL manual explaining what's wrong. The SLIME support makes it clickable and brings up the doc in whatever browser you have defined in Emacs. This is really cool!

There's an example in the mailing list announcement above.

Shriram Krishnamurthi Has Been Getting Press in the Lisp-Blog Space

Both Dave Roberts and Gary King have mentioned Shriram Krishnamurthi's excellent talk The Swine Before Perl. I think it's a pretty good talk to show someone who's heard of Lisp's or Scheme's macros and would like to see a little more, without going through something like http://www.paulgraham.com/onlisp.html.

However, I'd like to point out that Shriram is one of the coauthors of the wonderful book How to Design Programs, and his own book, Programming Languages: Application and Interpretation. Part XI, Domain-Specific Languages and Metaprogramming is especially interesting. Note that it's all Scheme, not that there's anything wrong with that :)

Alan Kay Wins Kyoto Prize

Alan Kay is one of my computer science heroes. This year, he's won the Draper Prize, ACM's Turing Award, and now the Kyoto Prize.

I asked on the Squeak mailing list how the Turing Award banquet (held last Saturday) went. Dan Ingals said:
Alan did give a brief (*) talk in his inimitable style, giving credit to the many people who have inspired and supported him. It was from the heart and he received a standing ovation at the end.

...

(*) Maria Klawe, ACM president, was Master of Ceremonies. Regarding the time allotted for his acceptance speech, she said she held up three fingers and asked, "Alan, how many fingers am I holding up?" to which Alan responded, "about fifteen."
Dan mentions that Alan's Turing Award Lecture will be delivered in October, just before OOPSLA. I can't wait to see what he says. His speeches and lectures are always great. His Draper Prize acceptance remarks is a great history of the developments of the personal computer at Xerox PARC during the 1970s.

Robert Kowalski's Logic for Problem Solving is Available Online

Labmda the Ultimate mentions that Robert Kowalski's great book Logic for Problem Solving is now available online. This book is one of the first, and in my opinion, still one of the best books on logic programming.

It's great to see some of the great classics becoming available online, like Tony Hoare's Communicating Sequential Processes earlier this year.

Thursday, June 03, 2004

Have We Learned Anything in 34 Years?

I was reading Robert W. Floyd's 1978 Turing Award Lecture, hosted by Markus Fix here, and he has a great quote about Lisp:
I have seen numerous examples of the programming power which Lisp programmers obtain from having a single data structure, which is also used as a uniform syntactic structure for all the functions and operations which appear in programs, with the capability to manipulate programs as data. Although my own previous enthusiasm has been for syntactically rich languages like the Algol family, I now see clearly and concretely the force of Minsky's 1970 Turing lecture, in which he argued that Lisp's uniformity of structure and power of self reference gave the programmer capabilities whose content was well worth the sacrifice of visual form.

So I tracked down Marvin Minsky's 1970 Turing Award Lecture and he had these things to say:
languages are getting so they have too much syntax
and
[a parenthetical syntax - Glenn] has important advantages for editing, interpreting, and for creation of programs by other programs [emphasis Marvin Minsky]. The complete syntax of LISP can be learned in an hour or so; the interpreter is compact and not exceedingly complicated, and students often can answer questions about the system by reading the interpreter program itself. Of course, this will not answer all questions about a real, practical implementation, but neither would any feasible set of syntax rules. Furthermore, despite the language's clumsiness, many frontier workers consider it to have outstanding expressive power. Nearly all work on procedures that solve problems by building and modifying hypotheses have been written in this or related languages. Unfortunately, language designers are generally unfamiliar with this area, and tend to dismiss it as a specialized body of "symbol-manipulation techniques."
In the 34 years since Minksy wrote this, has anything changed? I actually think things have gotten worse. Remember, back in 1970, they didn't have C, C++, Java, C#, or Perl.

Tuesday, June 01, 2004

Finally got my Lisp Machine!

(Thanks to Bill, who showed me how to change the post date!)

Last Tuesday (May 25th), David Schmidt of Symbolics personally delivered my Symbolics XL1200. We got it set up and then I treated David to a nice dinner at one of our nicer cowboy steakhouses.

The machine itself is awesome. I've never used one before, so I am totally at ground zero on this. I've been using it steadily since then. Here's my initial reactions:

It's bigger than I was prepared for. The pictures I've seen of the XL1200 on the web did not mentally prepare me for how big it was going to be.

It's a lot louder than I was prepared for, even with the warnings from Rainer Joswig and Markus Fix. I was going to place the unit in our family room, where our TV is, so I can hack and be with the family during the evening, but when the fans rev up, it is quite a roar. I've decided to place it in a corner in our kitchen and run the cables into our family room. Fortunately, the Symbolics hardware was meant to be deployed that way. You can have the console up to 200 feet from the system unit.

It's fast enough to be useful. In fact, it's a lot faster than I was expecting. A very pleasant suprise. Rainer's movies give a pretty good indication of the speed that I have with my unit, not suprising, since the XL1200 and MacIvory III have the same chip. This leads me to think that 10 years ago or more, these machines must have seemed wicked fast. I feel that it will be quite comfortable to do real development with it.

The keyboard is a delight. It's the "slim" style keyboard (here's a picture). It's quite solid. The keys have a great feel to them. Not at all like the mushy keboards of today. I love having the extra set of paren keys and rubout to the left. I do have to get used to the control keys being next to the space bar, as on all of the keyboards I'm used to, that is where alt (or meta) goes, and the control keys are way over.

The mouse is your average, 10 year old Logitech 3 button mouse with rubber ball inside. I don't really use the mouse that much, most everything is programmed to be very fluid with the keyboard, so there's little need to move your hand away from the keyboard. Since there is command completion almost everything, even asking the document examiner to display topics is very easy with the keyboard.

The online documentation. Wow! The documentation is simply superb. Definitely hats off to the designers of Document Examiner and to the writers of the wonderful documentation. It is very well written, easy to understand, and extremely hyperlinked with itself. Searches within the documentation are very fast. The first set of documents is specifically geared towards newbies and I really appreciate that. Lots of examples and exercises for learning how to use the machine and how to program with it. I feel that I will be able to be very proficient after going through this material.

The edit / run cycle. Very fast and fluid. There's keystrokes for loading just the changed definitions (of either the current buffer or all buffers). This makes it very convenient to just blast through editing and testing in the repl.

All in all, I am very, very pleased with my decision to purchase one. Definitely no regrets, and I'm a lot happier than if I had purchased something else, like a Powerbook or other laptop, like I was contemplating.

Is there a way to change the publish date?

I started writing my Finally Got my Lisp Machine! entry on the 26th, but didn't finish it up until today. However, it says the posting date was on the 26th, which isn't true. Does anyone know how to change the publish day to be when you actually published an entry, rather than when it was created?