In principle it is
In practice is not that easy - but this has more to do with the C++ influence that was going around at the time. Using one of the static languages you have to write idl (which looks a lot like C++), then generate proxies and stubs and implementations. All that code generation for each interface....
Of course, from a dynamic language like Objective C or Smalltalk - you have just one proxy that handles all remote objects and you let the interfaces be autoconfigured.
From the Wikipedia:
PDO became somewhat infamous in the mid-90's when NeXT staff took to writing in solutions to various CORBA magazine articles in a few lines of code, whereas the original article would fill several pages. Even though using PDO required the installation of a considerable amount of supporting code (Obj-C and the libraries), PDO applications were nevertheless considerably smaller than similar CORBA solutions, typically about 1/2 to 1/3rd the size.
Example Server:
/* Assume serverObject has a valid value of an object to be vended. */
NSConnection *theConnection;theConnection = [NSConnection defaultConnection];
[theConnection setRootObject:serverObject];
if ([theConnection registerName:@"server"] == NO)
{ /* Handle error. */}
Example Client:
id theProxy;
theProxy = [[NSConnection rootProxyForConnectionWithRegisteredName:@"server" host:nil] retain];
[theProxy setProtocolForProxy:@protocol(ServerProtocol)];
// interact with proxy like a local object
That's it. No idl, no fiddling with interface repositories, no Blanchard's Law violating code generation.
"I believe that many of the systems we build today in Java would be better built in Smalltalk and Gemstone."
-- Martin Fowler, JAOO 2003