4 ms·
Was Alan Kay wrong? And why does that matter?
- losethos 13y agonigger. http://www.templeos.org/Wb/Demo/Lectures/MiniCompiler.html http://www.templeos.org/Wb/Demo/Lectures/MiniCompiler.html
- dragonwriter 13y agoThere might be an interesting point hiding underneath this article, but the badly forced analogy between evaluation of Kay's definition of OOP (which is an abstract concept with no objective external existence) and evaluation of Newton's description of physical laws really gets in the way. The question of whether Kay is wrong is meaningless. Kay can't be wrong when he says what he means by OOP. You can discuss what language features and programming practices are useful in particular contexts, and you can argue whether Kay's definition of OOP represents a particularly meaningful set of features and approaches. But to discuss whether he was wrong is pointless, and to frame a discussion of OOP in those terms -- and to pretend it has any meaningful analogy to evaluation of how Newton was right, and how he was wrong, in his physical models is pointless. Its an analogy that serves to try to create a false connection and sense of generality, and does more to obscure than illuminate.
- raganwald 13y agoNEVER MIND: I tried rewriting the opening as your comment suggests, and it looks better. Thanks.
- coolsunglasses 13y agoI wrote the tweet that likely triggered this post. My original joke on Twitter was that I was waiting for Alan Kay to tell everybody how Smalltalk did reactive programming and FRP first. My original point is Alan Kay has made a hobby of co-opting virtually any paradigmatic trend or fad that has arisen since his original work on Smalltalk, usually claiming Smalltalk did it first/better/whatever. The point here isn't original sin or only creating objectively perfect things. It's a different problem of people who don't seem otherwise engaged with the work being done in the present only talking about the work they did in the past. Call for information: is anybody aware of Alan Kay directly contributing to the development of any open source programming languages that aren't Smalltalk in recent history? I'm not aware of him releasing any new languages or publishing any new papers in the last decade or two, yet his paradigmatic peanut gallery commentary seems to spread pretty quickly. I haven't seen anybody actually say what raganwald is attacking here.
- raganwald 13y agoMy original point is Alan Kay has made a hobby of co-opting virtually any paradigmatic trend or fad that has arisen since his original work on Smalltalk, usually claiming Smalltalk did it first/better/whatever. Lisp was co-opting everything long before Smalltalk started co-opting everything. But on to the main point: what am I attacking here? Nothing, in fact, I think the post is praising the idea that discussing his quote is a useful exercise, leading to fertile grounds. Whether OOP is or isn't what he says it is, or whether greenspunning a feature is somehow less useful than choosing a language with that feature built in is an exercise I leave to the reader with little comment other than the observation that while i no longer program in Java, I haven't gone so far as to adopt Clojure or Squeak.
- coolsunglasses 13y agoI use Clojure and Haskell, I live in the future above and beyond what traditional Lisps have ever offered. I just find the aggrandizement of those-that-came-before obnoxious and unfair to people doing work here and now.
- raganwald 13y agoWhat aggrandizement is this? Or is the very idea of quoting Mr. Kay odious to you? I think this is a simple case of you having an axe to grind, and my post being a rough surface.
- coolsunglasses 13y ago>I think this is a simple case of you having an axe to grind, and my post being a rough surface. Probably so.
- tokenrove 13y agoThe flip side is that people have been reinventing Lisp Machines and Smalltalk environments, poorly, for the last two decades, and many would argue we still aren't at feature-parity with them. It's obnoxious to see people take credit for ideas that predate them and pretend we're innovating.
- dusklight 13y agoI don't think the quote was meant to be taken literally. You are missing the point if you are. It should be obvious by now that OOP is a programming method that is possible in any programming language, and it is easier in some and harder in others. There is no language that exists where you can't force out non-OOP code, and you can always build your own OOP framework, even in C or assembly. A more productive use of the quote would be to compare the design of small talk and lisp vs say java and c++, and think about why someone as brilliant as Alan Kay should consider that it is not easy to write OOP code in java or c++.
- LocalMan 13y ago1. Allen Newell at CMU AI built a system called Lstar that was only for "Greenspuning", it was a language for bootstrapping up higher languages. It's very hard now to find even a mention of this on Google. This was decades ago. 2. I recently have been spending time learning and using the Go language from Google. It has almost no facilities for booting new languages. Nowadays that's called building a DSL. The thing is, Go is very useful, efficient, and easy to learn. Plus, it has an excellent system for concurrent and parallel programming. They explicitly decided against building in facilities for DSLs, as they are seen as making systems hard to understand. Alan Kay wasn't wrong, he had a particular point of view. To me, today, Kay's view seems old-fashioned compared to Go. Both Go and Kay's OOP are very sophisticated. In very different ways.
- raganwald 13y agoJust a personal view, but my feeling about Lisp and SmallTalk is that they have opposing views of DSLs. Lisp culture seems to celebrate "bottom-up programming," While SmallTalk seems to celebrate writing programs that are unmistakably SmallTalk.
- lispm 13y agoIt's Smalltalk. Not SmallTalk. I guess that Smalltalk also likes bottom-up programming, but it does not meta-level or language-level programming often in an object-oriented way. Lisp might do that too, but it often puts other interfaces on top. CLOS is an example: CLOS is itself an object-oriented system (see AMOP), but on top are functional and descriptive (macro) layers.