Uso del lenguaje de programación en Google [cerrado]

29

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?

Joshua Partogi
fuente
16
Además, te olvidaste de ir.
cbrandolino
22
Si un lenguaje es suficiente, ¿por qué hay Python, C ++ o Java? Todos podríamos usar el lenguaje ensamblador para el procesador que están ejecutando nuestros sistemas.
Lázaro
Decir que un idioma es suficiente es como decir que un tipo de madera es suficiente, ¿respetaría a un carpintero que solo había trabajado en pino, pero nunca en arce o roble?
Zachary K
Además, olvidó Sawzall labs.google.com/papers/sawzall.html
Chiron el
1
Usaron Java. Revise esto reddit.com/r/google/comments/3sdx3b/…
Elshan

Respuestas:

97

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.
Chris Smith
fuente
Según su explicación, ¿significa que GMail usa GWT?
Joshua Partogi
1
Actualmente, Google también está usando Python para aplicaciones web.
Raphael
El destacado Googler Alex Martelli explica "Python donde podemos, C ++ donde debemos"
Peter M. - representa a Mónica el
17
1 language is enough

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.

StuperUser
fuente
44
+1, utilizando la mejor herramienta para el trabajo. Actualmente estoy trabajando en una sola aplicación de escritorio que utiliza 3 lenguajes de programación (más varios lenguajes de marcado y de base de datos). Cerca de cosas de metal con C ++, aplicación principal con Java y algunos Jython aquí y allá para una fácil personalización. Tiene sentido tomar lo mejor de los tres mundos, OMI :-)
Joonas Pulakka
9

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.

Sorantis
fuente
Implementaría algoritmos complejos, no extremadamente críticos para el rendimiento, en Python.
3

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

Mahmoud Hossam
fuente
2

"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.

Enigma de Eldritch
fuente
0

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