Saturday, March 03, 2007

Objects - I know that already!

I recently received an email from an old adversary from TSS (The Server Side). Steve and I are kind of friends now - which is nice considering that we have never met, and only know each other through posts on TSS, e-mail and through our blogs.

Anyone who follows the news threads on TSS knows that I can be pretty vociferous with my opinions about Objects and the shortcomings of Java. Well I've infuriated Steve on many occasions, leading to long exchanges... One of Steve’s pet peeves, is me continuingly quoting Alan Kay. So you can imagine my surprise when Steve sent me this link to a keynote speech given by Alan Kay at OOPSLA in 1997

BTW, For anyone interested in Object technology, there are a whole set of videos available on the web showing the history of Objects and the primary players involved going back to the 1950s.

Steve is an ardent Java supporter, and I had posted a link to this same video and several others, many months ago in an attempt to cure him of this unfortunate affliction :^) Well many months later he stumbled across the same video himself, and he wanted to discuss it with me. Steve has over 20 years software experience (a fact that he is fond of sharing :^)), and has used several OO languages over the years including Smalltalk. So what was there to discuss prompted by a 10 year old video by Alan Kay?

Well you can all judge for yourselves. I would urge any programmer to watch this video. It deals with fundamental programming concepts, which most of us have dispelled from our consciousness long ago. Why? Because we know it already! We all know what an operating system looks like. We know what professional, industrial strength programs look like too. And we all know an "enterprise strength" programming tool (language + IDE) when we see one! We've all used/seen Eclipse, IntelliJ and Visual Studio. All of these tools are marketed as 'Object Orientated', and all of them are supposedly state of the art!

If you look a little closer though, and peel off the shiny veneer from these tools, underneath they look remarkably like 'C', 'vi’, 'make' and ‘cc’. Not much has changed since C/Unix in the 1970s. We still use the same old while loops and if statements, still the same edit/build/run cycle. If a C/Unix programmer had been put in a time capsule in 1977, and re-awakened today he would find tools like Java and Eclipse pretty familiar and would be up and running with them in days.

So why has so little changed in 30 years? Here is an explanation I've lifted from an Article by Dafydd Rees on Croquet and Squeak:

"Kay blames this lack of innovation on the fact that most adults employ instrumental reasoning to evaluate and apply new ideas. This means that adults have difficulty evaluating new ideas because they're carrying too many existing goals, and too much context to be able to see the full potential of new ideas."

One of the beauties of children is that they are untainted by our pre-conceptions. Each new generation looks at the world afresh, with new eyes, and kids perennially ask the question why?

My plan is that this post will be the first in a series, where I will be questioning strongly held assumptions about object technology. Hopefully Steve will comment too (apparently his epiphany was only short lived!). Free from marketing and spin; the idea is to have a useful exchange on where we've been with objects, where we could/should have been and were we should go next.

Like Alan Kay says: "The Computer Revolution hasn't happened yet".

If you are genuinely interested in Object technology; in a language neutral sense; then book mark this blog. It should be interesting and your input is welcomed.


steve said...

I was excited by Alan Kay's ideas, but years later I think his approach and attitude is deeply flawed. He reminds me a lot of Babbage, who was never satisfied with anything he produced, and kept moving on to the next project before anything was really finished.

