Killer read. Reinforces my personal belief that the way out of the dark hole of software complexity are programming languages that:
* Emphasize protocols, de-emphasize hierarchies
* Support compile time meta-programming
* Support flexible verification (optional type checker /
contracts / predicate dispatch)
The talk also covers the crux of why OO inheritance is the pits - you inherit the broken implementation. Working against protocols, which may seem initially inconvenient, actually allow you to avoid a future tarpit.
Yup. I wonder how much this talk influenced Next's NeXTSTEP design? Certainly a lot of the things he was thinking about have been solved in a fairly elegant manner - late-binding, delegates that implement mappings, reflection, using protocols instead of class hierarchies where appropriate...
Actually, when you get down to it, MVC is all about making client specific mappings for the loading of data into views. The talk is not exactly startling seen from a 2011 perspective, but it's nice to see the reasoning behind so many of today's patterns so clearly expounded.
I have been thinking of such a system for 20 years and I've finally decided to build it. I need brains bigger than mine, for conversation, collaboration, whatever works for you. My email is jamie via binaryfinery.com if you would be interested.
Not really. Common Lisp's basic data structures are black boxes. Clojure's headed the right direction by building even the most fundamental bits (like lists) on top of protocols.