I have lots of languages coexisting from EDL to Java to C++ to C to Python. I integrate with message passing / RPC, so there is no issue with binary compatibility. Struct/copycd/class versions of data layout are easily translated automatically. My brother uses JSON source for data definitions, and translates that to headers/copycd/etc for various languages. A lot of people use JSON for messages. I respect that and have no problem interacting with that, but it is slower.