Lists Home |
Date Index |
On Saturday, October 19, 2002, at 08:26 PM, Karl Waclawek wrote:
> What is it that prevented CORBA from gaining more ground in the market?
> The fact that there is no standardized way to get through firewalls?
I think it was the development tools. They sucked. To start with
CORBA was developed in the golden age of C++. C++ is an extremely poor
application development language with compile time static binding and
no (useful) runtime metadata.
To work around that, the CORBA people (who were also quite enamored
with C++) invented IDL (Interface Definition Language). IDL looks a
whole lot like C++ header files with some extensions. It also requires
lots of labor defining all kinds of serialization calls because
serialization of C++ objects isn't something you can generalize. Then
you had to code-generate 3 versions each class (interface, proxy, and
implementation) so the type checking compiler wouldn't freak out.
(Blanchard's (yes thats me) law of software development - any system
that develops code generation as a standard technique is insufficiently
powerful to solve the problem at hand).
Then you had all this stub code to generate and fill in. It took
forever because every class you wanted to distribute had to have a
custom built proxy.
So while the underlying CORBA communications and services
infrastructure was decent, the programming hoops you needed to jump
through in order to take advantage of it were horrendous. Java RMI,
uses the same insane development process.
OTOH, take a look at HP Distributed Smalltalk or NextStep's PDO
(Portable Distributed Objects). These languages (Objective C and
Smalltalk) are *message passing* rather than function calling systems
and their technique for addressing unhandled messages is to call a
default message handler (#doesNotUnderstand: for Smalltalk,
forwardInvocation: on Objective C) rather than simply crash (in the
case of C++) or throw an exception (in the case of Java). In the
default handler, you can then package up the message and ship it over
the wire. You only need on kind of proxy with a little data about
where the real object lives and you're set. No code generation, no idl,
no hand coded serialization. Distribute an object of any class on
But the dynamic object people were out-shouted (and markted - ParcPlace
was more interested in maximizing dollars per seat than in maximizing
dollars overall and NextStep only ran on one kind of hardware) by the
static typing crowd and so we have the nightmare static programming
languages C++ and Java rather than the nice dynamic ones from 5-7 years
Its very sad to watch the deevolution of computer science over the last
several years and we continue to lose new generations of developers to
the static language mentality.
Plus I work harder and harder every year to accomplish the same thing.
Very sad indeed.