¿Cuál debería comenzar primero: Ruby on Rails o Django? ¿Cuál es la diferencia entre estos dos y sus usos?

Como dijo Jérôme Renard, esta es realmente una pregunta Python vs Ruby, no Django vs Rails. Y, como se puede deducir de las otras respuestas a esta pregunta, no hay un ganador claro. Ambos son buenos, modernos, bien diseñados, flexibles, buenos para su productividad (a diferencia de PHP que falla en todos estos aspectos). Por lo tanto, elegir entre los dos realmente se reduce a un ajuste entre su personalidad / preferencias y las fortalezas del lenguaje.

Estos son los factores a considerar:

  • Python realmente cree que la legibilidad del código es lo más importante. Por lo tanto, hay una forma verdadera de escribir código. Ruby cree en dar al programador la libertad y el poder. Estos son dos enfoques diferentes de programación, y el que elijas dependerá de tu personalidad. Vea estas dos preguntas para obtener más información sobre esta compensación: ¿Cuáles son las ventajas de Ruby sobre Python? y Python parece ser un lenguaje de enseñanza preferido en muchas universidades importantes, junto con C / C ++, Java y Scheme. ¿Qué tiene Python que lo hace más atractivo? ¿Por qué se prefiere Python a Ruby en la academia? (Terminé eligiendo Python porque estoy en una etapa en la que prefiero la legibilidad a la flexibilidad)
  • ¿Vas a mantenerte principalmente en el desarrollo web o te irás ramificando a otras áreas? Creo que Ruby + Rails + etc. tiene una ligera ventaja sobre Python + Django + etc. para el desarrollador web, y tiene más mente compartida, mientras que para cosas como la manipulación de datos, análisis, administración de sistemas, programación científica, Python es más fuerte. (Creo que en los próximos años, el análisis de datos será grande, y los desarrolladores web no pueden / no deben ignorarlo, por lo que Python vuelve a ganar para mí)
  • Perspectivas de empleo: esta es una tarea difícil. Creo que el índice TIOBE (http://www.tiobe.com/index.php/c…) muestra claramente que Python está muy por delante de Ruby en los trabajos. Sin embargo, este punto está relacionado con el punto anterior. Esperaría que muchos de los trabajos de python no sean web-dev. Entonces, suponiendo que esté interesado en el desarrollo web, supongo que hay más trabajos de Ruby en este momento.
  • Actualización: Heroku ahora es compatible con Python / Django, por lo que este punto de viñeta ya no es completamente relevante. -Gracias a Quora User y Carl Gao. (Mantenida aquí para fines históricos: “Hosting” – esto es más una cosa a corto plazo, pero lo enumero por completo – Rails tiene Heroku, la plataforma muy fácil y conveniente para implementar aplicaciones Rails. Python / Django no tiene un equivalente de Heroku (aunque hay muchos en proceso: ¿Cuál es el equivalente de Heroku para las aplicaciones de Django?). Python tiene Google AppEngine, pero no es del todo ideal por varias razones. En cualquier caso, no creo Este aspecto seguirá siendo un problema durante más de 6 a 9 meses).

Y no estoy de acuerdo con Nicolas Perriault (y estoy de acuerdo con Jean-Hadrien Chabran) en que no se pueden aprender ambos en un tiempo razonable. Claro, puede rascar la superficie de ambos, pero realmente no tiene una idea real del marco a menos que haya estado escribiendo código no trivial durante al menos 6 meses (cada uno). Deberá atender una llamada en función de su instinto.

Ambos son increíbles, así que:

Puedes examinar cuál eligieron tus amigos (pasarán tiempo para ayudarte), qué requerirá tu trabajo, qué idioma te conviene mejor, cuál de Python o Ruby podrías alojar fácilmente. Es una forma mucho más pragmática de elegir en lugar de perder tiempo comparando lo que realmente no se puede comparar (espere que las personas lo lleven allí, el trolling de marco es casi un E-Sport)

Puede elegir entre Python o Ruby, hay cantidades de artículos que explican las diferencias (pequeñas) entre ellos y finalmente es más una elección que hará entre sus filosofías que su conjunto de características (similares).

Pero :

No puedes aprender seriamente ambos en un corto período de tiempo, simplemente porque eso significa que solo rascarás la parte superior de estos increíbles marcos. Necesita reunir experiencia, construir proyectos reales con ellos para tener realmente una opinión sobre con cuál debería ir y esto tomará una buena cantidad de tiempo.

No puede decidir usar uno sobre el otro solo porque hay una característica genial que se siente atractiva, simplemente porque estos marcos no son solo ellos mismos, hay dos grandes comunidades detrás de ellos, lo que le brinda complementos, extensiones, etc. Django viene con una herramienta de administración lista para usar donde Rails no. Pero obviamente puede encontrar un par de herramientas sólidas similares enviadas como bibliotecas (gemas). Y, por supuesto, puedes encontrar el ejemplo de otra manera.

(Experiencia de desarrollo web: probé brevemente PHP, construí muchas aplicaciones Rails de bajo tráfico, hice algunas UI / UX / diseño, comencé a jugar recientemente con Django. Prefiero Python sobre Ruby; para mí, codificar en Python es como escribir mi flujo de conciencia .)

Si tiene una fuerte preferencia por Python o Ruby, probablemente debería elegir su marco correspondiente. En mi experiencia, el uso de Ruby en Rails será un 99% mundano, como manejar la interacción del usuario y buscar / poner datos, lo que no aprovecha al máximo el lenguaje. Sin embargo, algunos de los sentimientos de cada idioma se extienden a sus respectivos marcos.

Si solo desea crear un sitio web, sus capacidades son muy similares y la elección es una cuestión de preferencia personal y estilo de codificación. Si alguna vez planea trabajar con otra persona, entonces debería preocuparse mejor por la legibilidad, independientemente del marco que esté utilizando.

Python vs Ruby, etc.

  • Python es más fácil de leer / escribir si prefiere su código en inglés, Ruby es más fácil si prefiere caracteres de coincidencia de patrones, ya que utiliza varios caracteres como análogos a las palabras clave. (Python fue creado por un hablante de inglés, Ruby fue creado por un hablante japonés).
  • Los paquetes de Python le ganan a Ruby si quieres jugar con datos.
  • Si su experiencia es en teoría / investigación / sistemas, y C ++ fue probablemente el primero : algunos de mis amigos de la informática prefieren Ruby para las secuencias de comandos porque es más potente y flexible. Ruby tiene cierres y es mejor para soportar paradigmas de programación funcional. Muchos prefieren Python. Independientemente de la preferencia, todos estamos hartos de los defectos de Rails, pero hemos aprendido a sortear sus incómodas convenciones y peculiaridades hasta el punto de que se ha convertido en una herramienta útil .

Django vs. Rails = transparencia vs. menos trabajo.

Rails hace más trabajo para ti. Genera archivos y ejecuta scripts mágicos detrás de escena.
+ Guarda algunas teclas en el código.
Dado que no comprende completamente lo que está sucediendo, los errores que deberían ser simples se vuelven lentos. Personalmente, encuentro que el tiempo dedicado a depurar las peculiaridades de Rails supera con creces el tiempo ahorrado por la magia.
– Tienes que saber dónde se aplican todas sus convenciones mágicas. Ejemplo: Rails a veces auto-pluraliza nombres y tablas de modelos creados a partir de especificaciones del modelo. Me olvido de la parte superior de mi cabeza cuando lo hace y no lo hace.

Un nuevo proyecto de Rails genera muchas cosas para ti.
+ No tiene que hacer mucho trabajo adicional para configurar cosas como el registro y las pruebas.
La estructura del directorio es abrumadora para los principiantes y se siente abarrotada incluso una vez que estás acostumbrado a Rails. Hay once directorios en el nivel superior de un proyecto Rails nuevo, pero no necesita mirar nada más allá de la aplicación , la configuración y el público durante mucho, mucho tiempo.

+ La comunidad de Rails es más grande, lo cual es genial.

Si proviene de un entorno de desarrollo web PHP / Perl : hay muchas personas en Internet que usan adjetivos como ‘magnífico’, ‘sexy’ e ‘inteligente’ para describir Rails. Estaba confundido por esto hasta que me di cuenta de que provenían de PHP, lo que hace que todo se vea elegante en comparación. Sin ofender: Rails es una buena opción de framework web, simplemente no lo llamaría sexy.

Django es transparente y estructuralmente minimalista; lo que ves, es lo que tienes. Todos los ajustes están en un solo lugar. Las cosas deben ser incluidas explícitamente. Una vez más, a favor o en contra según su preferencia personal.

Todavía no lo he usado lo suficiente como para encontrar fallas específicas. Tuve una vista descargando información de una base de datos cinco minutos después de configurarla, algo que tomó una hora de tutoriales y ajustes de archivos de configuración la primera vez que usé Rails.

Para el registro, el equivalente de Rails a la herramienta de administración integrada de Django es “activeadmin”, y el equivalente de Django a la migración de base de datos integrada de Rails es “south”. Ambos son geniales.