La respuesta correcta " porque los diferentes idiomas tienen diferentes fortalezas " ya se ha indicado. Pero permítanme proporcionar más detalles sobre por qué:
C ++
C ++ tiene la principal ventaja de ser el más rápido del lote. No es necesario porque Java y Python son lentos, pero porque en C ++ tienes más control sobre cómo se ejecutan las cosas.
Por ejemplo, si está escribiendo una interfaz de servicios web que requiere una latencia de menos de 30 ms, puede ajustar el código C ++ para lograr ese rendimiento. En un lenguaje administrado como Java, es un poco más difícil lograr que el GC coopere perfectamente.
C ++ se usa para mucha 'magia de Google' como BigTable, MapReduce y search goo.
Java
Para la mayoría de las aplicaciones estándar, Java es un lenguaje perfectamente bueno. Cuenta con excelentes herramientas, muchas bibliotecas existentes y no mucho tiempo de depuración.
Java se usa para muchos sitios web más grandes que serían mucho más difíciles de mantener en un lenguaje de nivel inferior como C o C ++. Por ejemplo, entiendo que GMail está escrito en Java.
Además, tenga en cuenta que puede usar el Kit de herramientas web de Google para compilar código Java en JavaScript. Entonces, esa increíble página web o widget que ves podría haber comenzado como una clase de Java.
Pitón
Python es un lenguaje fantástico de uso general, pero no ofrece tanto control tan detallado como incluso Java. (Por ejemplo, hay todo tipo de argumentos de JVM locos para las cosas: ¿Python ofrece una configuración similar?)
Sin embargo, con Python es perfectamente adecuado para sitios web simples y aplicaciones que de otro modo serían horribles scripts de shell. Por ejemplo, si desea escribir un caso de prueba simple para recopilar datos de algunas fuentes, procesarlos y subirlos a App Engine Python sería una buena opción. (Sin embargo, si necesita distribuir ese procesamiento en 1,000 máquinas, tal vez podría usar un idioma diferente ...)
JavaScript
Obviamente Google usa mucho JavaScript. Sin embargo, el tipo de JavaScript escrito en Google es diferente al que se ve en la naturaleza. Google ha desarrollado un compilador de optimización de JavaScript que le permite construir anotaciones en los comentarios a cambio de mejores optimizaciones y comprobaciones estáticas. Ver cierre de Google .
El idioma no importa (interoperabilidad)
Otra razón por la cual Google no usa solo un idioma es que no es necesario. Hay instalaciones en casi todos los lenguajes de programación modernos para llamar a bibliotecas externas, bibliotecas que pueden estar escritas en un idioma diferente. (Ver trago )
Además, dado que App Engine ejecuta la JVM, puede ejecutar cualquier lenguaje que se compile en código de bytes Java. (En Google nos atenemos principalmente a los idiomas mencionados aquí, pero este no es un requisito difícil). Si desea usar Closure, Groovy o Scala en App Engine si incluye los archivos JAR correctos, todo debería funcionar.
Fuente abierta
Además, Google usa y contribuye a una gran cantidad de código abierto siempre que sea posible. Estos proyectos generalmente están escritos en uno de los idiomas anteriores y requieren que se 'usen' en Google.
La conclusión es dos cosas:
- Cada lenguaje de programación tiene sus propias fortalezas. Sería una pena no aprovechar situacionalmente estas fortalezas.
- La disponibilidad de kits de herramientas de interoperabilidad y tiempos de ejecución compatibles significa que es menos doloroso usar varios idiomas dentro del mismo entorno de tiempo de ejecución.