Objects Have Failed : http://www.dreamsongs.com/ObjectsHaveFailedNarrative.html
Interesting. Says things that I wanted to say. Supplementary thoughts.
AlanKay was inspired by biological cells when he invented objects. His thinking has always been biological / postmodern.
It's true Java is a totalizing narrative, and sadly true that SmallTalk preceded it. But consider Smalltalk was written to complement a modern style object ecology operating system at a time when other computers and software didn't think that way at all. Now that most OSs and software works in these sorts of worlds, it makes more sense to write things that interact with them.
The rot sets in with C++.
A better metaphor for superseding OO might be to consider a move from single cell biology to multi-cell / swarm biology.
- (ToRead) Going beyond : http://interconnected.org/notes/2005/06/reboot7/3steps/
Seems rather OTT to me and basically boils down to:
- Objects are not a silver bullet - which shouldn't surprise anybody
- Java/C++ are not all there is to the object oriented viewpoint - true
- Java/C++ are taking over as the definition of what objects are about - maybe
- We're going to have more interesting development paradigms in the future - of course
The silver bullet issue is an obvious one. When any new widget comes along there are some people who think it's going to solve all problems up to and including raising the dead. This shouldn't surprise anybody. In many ways its a good reaction since it encourages people to find the limits of what the new widgets can actually do. The fact that objects don't raise the dead, and that some people apply them to domains where they don't fit, doesn't make them a failure.
The whole Java/C++ thing is a more interesting point. Java and C++ have certainly had an affect on what many people consider objects to be, sometimes a detremental one. However the recent rise/resurgence of Perl/Python/Ruby and friends has pushed back at that. Hell, Ruby is basically Smalltalk through C syntax glasses :-)
And it's nothing new. Remember when Pascal and C dominated? Industry always likes one or two big languages, usually the ones that the academic system teaches everybody so they have a nice big pool of people to pick from.
The idea that there is been a retreat from innovation in programming languages is just daft. I don't know about you but I've got a list of half a dozen interesting little languages that I want to play with when the spare time fairy next visits. Scripting languages "making no progress in language and system design"? Tosh. Look at Perl 6. Packed with interesting little ideas.
I also don't think that it has starved other paradigms. Look at the AOP world. Refactoring and design patterns. The agile movement. The rise/resurgence of the scripting/dynamic/scripting languages. The web. RESTful architectures. Etc. Nobody standing on their laurals that I can see.
I think the real test for whether objects have failed is whether you want to abandon them. Do we want to drop back to the pre-objects world? I certainly don't. They're not a failure, they're just not the end of the journey.
Hell - I agree with most of what he's saying. Just not the portentous tone :-)
The IT industry has always been this way. It was this way in the eighties. It was this way in the nineties. It's this way now. It'll carry on this way next decade. They'll always be the prevalent opinion, that big fat bump in the middle of the bell curve. They'll always be the edge, when interesting folk are trying interesting things that don't quite fit in with the majority view. I'm gonna spend my time there if I can.
– AdrianHoward (feeling ranty today :-)
Quora Answer : Who invented Object Oriented Programming(OOP) and what was the motivation and inspiration?
Alan Kay put together the definitive idea of Object Orientation (as we understand it today) in the early 70s. That idea included the language Smalltalk which had Classes, multiple Instances of those Classes, and everything happening through message passing between objects of one class and another.
His stated inspirations were :
- the language Simula 67, a language which allowed multiple processes to talk to each other via message passing. Some people think that Simula 67 is the first Object Oriented language but it might be seen equally as a precursor to the "Actor Model" of parallelism or Erlang's multiple processes. Simula 67 didn't have Classes.
- Ivan Southerland's Sketchpad, the first interactive drawing or CAD program. This had the facility for users to draw a generic shape (I believe called "master" in the terminology) like a house or tree, and then insert multiple copies of that master into another drawing with some variation (eg. stretched, reflected). Kay says the idea of the distinction between Classes and Instances was inspired by Sketchpad.
- Kay studied biology in college. He says the biological cell as a self-contained unit communicating with other cells via chemical messages was another influence on the idea of OO. (See also BiologyAndComputing)
- OO was always conceived in a context like the Smalltalk environment. A persistent world (or "Image" in Smalltalk terminology) which users didn't so much write "programs" for as add extra capabilities to in the form of adding new Classes to a common library. Smalltalk was also intended as a learning environment for children who would put together new things by combining existing objects. (If you watch some of the original videos it's pretty impressive what he was getting children to produce in the 1970s).
Kay was explicitly inspired by Seymore Papert's Logo language and ideas : that children could learn about maths and physics by writing programs to execute algorithms or simulate physical systems. Smalltalk borrowed Logo's Turtle pretty early on. And I believe Papert remains an inspiration for Kay.
Update : if you really want to know how awesome all this was, back in the 70s, you really should watch Alan Kay: Doing with Images Makes Symbols Pt 1 where Kay shows what he was doing back then.