Uso intensivo de Python en Google [closed]

9 minutos de lectura

avatar de usuario
ron chan

El uso intensivo de Python por parte de Google, ¿es solo una cuestión de gusto o les da una ventaja competitiva?

  • Esto tiene que ser wiki de la comunidad

    – Probador automatizado

    1 de abril de 2010 a las 12:38

  • Alex Martelli entrante para la respuesta aceptada muy pronto, ….

    – ChristopheD

    1 de abril de 2010 a las 12:41


  • En realidad, creo que esta respuesta podría responderse de manera objetiva (debe haber una declaración en algún lugar de Google por qué la usan;))

    – Félix Kling

    1 de abril de 2010 a las 12:41

  • @nomemory, “pesado” es un adjetivo bastante correcto aquí (por supuesto, necesitaría poder ver nuestra base de código para confirmar, cuánto Python vs Java vs C ++, etc.), pero yo soy capaz de mirarlo y contribuir a él, principalmente Python, casi todos los días ;-). Y la pregunta no es sobre toda la industria de TI, es específicamente sobre Google, una empresa de 20 000 empleados (incluidos los que no son programadores), donde algunos de nosotros tuvimos mejor “tener una visión de conjunto”, ya que formar esa visión y actuar en consecuencia son partes fundamentales de nuestro trabajo;-). Entonces, estoy votando para reabrir.

    – Alex Martelli

    1 de abril de 2010 a las 14:28

  • @nomemory, siempre hay entusiastas reclutadores de Oracle en las conferencias de Python, por lo que me sorprendería saber que Python “no existe” en su base de código (si es así, esos reclutadores están mintiendo, además de perder su propio tiempo y el de los Pythonistas). ;-). Y de todos modos, ¿cómo están compitiendo Oracle y Google, realmente?-)

    – Alex Martelli

    1 de abril de 2010 a las 14:56

avatar de usuario
alex martelli

Realmente no puedo dar una respuesta definitiva, porque cuando me entrevistaron en Google en 2004, Python ya era prominente en Google.

De hecho, hay una explicación aparentemente atractiva que definitivamente puedo negar: no es que Google use Python porque emplea a tantos pitonistas prominentes, sino que la mayoría de los googlers “pythonistas prominentes” se unieron a Google, al menos en parte, porque sabíamos sobre la prominencia de Python. allí (las posibles excepciones incluyen a Peter Norvig y Jeremy Hylton, pero históricamente la elección de Python por parte de Google es anterior incluso a ellos).

Definitivamente esa es la razón por la que me interesé por primera vez (mi editor me informó sobre la gran cantidad de copias de mi libro que Google estaba comprando; al principio, pensé que era una buena oportunidad para vender mi servicio de consultoría independiente…;- ), cómo más tarde pude convencer a Guido para que se uniera a nosotros y, creo, parte de la motivación de Pythonistas como Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, …

Todo comenzó, creo, porque los primeros Googlers (Sergey, Larry, Craig, …) tomaron una buena decisión de ingeniería: “Python donde podemos, C++ donde debemos”: usaron (un subconjunto de) C++ para las partes de la pila de software donde la latencia muy baja y/o el control estricto de la memoria eran cruciales, y Python, que permitía una entrega y un mantenimiento más rápidos de los programas, para otras partes. En ese momento, a finales de los 90, la elección para el último rol era esencialmente entre Python y Perl: otros lenguajes de secuencias de comandos no estaban maduros (no creo que Ruby existiera todavía, por ejemplo) o tenían otros problemas y limitaciones. Perl era más maduro (especialmente en términos de su ecosistema de complementos disponibles a través de CPAN), pero se consideró que Python era más fácil de leer y mantener, y la interfaz con las bibliotecas de C++ (a través de SWIG) era más fácil.

Java llegó más tarde, cubriendo un nicho intermedio, y más recientemente, por supuesto, se desarrolló Go (aunque no creo que haya mucho trabajo de producción todavía, ya que todavía está evolucionando y madurando). Algunos lenguajes especializados como serrucho también están en la mezcla para tareas muy específicas y, por supuesto, Javascript es muy importante para el trabajo del lado del navegador.

