Paul Graham

us.st11.yimg.com

Paul Graham is an independent consultant specializing in Lisp. He received his PhD in Computer Science from Harvard University. He is the author of On Lisp and Ansi Common Lisp and a collection of essays, Hackers And Painters. He believes that Lisp is a Golden Hammer.

He helped develop an e-stores system that was eventually purchased by Yahoo and made into Yahoo Stores, becoming wealthy in the process. An interesting debate about its implementation in Lisp and later rewrites can be found at discuss.fogcreek.com . Paul credits Lisp for enabling him to out-compete other contenders (before the Yahoo purchase).

He advocates Bottom Up Programming and claims Lisp Language is uniquely suited to it.

Hardly unique: Forth Language and many Meta Languages have the same virtues.


Lisp has the power of treating code as data:

(defun sum (x) (apply #'+ x))

What makes Lisp suitable for bottom up programing is macros, which let you redefine the language's syntax.

I'd like to see examples that are applicable to the web-store result.

Passing continuations around to create multi-page forms, according to his essays, was one of the ways he used Lisp to do things other languages wouldn't even let one think about at the time.

In a "traditional" language, one would probably first generate the meta data for the full list, and when the user presses the "Next" button/link, it would just draw from row X to row Y out of the saved meta data. Another way to do it is to generate each page's meta data first, and then pick the page the user selects. Of course it's different if you only want to generate the next set without traversing all the data items. Which technique is used may depend on how the data is stored and how fancy the queries get (sorting and filtering).


I think the main advantage was his use of continuation-passing style - associating links with closures to create a direct style of programming that inspired Seaside Framework - to create a sophisticated experience. Ten years later, this is still an little known, unused technique to the vast majority of web developers. He never described precisely what he did, but what I gathered is that he cooked up something analogous to Seaside's anchorWithAction:. For those who have never experienced this, imagine if you could write a web application very much the way you would a program that takes input on the console, from Standard Input, and get away with it.

This is more or less what the HTTP standard does: you get one giant input string and put out one giant output string (with the help of API's to parse, format, and combine as needed).

True, more or less. Just Isa Dangerous Word.

[And "computing" is naught but twiddling bits...]



See original on c2.com