Apart from anything else, his metaphors are certainly flawed. As a biologist, I know that his 'objects should be like bits of cells, all communicating' principle is more like a description of how you need different approaches at different scales, rather than using the same ideas everywhere (the idea of every object having its own unique internet ID, for example is bizarre - I don't think memory is yet that cheap).

His criticisms of other approaches is extreme. It is all very well to say how awful Java is, and how bad HTML is, but there is no doubt that these technologies have led to dramatic benefits in IT. To me, it is a sign of a fundamentalist viewpoint when no compromise is allowed, and advances aren't recognised unless they are 'pure', following the 'true religion' of message-based OOP.

Far from the computer revolution not having happened yet (as he is fond of saying), it IS happening, just slowly. Things are becoming more dynamic, more OOP, more automatic. And software development has benefited as a result.

Projects that Kay has worked on in recent years have simply not been robust or performant enough for widespread general use. (Use in teaching or for on-line collaboration is NOT general use!) If anyone knows of a major corporate website based on Squeak, I will be prepared to change my mind, but this post from only a few days ago seems to indicate a sad situation:
"Companies need stable, but maintained releases. We at Impara supported the 3.8.1 release, but in hindsight it all seems too little to late, to be honest. The community is trying to support everything for everybody, ending up not supporting anything for anybody."

I think this sums things up. Kay seems to be trying to lead us into a world of permanent beta-stage, of endless prototypes. What some of us need is power and stability and maintainability.

Paul said...

Hi Steve,

That didn't take you long! A couple of points you make:

"if anyone knows of a major corporate website based on Squeak, I will be prepared to change my mind"

I don't know if they count as "major corporates" but many small companies use dabbledb and are happy to pay. Dabbledb as won several awards and is written in Squeak.

"I think this sums things up. Kay seems to be trying to lead us into a world of permanent beta-stage, of endless prototypes. What some of us need is power and stability and maintainability."

I think your summary cuts both ways. Bill Venners as started a thread on artima about Java pain points. His view is that Java needs fixing/updating, but how to do it and maintain backward compatibility? Amongst the solutions is touted new VM languages like Groovy. The article has attracted over 200 posts, which is indicative of the percieved problem.

Now if Java wasn't a 'fixed' language tied down at design time, and was 'meta' and self aware then you could modify Java using Java and adapt it to something new as new ideas come along. After all Gosling was unlikely to have had the last word in computer science back in 1995.

This adaption is something that has been happening with Smalltalk since the 1970s and is still happening today. Lisp has been around since 1956 and has evolved tremendously!

So long term stability for a programming languages, could mean "the ability to adapt and change over time"

OK. I've had more than my 2 cents. Hopefully other will chime in to.

steve said...

My response was fast, because I had been thinking about the Alan Kay talk for some time!

You are right about Java needing some things fixed (I am not such as fan of Java as I may seem), but at least it has provided a robust and performant framework on which to base general software development. (Incidentally, I am a huge fan of Groovy - I already use it in my development. If or when it has decent Java IDE integration, I shall use it more widely.)

Also, Java certainly has adapted over time - Java 5 was a huge step forward (at least for Java). But, change has to be matched with robustness and stability.

Anyway, I believe you are misunderstanding the situation with Java. It isn't fixed. Gosling did not have the last word, indeed Bill Venner's thread was about how Java could continue to change to meet the requirements of developers.

It may sound neat to allow developers to modify the language, but having used Smalltalk for more than 20 years, I have had to deal with the chaos that can result when different developers modifications conflict. I would rather have a controlled and organised process.

Andrew said...

Paul, I have to confess to not taking the time to sit down and watch Kay's video until now. I find it refreshing to hear such open mindedness from a genuine pioneer in the field.
His analogy of the ants on the pink plane was particularly though provoking and holds true now more than ever in software development. Vast amounts of effort are poured into optimization in the name of innovation. People want to have a framework laid down for them to follow, so they don’t have to think too much about how they develop a product, they can just get closer to a production line and crank out functionality. Development isn’t like that and the parameters are always changing hence, thought is always required.
Of course the big corporations know this and understand the game is about making money, staying in business to satisfy the shareholders, so they just keep on churning out more optimizations and upgrades. Its all about business which is (love him or hate him) what Gates is so good at.
Almost everything I have seen happen in my years in computing are optimizations or just old ideas recycled in repackaged. Usually the only impact is to move problems elsewhere, rather than address key issues. Unfortunately, business often stifles innovation. All kinds of excuses are used in the business world, performance, cost of hardware. Perhaps some of the most convincing arguments are based around skill-sets – all too often developers are going to gravitate towards whatever will earn them the most money – I’m sure we’re all guilty of that one :)
Having said all that, software development is in a real mess. We frequently fail to deliver anything. Of that we deliver, much does not fulfill its intended function, large amounts of functionality, often costing millions, is unused. Sometimes end users find the product so ill fits their needs that they refuse to use it altogether.
It is the perception that I find most distressing – because there are good ways of managing many issues – its just that we either don’t want to change or we actually enjoy doing it the way we are and believe the issues lie with everyone else.
Objects are a subject dear to my heart. Most people are so far away from the concept of OO its unbelievable. Not that I am claiming to be any guru myself, I am still only scratching the surface with what can be achieved. Looking back, one manager I had summed up the attitude, claiming one day that Object Technology had failed to deliver reuse and all its other far-fetched promises. Often such claims are due to ignorance although my opinion is that good developers are often not constrained from delivering value because of the technology selection
Kay’s comments on internet/web based applications was also interesting, but I will save that one for another day.
Respect him though I do, one thing that Kay didn’t mention in that video, is that we can’t all be as clever as he is :) but there is nothing from preventing us from having open minds.

Paul said...

Hi Peter,

I'm glad you took the time the watch the video and your response to it and views are prety similar to my own.

"one thing that Kay didn’t mention in that video, is that we can’t all be as clever as he is :) but there is nothing from preventing us from having open minds."

Agreed. I do think that Kay's style can be off putting, after all who likes being told that they are being stupid? Also even though Kay talks a lot, what he has to say is very condensed and assumes a lot of prior knwledge and experience.

My goal is to break down his ideas into a more consumerable form and present them to todays main stream programmers in a more attractive way.

After all when Kay first made these statements he had a built in advantage over all of us. He had been doing OOP for over a decade. Now that the rest of us have had over a decade to catch up, perhaps we are all now better equiped to understand the full worth of what he had to say back then.

Keep checking in. There are a few more OOP videos I intend to blog about, which are IMO as equally as exciting!