The language <=> language problem is not a big issue, it's been solved many times many ways. (One) problem with the idea not often discussed is that software, and software engineers, have to deal with all the different hardware architectures and operating system platforms out there. This is where the software engineering <=> electrical engineering analogy breaks down. Imagine you're an EE and the laws of physics are slightly different every time you start a new job. Now those pre-packaged ICs are less useful, yeah? That's the difficultly facing the issue of reusable software. Ultimately any piece of software has to run on some piece of hardware. There are plenty of POSIX-compatibility libraries out there, but in order to be used they all have to run on an appropriate hardware/OS platform. That's why there are so many of those libraries!
So what's to be done? Right now, and I really stress the "right now," the great leveller we have is the network. So imagine there was a big machine out there on the Internet which exported the entire POSIX API via some form of RPC. Now anyone on any platform in any language really would have access to a reusable POSIX implementation... Erm, provided their computer is attached to the network. For that reason (and others) POSIX via RPC is not really a serious solution, but I wanted to throw out that example in the search for truly reusable software.
