Alex Martelli recibirá la respuesta aceptada muy pronto, ...
ChristopheD
44
En realidad, creo que esta respuesta podría responderse objetivamente (debe haber una declaración en algún lugar de Google por qué la usan;))
Felix Kling
15
@nomemory, "pesado" es un buen adjetivo correcto en este caso (por supuesto que había necesidad de ser capaz de mirar a nuestra base de código para la confirmación - la cantidad de Python vs vs Java C ++, etc. - pero, yo soy capaz de mirarlo , y contribuir a él, principalmente Python, la mayoría todos los días ;-). Y la cuestión no está en toda la industria de TI - es específicamente en Google, una empresa de 20.000 empleados (incluidos los no programadores), donde algunos de nosotros tenía mejor "tiene una visión de conjunto", desde que se formó ese punto de vista y actuar en consecuencia son partes centrales de nuestros trabajos ;-). Entonces, estoy votando para reabrir.
Alex Martelli
77
@nomemory, siempre hay entusiastas reclutadores de Oracle en las conferencias de Python, así que me sorprendería saber que Python es "inexistente" en su base de código (de ser así, esos reclutadores mienten, además de perder su propio tiempo y el de los Pythonistas) ;-). Y de todos modos, ¿cómo están compitiendo realmente Oracle y Google? -)
Alex Martelli
Respuestas:
286
Realmente no puedo dar una respuesta definitiva, porque para cuando me entrevisté 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 tantos Pythonistas 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 Peter Norvig y Jeremy Hylton, pero históricamente la elección de Python por parte de Google fue anterior incluso a ellos).
Esa es definitivamente la razón por la que me interesé por primera vez (mi editor me hizo saber acerca de 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 permite la entrega y el mantenimiento más rápidos de programas, para otras partes. En ese momento, a fines de los años 90, la elección para el último rol era esencialmente entre Python y Perl: otros lenguajes de script no estaban maduros (no creo que Ruby todavía existiera, 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 legible y mantenible, y la interfaz con las bibliotecas C ++ (a través de SWIG) fue 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 sawzall 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 el 2006, son "algo accidentales" o se usan para otras tareas específicas (por ejemplo, Objetivo C para clientes en iPhone o Mac), por ejemplo, cuando Google contrató a sus primeros administradores de sistemas. , esos empleados inevitablemente venían con un dominio muy fuerte de Perl y Bash, y a menudo usaban cualquiera de esos idiomas para desarrollar algún sistema interno complejo; La codificación de aquellos en Python (para una implementación y mantenimiento más fáciles) a menudo ha sucedido. Otros (como C #) pueden haber estado en la mezcla temporalmente debido a adquisiciones, pero, una vez más, la recodificación en uno de los "principales idiomas de Google" siempre es una prioridad bastante alta (en el caso de C #, la codificación generalmente se realizará principalmente en Java, ya que los dos idiomas 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 ingenieros (especialmente investigadores) aquellos que pasaron años en la universidad y solo obtuvieron C o C ++ en sus manos (ya que todos comenzaron con estos idiomas y la mayoría de ellos terminaron arriba con eso también). Aquí, Python es un fuerte competidor que proporciona una interfaz para la gran lib de C / C ++.
¡Ideas increíbles! Puede ayudar a los posibles googlers
kmario23
3
Un dato que recogí al leer el excelente libro de Levy "In the 'Plex" es cómo Python se metió en Google (antes de que se llamara Google, entonces era "backrub"). Larry Page había escrito una "araña" para raspar la web en la nueva versión beta de Java 1.0, y estaba tan rota que su compañero de cuarto lo ayudó a reescribirla en un lenguaje más serio, sólido y productivo ... Python. Es curioso pensar que, sin esa "araña", Google nunca podría haber existido ...
Alex Martelli
34
No he leído todo el artículo y no sé cuán representativo es, pero tal vez esto responda a su pregunta: Python en Google .
Ok He leído la mayoría de ellos, por desgracia, no da que mucho conocimiento pero creo que sigue siendo un interesante artículo. 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 Googlers pueden implementar estos idiomas en los servicios de producción. (Internamente, las personas de Google usan muchas tecnologías, incluyendo PHP, C #, Ruby y Perl). Python se adapta bien al proceso de ingeniería en Google. El proyecto típico en Google tiene un equipo pequeño (3 personas) y una corta duración (3 meses).
Sin 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 lo sigue siendo a medida que el sistema crece y evoluciona. Hoy en día, docenas de ingenieros de Google usan Python, y estamos buscando más personas con habilidades en este idioma"
- Peter Norvig, Director de calidad de búsqueda en Google
Entonces, ¿es cuestión de gustos o una ventaja competitiva?
Andrei Ciobanu
44
@nomemory: ¿Quizás ambos? Se ajusta al proceso de ingeniería (sabor) y debido a eso podría darles una ventaja si pueden terminar sus productos antes.
Felix Kling
1
¿Docenas de ingenieros usan Python? Para una empresa tan grande como Google, ese no es un caso convincente.
Jason Baker
28
Estaba leyendo sobre Unladen-Swallow , un proyecto que tiene como objetivo mejorar el rendimiento de CPython. Mientras navegaba por su panel de discusión, me topé con esta discusión , donde Collin Winter (empleado de Google y desarrollador principal de Python) responde a la afirmación de que se desalienta a los empleados de Google de usar Python para nuevos proyectos :
Bueno, el sentido común simple limitará la aplicabilidad de Python cuando se opera a la escala de Google: no es tan rápido como Java o C ++, el subproceso 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 haga que satisfacer esa restricción sea más difícil, y creo que Python cae en esta categoría, deberíadesanimarse si no tiene un caso muy fuerte a su favor sobre otros méritos. Debes equilibrar las fortalezas de Python con sus debilidades: tus ingenieros pueden ser más productivos usando Python, pero si tienen que trabajar alrededor de más limitaciones de rendimiento / escala a nivel de plataforma a medida que aumenta el volumen, ¿sales adelante? etc.
Si se suscribe a la idea de Paul Graham de que la concisión es == 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 idioma es más poderoso)
En 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 .05 segundos y .0005 segundos?
En un ejemplo más real, si los desarrolladores de Google escriben un programa en Python donde nunca tienen que preocuparse por la recolección de basura, y la Compañía 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.
Rediseño del sitio maldito! Bueno, él tiene un enlace alternativo, así que ya está.
Wayne Werner
11
'¿realmente notará la diferencia entre .5 segundos y .005 segundos?' No trabajas en la búsqueda principal de Google, YouTube o Gmail, ¿verdad?
jwg
55
El hardware no es barato cuando necesitas tanto como Google.
NGRhodes
55
Lo mejor de Python es que, cuando tiene una diferencia de rendimiento significativa (por ejemplo, ~ 495 ms), puede conectar un código C / C ++. Python le permite desarrollar rápidamente y optimizar de manera eficiente.
Trevor
3
La diferencia entre .5 segundos y .005 segundos es que uno es notable y el otro no.
Respuestas:
Realmente no puedo dar una respuesta definitiva, porque para cuando me entrevisté 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 tantos Pythonistas 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 Peter Norvig y Jeremy Hylton, pero históricamente la elección de Python por parte de Google fue anterior incluso a ellos).
Esa es definitivamente la razón por la que me interesé por primera vez (mi editor me hizo saber acerca de 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 permite la entrega y el mantenimiento más rápidos de programas, para otras partes. En ese momento, a fines de los años 90, la elección para el último rol era esencialmente entre Python y Perl: otros lenguajes de script no estaban maduros (no creo que Ruby todavía existiera, 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 legible y mantenible, y la interfaz con las bibliotecas C ++ (a través de SWIG) fue 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 sawzall 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 el 2006, son "algo accidentales" o se usan para otras tareas específicas (por ejemplo, Objetivo C para clientes en iPhone o Mac), por ejemplo, cuando Google contrató a sus primeros administradores de sistemas. , esos empleados inevitablemente venían con un dominio muy fuerte de Perl y Bash, y a menudo usaban cualquiera de esos idiomas para desarrollar algún sistema interno complejo; La codificación de aquellos en Python (para una implementación y mantenimiento más fáciles) a menudo ha sucedido. Otros (como C #) pueden haber estado en la mezcla temporalmente debido a adquisiciones, pero, una vez más, la recodificación en uno de los "principales idiomas de Google" siempre es una prioridad bastante alta (en el caso de C #, la codificación generalmente se realizará principalmente en Java, ya que los dos idiomas abordan áreas similares en términos de niveles de abstracción).
fuente
No he leído todo el artículo y no sé cuán representativo es, pero tal vez esto responda a su pregunta: Python en Google .
Ok He leído la mayoría de ellos, por desgracia, no da que mucho conocimiento pero creo que sigue siendo un interesante artículo. Quizás lo más importante:
Sin 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:
fuente
Estaba leyendo sobre Unladen-Swallow , un proyecto que tiene como objetivo mejorar el rendimiento de CPython. Mientras navegaba por su panel de discusión, me topé con esta discusión , donde Collin Winter (empleado de Google y desarrollador principal de Python) responde a la afirmación de que se desalienta a los empleados de Google de usar Python para nuevos proyectos :
fuente
Si se suscribe a la idea de Paul Graham de que la concisión es == 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 idioma es más poderoso)
En 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 .05 segundos y .0005 segundos?
En un ejemplo más real, si los desarrolladores de Google escriben un programa en Python donde nunca tienen que preocuparse por la recolección de basura, y la Compañía 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.
fuente