To add to that, the BEAM has binaries as a data type so when you're talking to a foreign program you can quickly prototype or design binary protocols once you get tired of parsing/encoding JSON or XML or something at the edges. Depending on the facilities of the foreign language it might be more or less feasible, of course.