Wednesday, January 21, 2009
I can't seem to escape from Phil Windley. His voice introduces each StackOverflow podcast. I worked for him briefly in 1998. I survived his programming languages class at BYU. (He made us learn Scheme and write mind-bending mutually recursive code translators, in spite of all the wailing and gnashing of teeth. This experience, along with Kelly Flanagan's computer architecture class, comprised 90% of the worthwhile content in the whole CS program. I can't seem to escape from Pareto either.)
So today (see, I'm already picking up annoying Pacific Northwest speech patterns) I stumbled upon Phil's writeup of a presentation by Alan Kay back in '06. I'm guessing you didn't read it either. It's awesomely thought-provoking. Here are a few highlights:
The Empire State Building was built in 11 months by 3000 people. We don’t know how to do this in computing.I'm often asked to define software architecture. I like to think of good architecture as synonymous with Robert Pirsig's elusive "quality" in Zen and the Art of Motorcycle Maintenance. Any code-monkey can produce a pile of code, but creating a cathedral requires real craftsmanship, nay, art. In the argument of whether programming is more of a science or an art, I fall firmly in the art camp. Which is a terrible segue into Kay's lament of the lack of science in computing:
"Americans have no past and no future, they live in an extended present.” This describes the state of computing. We live in the 80’s extended into the 21st century. The only thing that’s changed is the size. Windows XP has 70 million lines of code. It’s impossible for Alan to believe that it has 70 million lines of content. Microsoft engineers don’t dare prune it because they don’t know what it all does. Cathedrals have 1 millionth the mass of pyramids. The difference was the arch. Architecture demands arches.
We’re much better at building software systems than we are at predicting what they will do. There are no good models. If we were scientists, we’d be trying to build models.I'm starting to think Lisp must be really important. Almost every seriously smart programmer seems to mention it lately. Sounds like it's time to go learn Lisp.
We build finite artifacts, but the degrees of freedom grow faster than we can reason about them. Thus, we’re left with debugging.
Lisp is the most important idea in computer science. Alan’s breakthrough in object oriented programming wasn’t objects, it was the realization that the Lisp metasystem was what we needed.Finally, as a hardware/architecture/platform geek, this one really piqued my interest:
The secret of PARC’s success was to design the best virtual machine we could and then to build hardware that optimized that. We’ve got that concept backwards today.I hope y'all enjoy the meat of Kay's presentation as much as I did.