¿Por qué Quora eligió Python para su desarrollo? ¿Qué desafíos tecnológicos enfrentaron los fundadores antes de decidirse por Python en lugar de PHP?

Estábamos seguros de que no queríamos usar PHP. Facebook está estancado en eso por razones heredadas, no porque sea la mejor opción en este momento. [1] Nuestra conclusión principal de esa experiencia es que la elección del lenguaje de programación es muy importante y su cambio es extremadamente costoso.

Python era un lenguaje que Charlie y yo conocíamos razonablemente bien (aunque ahora lo sé mucho mejor que cuando empezamos). También consideramos brevemente C #, Java y Scala. Los mayores problemas con Python son la velocidad y la falta de verificación de tipos.

C # parecía bastante prometedor. Como lenguaje de programación, es genial, pero:

  • No queríamos estar en la pila de Microsoft. Estábamos listos para aprender algo nuevo, y MS SQL Server en realidad parecía bastante bueno, pero sabíamos que necesitaríamos integrarnos con un montón de código fuente abierto que solo tiene soporte de segunda clase para .NET, si es que lo admite. Además, la mayoría de los mejores ingenieros de estos días están acostumbrados a cosas de código abierto.
  • No queríamos correr el riesgo de estar en Mono (una implementación de código abierto de C # /. NET). No está claro cuánto tiempo durarán los fondos para ese proyecto, y había oído hablar de varios problemas de rendimiento. Además, parecía que todo lo demás en el ecosistema de C # supondría que estábamos en la pila de Microsoft.

Por muchas pequeñas razones, los programas Java terminan siendo más largos y más dolorosos de escribir que los programas Python equivalentes. También es más difícil interactuar con cosas que no son de Java. Scala tenía muchas desventajas de Java y JVM, aunque no era tan malo. El lenguaje parecía un poco nuevo y parecía que traería algunos riesgos innecesarios (por ejemplo, quién sabe qué tan bueno será el apoyo en 10 años).

Otros dos idiomas en los que pensamos muy brevemente fueron OCaml y Haskell (ninguno tenía ecosistemas lo suficientemente grandes ni bibliotecas estándar lo suficientemente buenas, y ambos eran potencialmente demasiado difíciles para algunos diseñadores / analistas de datos / no ingenieros que podrían necesitar escribir código).

Decidimos que Python era lo suficientemente rápido para la mayoría de lo que teníamos que hacer (ya que empujamos nuestro código crítico para el rendimiento a servidores backend escritos en C ++ siempre que sea posible). En cuanto a la verificación de tipos, terminamos escribiendo pruebas unitarias muy completas que vale la pena escribir de todos modos, y alcanzamos la mayoría de los mismos objetivos. También teníamos mucha confianza en que Python continuaría evolucionando en una dirección que sería buena para la vida de nuestra base de código, después de haberla visto evolucionar en los últimos 5 años.

Hasta ahora, hemos estado muy contentos con la elección. Hay un pequeño sesgo de selección, pero todos los primeros empleados que habían estado trabajando con otros idiomas en el pasado estaban contentos de hacer la transición a Python, especialmente aquellos que vienen de PHP. Desde que comenzó, sucedieron las siguientes cosas:

  • Python 2.6 llegó al punto en el que una cantidad suficiente de las bibliotecas que utilizamos eran compatibles, e hicimos una transición muy fácil.
  • Tornado (marco web) se lanzó como código abierto, y trasladamos nuestro servicio web de actualización en vivo a eso.
  • PyPy llegó al punto donde parece que eventualmente será utilizable y nos dará una aceleración significativa.

Todos juntos, nos dan la confianza de que el lenguaje y el ecosistema se están moviendo en una buena dirección.

[1] ¿Cuáles son los horrores de PHP? ¿Y disfrutan los ingenieros de Facebook la programación en PHP? y ¿Por qué Facebook no ha migrado fuera de PHP? y ¿Cuáles son algunas de las ventajas de PHP sobre otros lenguajes de programación? para más sobre eso.

Tiempo, comodidad, experiencia.

¿Cómo se eliminan los caracteres comunes en

“KIRAN” y “TEJA” e imprime “KIRTEJN” como salida?

He escrito un código de 100 líneas para resolver ese problema en C. Empecé a amar Python cuando vi un código de 3 líneas en Python.

  K = raw_input ("ingresar nombre 1")
 N = raw_input ("ingresar elemento 2")
 z = lista (conjunto (K) ^ (N))

La expresividad de Python es muy alta en comparación con otros lenguajes.

Al igual que Facebook, PHP y Java también funcionan bien para Quora. Pero el número de líneas de código aumentará drásticamente, al igual que el tiempo para la codificación.

Puede ser que tenían prisa por desarrollar su proyecto.

También hay un lenguaje llamado scala pero es demasiado nuevo; puede ser Adam Angelo no tiene buena experiencia con scala.

Podrían haber optado por C #, pero luego deben construir sobre la pila de Microsoft.

Además, las estructuras de datos de Python pueden correlacionarse con JSON, que es un componente importante para Quora.

La única desventaja con Python es que es un poco lento y es por eso que construyeron componentes de back-end (ahorro) con c ++.

Sobre todo, Adam dijo una vez que está usando los sistemas operativos ubuntu desde sus días universitarios y todos los sistemas en Quora que ejecutan ubuntu.

Puede programar cada mierda en Python porque Python está incorporado en Ubuntu. Puede que su experiencia favorezca a Python mientras selecciona el idioma.

Todos estos factores podrían haber creado circunstancias que favorecieron a Python.

Algunas cosas para agregar a la respuesta de Adam:

  • Había un montón de marcos bastante buenos para Python disponibles con buenos depuradores y recargadores. (Django, Pylons y otros) La mayoría de estos están bien soportados y también siguen mejorando. Como lo principal que estábamos construyendo para comenzar era un sitio web, esto era atractivo
  • Las estructuras de datos de Python se correlacionan bien con las estructuras de datos de JavaScript, por lo que el cálculo de datos entre el navegador y el servidor es sencillo y sencillo. Esto es realmente bueno, ya que Quora involucra muchas interacciones entre el cliente y el servidor que no son cargas de página.
  • El código de Python tiende a ser muy legible y, dado que queríamos poder trabajar en el sitio con un montón de personas, esto era importante.
  • Hay muchas otras bibliotecas escritas en Python, por lo que es fácil incorporar cosas como servidores de correo personalizados, colas de tareas, etc., en el resto de nuestra base de código.

Ruby es la otra opción que creo que habría sido razonable ya que tiene muchas de las mismas ventajas que Python tiene, pero Adam y yo conocimos a Python mejor que nosotros a Ruby.