This week, some introspection, some predictions, and some ruminations.
First of all, I'd like to start by saying I'm struck by the responses
from readers to last week's column. I started off by observing that Java
and Apple's proposal for a new operating system had a remarkable number of
similarities, both functionally and aesthetically. I innocently speculated
that Java's popularity had led to design decisions for Apple.
All of this came out of my toying with the notion which Java has lately
inflicted upon a number of people--if the flavor of your programming
environment is agreeable, people will go out of their way to use it. It's
strange to think people ever choose to work with a given operating system,
or a given language, on the basis of it's merit, but what the heck, we're
marching into the future, here.
Little did I expect it would draw the biggest reader response in the
history of the column. Perhaps it shouldn't be surprising. Apple's bigger
proponents do, after all, often deserve their reputation for zealousness
in defending their platform, of which Rhapsody is undoubtedly the current
culmination. Without a doubt, the histories of inventions are
ever-complicated, and ideas never just happen. They percolate through a
culture for years before they finally reach the light and crystallize.
So let it be a lesson. One reader pointed out succinctly that technology
was drifting unquestionably from NextStep to Java, and sure enough, upon further investigation it
appears to be at least partly true. The formalized Model-View-Contr
oller approach used in the
recent version of the Java GUI toolkit, which we mentioned is common
to both operating systems, is perhaps a good example of what I mean.
MVC is going to be part of the programming in Rhapsody,
according to Apple. Since the company made such a drama out of purchasing
Next and "unifying" the two companies' strategies, the new Mac operating
system is inheriting a lot from the OS most commonly known as NextStep, which apparently supported this paradigm before Java was
even conceived.
I can't, however, really give NextStep the credit for anything other than
having the foresight to use a good technique, since the idea has apparently
been used in a number of other object-oriented environments before and
since. On my impromptu search for its origin, I was able to find mention
of Model-View-Controller systems dating back to the mid-eighties, when
it was apparently being applied to another little known yet very
promising object oriented system called Smalltalk. I'm fairly certain the idea goes back significantly
farther than that.
After I had referred to Objective C
(the patron language of NextStep) and the Java language as "distant
cousins," another reader astutely commented on how much of Java "came from"
Objective C (which dates to the early 80's), and sure enough, you
don't need to look very far to find that much of the Java object model
(for example, the very basic concept of a Java interface) probably
came, at least in part, from Objective C. Although once again, we can't
give Objective C itself credit for much besides going back to Smalltalk and
stealing some more good ideas. And you can read it right in the
documentation. Objective C is unabashedly designed to "provide Smalltalk
object functionality to the C language."
It's perhaps fitting to spend our final moments considering the real
origins of the Java language. In case you're wondering, the researches
I've been led into by sharp-eyed readers have led me back, as so many
inquiries into the origin of modern computer science do, to the Xerox
Palo Alto Research Group. The people who invented Smalltalk,
somewhere back during the Reagan or Carter Administrations.
Of course, they too had the work of others to build on, but it's hard
not to notice how many roads lead back to Xerox.
Smalltalk, so its few but strikingly vocal proponents will tell you, was
all-that-and-more for object oriented programming, many many years before
most people knew what object oriented programming was. Perhaps in
the continuation of a long-standing tradition with regard to ideas generated
by the people in that research institution, the product itself was never
successful, but eventually most every other company in the marketplace
went about cannibalizing it for ideas, eventually getting around to imitating
quite a lot of it.
So the best stab I can make at making sense of all this is that Rhapsody,
Java, and others all share a common ancestry--they're all Xerox
kids in some sense.
I like the mouse. I like the windows-based user environment. I like
ethernet. I knew they were all Xerox inventions, but that's a part of
long-standing and venerable computer lore. Books have been written about
it. But imagine my surprise--even Java had it's hands in this cookie jar of
ideas. Very interesting indeed.
I suppose ultimately they are just good ideas, and anyone who comes
across them would see that. All the same, I'd like to propose a moment of
quiet respectfulness for the Xerox
corporation, which has steadfastly failed to capitalize on almost all
of its world-shaping inventions. That's got to be tough. Better luck in the
future, guys.