He oído que Google usa Python, Java y C ++. Pero lo que no sé es cómo se usa cada uno de esos lenguajes de programación. Quiero decir para qué se usa Python, Java y C ++ en Google. ¿Por qué usarían hasta 3 lenguajes de programación cuando 1 idioma es suficiente? ¿Alguien sabe?
29
Respuestas:
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:
fuente
Tal vez un idioma sea suficiente para completar varias tareas diferentes de manera adecuada, pero los diferentes idiomas tienen diferentes fortalezas, debilidades y habilidades.
Dado que Google probablemente programa para una gran cantidad de situaciones diferentes, se trata de caballos para cursos, la mejor herramienta para el trabajo.
fuente
Estos tres idiomas se usan para diferentes propósitos.
Python podría usarse para escribir scripts de automatización.
C ++ para implementar algoritmos complejos (Indexer, Crawler, Map-Reduce, Big Table)
Java para servicios web, aplicaciones web, etc.
Estas son solo mis suposiciones.
fuente
Python se usa para su sitio web de soporte, puede ver que esta página es generada por un script de python, usan bibliotecas java para aplicaciones web, de ahí el soporte de GWT y java en el motor de aplicaciones
Creo que usan C ++ para Google Earth, o para aplicaciones de escritorio en general
fuente
"1 idioma es suficiente" solo puede ser cierto si cada proyecto que realiza es de un tipo específico. Y para algunos proyectos, incluso C ++ Java y Python no son las mejores herramientas. Además, conocer un solo idioma es una característica distintiva del pobre programador.
fuente
También escriben aplicaciones nativas para Mac y iPhone, y están en Objective-C. La razón por la que lo hacen es simple: las API están en Objective-C.
fuente