October 27, 2005

miami drifts

Eugene Wallingford has some great notes from this year's OOPSLA. Here are a few excerpts.


Richard is motivated by the belief that computer science is in the doldrums, that what we are doing now is mostly routine and boring, and that we need a jolt of creativity to take the next Big Step.


Creativity seems to happen almost with cause. Hass consulted with friends who have created interesting results. One solved a math problem thought unsolvable by reading the literature and “seeing” the answer. Another claimed to have resolved the two toughest puzzles in his professional career by going to sleep and waking up with the answer.

So Hass offered his first suggestion for how to be creative: Go to sleep.

This has been happening a lot to me lately; In the half hour or hour that I lie in bed just barely conscious before really waking up, I find that I come up with a clever solution to some tricky problem I'd been struggling with the night before.


Then Sussman showed what many folks consider to be among the most beautiful pieces of code ever written, if not the most beautiful: Lisp's eval procedure written in Lisp. This may be as close to Maxwell's equations in computer science as possible.

This is where Sussman got to the key insight of his talk, the insight that has underlay much of his intellectual contribution to our world:

There are some things we could not express until we invented programming.

Sussman's wonderful, inspiring talks at the last couple ILCs have convinced me that programming, and figuring out how to program, is one of the greatest intellectual challenges humans face right now.


Example 2: At lunch, Guy Steele asked us if we ever intentionally got lost in a town, perhaps a town new to us, so that we had to learn the place in order to get back to a place we knew. Several people nodded vigorous agreement, and one guy noted that he and his colleagues use a similar technique to learn a new legacy code base. They call this air-drop programming. This is a colorful analogy for a common pattern among software developers. Sometimes the best way to learn a new framework or programming language is to parachute behind enemy lines, surrender connection to any safety nets outside, and fight our way out. Or better, not fight, but methodically conquer the new terrain.

Martin Fowler has a completely different take on the conference, with some good quotes.

Posted by jjwiseman at October 27, 2005 03:25 PM

I consider Mr.Fowler object oriented snake oil vendor, albeit very clever. Ban OO bull..., long live the lambda!

Posted by: DabbingInFP on October 28, 2005 01:56 AM

lisp's eval mechanism close to Maxwell's equation in computer science? Perhaps you should ask a random sampling of computer scientists their opinion of this assertion. I for one could care less, but not much.

Posted by: Sam on October 28, 2005 04:50 AM

Hi Sam, I'd be curious to know what else could be analogous to Maxwell's equations if it isn't the metacircular interpreter. What else comes close?

Posted by: Gary King on October 28, 2005 07:52 PM

What could be the analogues to Maxwell's equation in Computer Science? How about Turing's halting theorem proof, or the construction of the lambda calculus, or the Thermodynamics of computation? Landauer's principle? The foundations of Quantum computing? Really, there are an awful lot of candidates which I'd put ahead of eval, and I'm (a) a Lisp programmer and (b) not a Computer Scientist.

eval might be a candidate for "something pretty useful in software construction", but even then, lisp programmers don't use eval much, so...

Posted by: Christophe Rhodes on October 29, 2005 06:09 AM

For a better understanding of why great ideas come to you when you aren't thinking about them, check out the book "Hare Brain, Tortoise Mind : How Intelligence Increases When You Think Less".

Short version: There is unconcious reasoning going on as a background process in your head. It is good at figuring out systems that are too complicated to conciously think about all at once. It is not good at working on demand.

Posted by: Cory Bloyd on October 29, 2005 05:37 PM

Salvador Dali had a technique for catching thoughts at the brink of unconsciousness: Sit in a comfortable chair holding a large key in your hand. Put a metal dish on the floor under the key. When you go to sleep the key will fall and hit the dish which will wake you up. (never tried it. :) It's from a funny book called "50 secrets to Magic Craftsmanship".

Julie Heffernan recommends a technique called image streaming.

Posted by: Jeremy on October 31, 2005 06:42 AM

> Lisp's eval procedure written in Lisp

Could you post that function? I have googled but could not find it. I'm sorry if that is an FAQ but I do not know Lisp very well.


Posted by: Hans on October 31, 2005 01:23 PM
Post a comment

Email Address:


Unless you answer this question, your comment will be classified as spam and will not be posted.
(I'll give you a hint: the answer is “lisp”.)


Remember info?