Suppose you are absolutely certain that a technology that you know about will succeed. How long will it take to have a major impact? Warning: Technologies take a surprisingly long time to become accepted.
The above quote is taken from Donald Norman's "Defending Human Attributes in the Age of the Machine". He gives insight in why new technology takes so long to adopt and even gives some examples of outmoded technology that we still use (the "qwerty" keyboard). Then, he explains several examples of modern technology and how long it took them to be accepted. The numbers are staggering. The television took seventy years from inception to acceptance! He gives a lot more examples and it's quite the read.
Where am I going with this? I think this applies to computer languages and frameworks. The rest of the industry keeps edging toward Smalltalk and Lisp. The road to Smalltalk was started with C++ (by mimicing OO features) gaining acceptance. Later, it was java (VM, garbage collection) and now, python and ruby (late-binding, dynamic typing, closures, etc). Each jump has taken about ten plus years each. What will the next jump be? I'm hoping it will be toward the image because it's the only piece missing. But, we still have about ten years before critical mass. Are you patient? I think I can be.
Each technology jump toward Smalltalk should be celebrated. I tend to be disappointed with each jump because it's not far enough, but I should be happy. Everyone is one step closer to feeling the love. Oh, I can wait ten years for love. Can't you? Now, the question is how long will it be before prototype languages are accepted? I'm betting at least twenty years from now. Well, that's a lot of time to be ahead of the curve and kicking everyone's butt don't you think?
Rumor has it that Ruby will be sporting something like an 'image'... Of course I can't validate the rumor; I received this second-hand information second-handedly ;)
It really is good to see languages advancing towards Smalltalk. Gives me hope. :)
Moving to an image approach and then improving on that would be goodness.
Then where do languages go?
Sooner rather than later they need to embrace concurrency and distribution. Languages need to bust out of the image, even though it makes sense in the small.
"It's well known that I tried to kill Smalltalk in the later '70s. There were a few years when it was the most wonderful thing in the world. It answered needs in a more compact and beautiful way than anything that had been done before. But time moves on. As we learned more and got more ambitious about what we wanted to do, we realized that there are all kinds of things in Smalltalk that don't scale the way they should - for instance, the reflection stuff that we had in there. It was one of the first languages to really be able to see itself, but now it is known how to do all levels of reflection much better - so we should implement that."
A Conversation with Alan Kay, Dec/Jan 2004-2005
Some celebrate each advance towards a better engine, however, people buy cars.
Eventually it will be the tools that will sell the language, not the language itself.
Lots of effort is being poured into tools. If tools and the speed of the hardware can simulate all the goodness of Smalltalk and hide the ugliness for whatever language is under the hood, alas, Smalltalk won't get much traction.
Intentional Programming and Software Factories just might leapfrog over any "better languages". Most folk like tools, not ever changing, ever improving language syntax... else eMacs would have overcome Windows in the marketplace.
IBM makes a ton of money on the tools, like WebSphere, not the languages that run on it like HTML or Java, while Sun loses money on the language. Macromedia and Adobe make money on the tools, not the language. Windows & Office are the tools that make money. The API is the language that locks it in, not the programming language.
Tools are more hardware, network, distribution, concurrency end-user-skill aware than the language.
At best, Smalltalk should leverage its language advantage to make better app dev tools. Croquet's "shared image" and "massive collaboration" might be the only killer app tools out there.
The image alone won't do it. Any tool that allows anyone to make true := false and thereby corrupt all data and all code and relies on a questionably timed backup of the entire environment for restore, is suspect.
10 or 20 years if you are lucky. We only took 100 years to use the printing press for something other than bibles...
Post a Comment