The Other Fundamental Concept
I recently had a rather unpleasant blog discussion with someone who is attempting to design a programming environment. I was initially drawn there by references to Alan Kay and Lisp, so I was rather disappointed to find that he completely discarded the essence of Kay's philosophy and some of the key technologies that allow Smalltalk and Lisp to work. He wrote endless, rambling tirades against bytecode-based virtual machine emulators and garbage collection, and heaped praises upon the ability to program at the assembly level.
He completely missed another prime candidate for the fundamental concept of programming, an oft-quoted Butler Lampson aphorism:
All problems in computer science can be solved by another level of indirection.
Coming from a man who did a significant portion of his work with computers in the 60s and 70s, when efficiency really was paramount, that ought to give an abstraction-hater pause.
Indirection is the key to abstraction, and abstraction is the key to programming. Throwing out useful abstractions because they're not the most efficient way possible to do something is entirely missing the point of computers.
   Comments: (0) Categories: Programming