|
One should understand the past to get glimpses of the future. Smalltalk vs Java is a good point to do this study. Why Java succeed where Smalltalk failed?
There was marketing. Xerox PARC is widelly known as a market failure, while Sun manage to bring Java, since its early version, to the spotlight. There is no reason that we should expect future decision to adopt this or that solution without a strong marketing support.
There is timing. Virtual machines are expensive in terms of speed and memory consuption. However, when Smalltalk appeared, we were "not there" yet. Smalltalk was a heavy load and it was very difficult to use. Computers were not so as wide-spread as today. Java, on the other side, got in the market "just in time" for a amazing growth of CPU and memory in a already ubiquitous PC.
There was freedom. Smalltalk was about "take it all or leave it all". Java is a language, that can be used in different environments. Developers have their ways. I, for example, around 89/90 was using Actor and not Smalltalk, because it was more windows like.
Syntax also plays a role. Although Smalltalk is pure OO and beautiful, it is easier for a programmer to learn Java (most of them know Pascal/C ou Basic).
In a way, this points to a future where:
1. Successes should mix good technical reasons with strong market.
2. Sucesses should be revolutionary and evolutionary at the same time. New concepts should draw people to it, but the "interface" should change little from what they are used to.
3. Sucesses should allow for freedom of choice in things other that its own "master concept".
4. Sucesses should be affordable.
|
"Syntax also plays a role. Although Smalltalk is pure OO and beautiful, it is easier for a programmer to learn Java (most of them know Pascal/C ou Basic)."
Some of the most successful Smalltalk projects I've worked on involved people who were never introduced to Pascal, C, or BASIC. It's a subtle point, but I'm not sure that programmers are the best people to have developing software. There's too much baggage they bring to the project.
Successfully modeling a real-world process is more concerned with understanding what questions to ask the model's consumers than understanding the side-effects of auto-incrementing a variable in an assignment statement, or even how C++ implements multiple inheritence.
There have been a couple projects I've worked on where I used Smalltalk to model a system under development DURING user interviews. When asked what I was doing, I simply said I was "capturing the system specifications in an active, graphical note-taking environment." On one project, at the end of a five-day series of meetings, I actually had some of the non-technical staff modifying my classes while I wrote on the white board. I am fairly confident that you will NEVER see non-technical people volunteer to edit .java files to represent changes in an ongoing specification, even if you're using JBuilder, Forte (NetBeans?), Eclipse, or IDEA.