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.
So you must be thinking about some other Alan Kay we don't know about :)
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.
Greenspunning really is about the experience of implementing larger APPLICATIONS in Fortran or C, many years ago. For example a CAD system typically would need things like code loading, redefinition of code, exception handling, runtime execution of code (in a CAD scripting language), objects, more advanced memory management, ... Another example: something like Word or Excel - they also need these features.
I just find the aggrandizement of those-that-came-before obnoxious and unfair to people doing work here and now.
I'm fine with Clojure because I'm more interested in languages with type systems anyway.
I think this is a simple case of you having an axe to grind, and my post being a rough surface.
I would bet that it did.
Xerox PARC, Atari, Apple, HP, ... - lots of research labs where Alan Kay worked on his vision. Few people did more research on dynamic languages then him. Catching up to his research at PARC and Apple would take you some years.
Currently he is president of 'Viewpoints Research Institute'.
The recent writings can be found here:
I have to admit I don't understand the hype over FRP. I mean it's great that you can now do reactive programing in FP as well, but it's not like this hasn't been around for ages.
Anyhow, what Alan does is not co-opting, it is pointing out all the great work that has been forgotten and then reinvented, usually badly, in the hope that someone will finally do a better job than what went before. See also Brett Victor's talk "The Future of Programming". Brett works for Alan now.
Others have pointed out VPRI. Open Source programming languages that came out of there include OMeta (OO pattern matching), Nile (dataflow for graphics), Maru (metacircular S-Expr. eval), KScript (FRP), etc.
In terms of publishing papers: he's 73 for pete's sake. He doesn't have to publish papers, or do anything he doesn't absolutely want to. But in fact he doesn't just rest on his awards (Turing...) or patents or having had a hand in creating just about every aspect of what we now consider computing. He's still going strong.
So yes, there is a peanut gallery. You just may be confused as to who is sitting in it and who is on stage changing the world.
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.
I tried rewriting the opening as your comment suggests, and it looks better. Thanks.
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.
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.
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++.