¿Es esta práctica común? ¿Por qué se hace esto realmente? Para el rendimiento?
Sí. Las personas que lo hacen generalmente intentan reutilizar el software existente (que notará que está escrito en varios idiomas) o intentan usar varios idiomas diferentes, cada uno de los cuales es bueno para ellos.
El rendimiento a veces puede estar relacionado; por ejemplo, puede que desee utilizar Lua por sus capacidades de prototipado rápido, pero conectarlo a un correo electrónico analizador de gran rendimiento escrita en C.
creo que va a tener problemas con los intérpretes diferentes/compiladores y sin problemas de conexión los diferentes idiomas ¿Es esto cierto?
A veces. El estado de la práctica en varios idiomas es más o menos que si un idioma habla con otra cosa que no sea ella misma, hablará con C. Por lo tanto, a menudo es posible hacer que las cosas funcionen juntas a través de algún tipo de interfaz tipo C.
De lo contrario, los primeros problemas suelen aparecer en la gestión de la memoria o en una capa de VM, que podríamos considerar ejemplos de "código administrado". Por ejemplo, es muy difícil obtener un programa Haskell para intercambiar objetos asignados en el montón con una JVM. Una solución típica es tratar este tipo de llamadas, como llamadas a procedimientos remotos, como si los programas se ejecutaran en procesos diferentes o incluso en máquinas diferentes. Tales llamadas pueden implicar una sobrecarga sustancial, a menudo haciendo que sea prohibitivamente costoso para dos idiomas diferentes compartir objetos mutables, por ejemplo. Sin embargo, si no tienes que mutar cosas, los gastos generales no son tan malos.
Resumen: hay razones de peso para usar diferentes idiomas para resolver diferentes problemas, y sería sorprendente que un sistema de software grande hizo no utilizar varios idiomas (excepto tal vez en silos de un solo idioma como Squeak Smalltalk, que simplemente no hablan con el resto del mundo). Ciertamente hay dificultades con la interoperabilidad, pero el problema es antiguo y se conocen soluciones temporales.
+1 pregunta muy interesante, bien hecha. –
Muchos de los engañados, incluyendo http://stackoverflow.com/questions/2172219/is-polyglot-programming-important –