El uso intensivo de Python por parte de Google, ¿es solo cuestión de gustos o les da una ventaja competitiva?
El uso intensivo de Python por parte de Google, ¿es solo cuestión de gustos o les da una ventaja competitiva?
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).
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
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.