Here are two considerations of the fact that trying to get work done in just one programming language is no more likely to be possible in the future than it has been in the past: Neal Ford’s Polyglot Programming and Martin Fowler’s Should we strive to only have one language in our development efforts? Both are worth reading, partly because they take up more general issues like concurrency and the old static/dynamic debate. But both conclude that yeah, no surprise, the future is multilingual. So how do we integrate ’em all?
Integration is a two-part problem, depending on whether the network is involved. In fact the network is the computer, but there are still lots of cases where you need to get C++ and Java and Rails and whatever code running on the same computer talking to each other. This is one of the reasons why projects like JRuby and IronPython and so on are interesting; if you can call Language X’s APIs from Language Y, life is easier.
But often you can’t. Even if you’re living on one computer right now, it might be smart to write your integration pretending that you’re not, so that when the load cranks up, you can scale out. From where I sit, the only good answer is still something with a REST flavor, where by “good” means “We know how, it’s tractable to build and maintain, we can make it secure, the performance is probably Good Enough, it’s not terribly sensitive to the co-operating parties’ languages or databases or operating systems, and you can run it on as many computers as you need to.”
Does anything else matter?