Steven said:
I think this means you don't like the way CORBA (as opposed to the DOM) is
bound to/in C++.
Well, I don't like the CORBA binding to C++. As it is, I also don't like
the DOM binding to C++. A combination of both would be entirely horrible.
Neither of the two things was done by people knowing C++, at least not
the C++ it is since something like at least ten year.
If that is what you are intending, I would like to know more.
What do you want to know more about? Why the CORBA/C++ binding sucks?
Well, that is pretty simple: it is extremely error prone to use.
Actually, I'm pretty sure that there were even cases where it is
even impossible to use the C++ without creating memory leaks but I
don't remember the details (it is something like four years since I
really used CORBA).
At any rate, RAII is not used which makes resource handling very hard.
You have to keep track very closely on how the parameters are declared
and the details on how to use them in a function differ widely between
in, out, and inout parameters, each having its own rules. Sure, there
are tables telling you how to do it (which cover 90% of the real cases)
but if you change a declaration from eg. out to inout you have to
apply major changes. Of course, the code would compile unchanged - it
would just misbehave (I think it would create a resource leak).
Bindings to other languages were *much* easier to use. I used CORBA
with Java and this is very easy to use. Even easier is the Python
binding (although I didn't use it much; I just used it during
evaluation for a project which was not really started): there the
CORBA stuff is rather transparent. You just use the objects painlessly.
I'm pretty sure that a much easier to use C++ binding would be
possible, probably exhibiting the same performance characteristics
as the current one. There seems to be not much interest in CORBA,
however, and I have no real stake in CORBA to go forward anymore.
From my limited understanding of these issues,
this is an area where J2EE has really taken the market share from C++.
CORBA has several problems which are independent from the C++ binding.
Eg. the protocol is not the most efficient one I have seen. On the
other hand, people also use SOAP which shares a similar problem. Also,
people were abusing CORBA grossly. Actually, I participated in a
project where people though it would be a brilliant idea to have
distributed getter and setter functions: each attribute access was a
remote call. It is hard to come up with even worse performance short
of calling sleep rather frequently. I'm sure this was not the only
project doing something stupid like this.
When J2EE appeared, CORBA had already earned a reputation for being
slow and the media didn't consider any non-Java solution at all. This
helped J2EE big time, especially as C++ had and actually has not good
alternative: the CORBA binding still stucks. On the other hand, there
are few applications which really need much distribution beyond what
a web server does, at least as far as I can tell. People moved away
from fat clients to browser based applications, normally due to the
much reduced maintainance cost at the client side: it is hard to argue
why money needs to be spent on something which can be obtained for
free.
At
least this is how it looked to me from pretty close to the frontlines.
People were talking CORBA/IIOP and IDL in 1996, and by 2000 the buzz was
all Java Servlets.
It's quite a while since Java Servlets were the buzz, either. At least,
I haven't heard much about them lately. On the other hand, I'm not much
listening for buzzes... What would be the buzz now? I think people
returned to good old three tire applications: a thin client, ie. a web
browser, accesses some server which in turn accesses a relational
database. That is, the only difference which effectively remains is
that we don't use a text terminal and that a standardized protocol
(HTTP) is used between client and server.