Otros lenguajes, incluidos los que Greg mencionó en 2006, son “algo accidentales” o se usan para otras tareas específicas (por ejemplo, Objective C para clientes en iPhone o Mac), por ejemplo, cuando Google contrató a sus primeros administradores de sistemas. , esos empleados inevitablemente tenían un gran dominio de Perl y Bash, y a menudo usaban cualquiera de esos lenguajes para desarrollar algún sistema interno complejo; a menudo se han vuelto a codificar en Python (para facilitar la implementación y el mantenimiento). Otros (como C#) pueden haber estado en la mezcla temporalmente debido a las adquisiciones, pero, de nuevo, la grabación en uno de los “lenguajes principales de Google” siempre es una prioridad bastante alta (en el caso de C#, la grabación normalmente sería principalmente en Java, ya que los dos lenguajes abordan áreas similares en términos de niveles de abstracción).

  • @Alex probablemente no lo entendí correctamente, pero parece que Google quería que su entorno estuviera abierto para los ingenieros (especialmente los investigadores), aquellos que pasaron años en la universidad y solo obtuvieron C o C ++ en las manos (ya que todos comenzaron con estos lenguajes y la mayoría de ellos terminaron ponte manos a la obra también). Aquí, Python es un fuerte competidor que proporciona una interfaz para una enorme biblioteca de C/C++.

    – Ramiz Udin

    12 de abril de 2010 a las 11:57


  • Viaje en el tiempo FTW: web.archive.org/web/20091222094118/http://labs.google.com/…

    –Jess Telford

    17 de abril de 2012 a las 3:47

  • Impresionantes ideas!! Puede ayudar a los posibles Googlers

    – kmario23

    22 de noviembre de 2014 a las 6:31

  • Un dato que recopilé al leer el excelente libro de Levy “In the ‘Plex” es cómo Python entró en Google (antes de que se llamara Google, luego se llamaba “backrub”). Larry Page había escrito una “araña” web-scraping en el entonces nuevo Java 1.0 beta, y estaba tan rota que su compañero de dormitorio lo ayudó reescribiéndola en un lenguaje más serio, sólido y productivo… Python. Es curioso pensar que, sin esa “araña”, Google nunca habría llegado a existir…

    – Alex Martelli

    1 de enero de 2015 a las 16:59

No he leído el artículo completo y no sé qué tan representativo es, pero tal vez esto responda a su pregunta: Python en Google.

Ok, leí la mayor parte, desafortunadamente no da que mucha información, pero creo que sigue siendo un artículo interesante. Quizás lo más importante:

En Google, Python es uno de los 3 “lenguajes oficiales” junto con C++ y Java. Oficial aquí significa que los empleados de Google pueden implementar estos idiomas en los servicios de producción. (Internamente, la gente de Google usa muchas tecnologías, incluidas PHP, C#, Ruby y Perl). Python se adapta bien al proceso de ingeniería de Google. El proyecto típico en Google tiene un equipo pequeño (3 personas) y una duración corta (3 meses).


no olvidar que guido van rossum el creador de Python trabajó para Google de 2005 a 2012 😉


También encontré esta cita pero no puedo verificarla:

“Python ha sido una parte importante de Google desde el principio y sigue siéndolo a medida que el sistema crece y evoluciona. Hoy, docenas de ingenieros de Google usan Python y estamos buscando más personas con habilidades en este lenguaje”.
— Peter Norvig, Director de Calidad de Búsqueda en Google

  • Entonces, ¿es una cuestión de gusto o una ventaja competitiva?

    – Andréi Ciobanu

    1 de abril de 2010 a las 13:06

  • @nomemory: ¿Tal vez ambos? Se ajusta al proceso de ingeniería (gusto) y, debido a eso, podría darles una ventaja si pueden terminar sus productos antes.

    – Félix Kling

    1 de abril de 2010 a las 13:16

  • Docenas de los ingenieros usan Python? Para una empresa tan grande como Google, ese no es un caso convincente.

    –Jason Baker

    15 de diciembre de 2011 a las 22:48

estaba leyendo sobre Golondrina descargada, un proyecto que tiene como objetivo mejorar el rendimiento de CPython. Mientras navegaba por su foro de discusión me topé con esta discusióndonde Collin Winter (empleado de Google y desarrollador central de Python) responde en el reclamar que Se desaconseja a los empleados de Google que utilicen Python para nuevos proyectos:

Bueno, el simple sentido común va a limitar la aplicabilidad de Python cuando se opera a la escala de Google: no es tan rápido como Java o C++, los subprocesos apesta, el uso de memoria es mayor, etc. Una de las limitaciones de diseño que enfrentamos al diseñar cualquier sistema nuevo es, “¿Qué sucede cuando la carga aumenta 10x o 100x? ¿Qué sucede si todo el planeta piensa que su nuevo servicio es increíble?” Cualquier tecnología que dificulte el cumplimiento de esa restricción, y creo que Python entra en esta categoría, debería desanimarse si no tiene un caso muy sólido a su favor sobre otros méritos. Tiene que equilibrar las fortalezas de Python con sus debilidades: sus ingenieros pueden ser más productivos usando Python, pero si tienen que sortear más limitaciones de rendimiento/escalado a nivel de plataforma a medida que aumenta el volumen, ¿usted sale ganando? etc.

avatar de usuario
Wayne Werner

Si te suscribes a de Paul Graham idea de que la brevedad == poder (es decir, si puedo escribir código en el lenguaje X en 10 líneas para lograr lo que tomó 100 líneas del lenguaje Y, mi lenguaje es más poderoso)

Estos días el hardware es barato, la carne es cara. Sé que puedo escribir mucho más, más rápido, mejor Y más claro en Python que en otros idiomas, simplemente porque las baterías tienden a estar incluidas. Claro, puede ser más lento, pero ¿realmente notará la diferencia entre 0,05 segundos y 0,0005 segundos?

En un ejemplo más real, si los desarrolladores de Google escriben un programa en Python en el que nunca tienen que preocuparse por la recolección de basura, y la empresa X escribe un programa en C++ y pasan el 10 % de su tiempo rastreando errores relacionados con la asignación de memoria, adivina quién lo hizo más rápido, incluso si la tienda de C ++ logra escribir el resto de su código con la misma rapidez.

Entonces sí, diría que es una ventaja competitiva codificar en Python.

¿Ha sido útil esta solución?