Creo que la decisión no es tanto si Rails o Django, como si quieres aprender Ruby o Python.
Ambos frameworks son muy representativos de la idiosincrasia de las comunidades Ruby y Python y su manera de entender los lenguajes de programación y el desarrollo de software. Resuelven el mismo problema (la creación de aplicaciones web CRUD) tratando de ser Rubynicos (esta palabra me la acabo de inventar) o Pythonicos (esta sí suele usarse y no es de mi cosecha :) en el camino.
Y es que Ruby y Python no son tan idénticos como suelen percibirse desde fuera.
Es cierto, son los dos lenguajes dinámicos con mayor aceptación en la última década. Son interpretados, de muy alto nivel, heredan muchos conceptos de los lenguajes funcionales (en concreto del manejo de listas de Lisp) y tienen una plétora de librería para hacer absolutamente de todo sin tener que escribir nuevo código. Ambos tienen comunidades inmensas, mucha documentación, y casos de éxito para parar un tren (GitHub y Heroku en Ruby, Instagram y Dropbox en Python, por ejemplo). Se suele decir que son primos hermanos por todas estas características en común.
Aunque también tienen diferencias de base que los separan muchísimo (al menos en mi opinión). Principalmente, la filosofía tras el diseño de cada uno. Y es que si diseñas con objetivos muy distintos, es difícil llegar al mismo resultado.
En Ruby todo gira en torno a hacer la escritura de software más ágil. Una misma cosa se puede hacer de varias maneras para que cada uno se encuentre cómodo sin adaptarse al estilo de otros, se tira mucho de convención sobre configuración, y se aprecia lo implícito: es común que, sólo con nombrar un método de una cierta manera, mecanismos de las librerías ("invisibles" para el programador) se pongan en marcha para que pasen muchas más cosas de las que explicitamente el programador ha definido. Se valora sobre todo la flexibilidad del lenguaje y el ahorro de tiempo/código.
En Python es un poco el mundo al revés. Python está diseñado con un fuerte énfasis en hacer fácil la lectura de código y su mantenimiento. Se parte de la base que el código se escribe para que otros lo lean. Se refuerza siempre el ser explícito, la configuración antes que la convención, y una única manera correcta de hacer las cosas. De ese modo se crea el concepto de código "pythonico", que es el que cumple con todos los usos considerados correctos por la comunidad. De ese modo cualquier programador Python puede leer código Python de otro programador y entenderlo con muchos menos problemas que en otros lenguajes.
Luego está el alcance de cada uno de esos lenguajes en la industria. Ambos son ahora opciones de primer nivel para el desarrollo web. Rails y Django son la punta de lanza. Hay muchos otros frameworks, micro-frameworks, y no sé yo si hasta meta-frameworks web en ambos lenguajes. Ruby se ha hecho además un hueco importante en la gestión automatizada de sistemas con Puppet o Chef. Python explotó antes y se ha hecho hueco en varios sectores: el mundo científico (es un estándar en bioinformática, física, estadística y muchos otros), scripting de aplicaciones (está en juegos, software de 3D, ...), forma parte de las herramientas de instalación/administración de la mayoría de distribuciones Linux, hay librerías de IA, para aplicaciones de red complejas, etc.
Que en el último párrafo me decante algo por Python no es por una cuestión subjetiva: Ruby explotó con Rails, pero Python lo había hecho años antes como lenguaje de scripting "sustituto" en muchos casos de Perl, lo que le ha dado más tiempo para expandirse. Pero no todo son buenas noticias para Python con ese éxito prematuro. La necesidad de ofrecer todas las herramientas necesarias para abordar todos esos frentes motivó la creación de una librería estándar demasiado basada en el lenguaje líder de aquel entonces (Java), que en el mejor de los casos se puede decir que es poco pythonica. Ruby, en cambio, ha tenido tiempo de moldear una librería estándar moderna y mejor pensada. No hay mal que por bien no venga :)
Es fácil desplegar ambos en servicios como Heroku, o en el caso de Python en Google App Engine (Python es, junto a C++, Java y no sé si Go, el único lenguaje permitido para desarrollo de aplicaciones de producción dentro de Google). Muy lejos quedan los tiempos en que sólo se podía encontrar hosting para PHP.
Sobre Rails/Django vs micro-frameworks, mi consejo para alguien nuevo en el lenguaje es tirar de los primeros. Son proyectos muy bien documentados (yo no sé si he visto documentación de un proyecto open-source mejor que la de Django), con comunidades gigantescas, y millones de addons ya listos. Son batteries-included, de modo que no hay que buscarse la vida fuera del framework para añadir funcionalidades como autenticación, ORM o logging, y para alguien nuevo en un lenguaje eso es un win absoluto. Más adelante, y con más conocimiento, sí puede ser interesante buscar la flexibilidad y ligereza de los micro para según que proyectos.
Igual te interesa probar algún microframework al estilo de sinatra o flask, son menos "opinionated" por lo tanto es más fácil integrar otras librerías y herramientas.
Yo he usado ambos. Al principio django parece mejor opción, pero si le dedicas algo de tiempo a ambos elegirás ruby on rails sin duda. Personalmente prefiero rails
Hola,
He elegido ruby on rails por:
1) django solo tiene el admin, QUE SI!!! es muy potente !!!, pero en rails tienes varias opciones a elegir si lo deseas agregando una alinea en el archivo gemfile como gem "activeadmin" :)
2) ruby on rails, el framework en si es mas completo y potente, que si es mas pesado, tiene mas archivos... aunque cuando estas trabajando en proyectos grandes nunca nada te va a faltar y no te vas a quejar de que tiene una carpeta con x archvihos del framework :).
3) en python la mayoría de las librerías estas a medias o desactualizadas, me pasaba horas buscando una libreria decente cuando necesitaba algo puntual, esto en ruby on rails no pasa.... a pesar de salir la version 4 de ruby on rails y la version 2 de ruby.... imaginate algo asi en python... tardarina 10 años en actualziarlo todo... :)
y como no... RUBY...
Si aprendes este lenguaje de programación bien te enamoraras de el.... tiene cosas tan avanzadas que en algunos momentos te sientes tonto por usar antes otros lenguajes de programación....
Cuando empece a estudiar ruby la primera vez no me gusto.. lo deje en el intento.... la segunda vez me gusto un poco mas.... pero lo deje igual... la tercera vez cuando tuve mas tiempo pense en aprenderlo poco mas a fondo...
y me enamore...
( por no hablar de los sueldos :) los programadores ruby on rails son mucho mejor pagados que los programadores django o php.
Espero que te sirva esta info.
Tambien me gustaria añadir que tando django o laravel en php son frameworks potentes que te sirven casi para cualquier proyecto
Saludos.
Alguna vez tomé un cursito de Ruby y me gustó; también Rails. Python también me gusta; y Django en lo que he estudiado no me ha disgustado del todo. Me preocupan ciertos temas de los frameworks en general, especialmente cuando el nivel de personalización de una aplicación es bastante alto. Gracias por tus valiosos comentarios!
Me siento totalmente identificado con tus respuestas, estoy tratando de pasarme a RoR pero hay una resistencia completa hacia a mi de poder aprenderlo, puesto que llevo un tiempo trabajando con Django y siento que me acostumbre a la forma de trabajar de este.
Alguna recomendación más aún sigo con la resistencia de pasarme a RoR.
Le he echado un vistazo a RoR, y la verdad es que pintaba bastante bien. Yo estoy igual que tu. Quiero hacer un proyecto y no se si elegir RoR o Django...
Personalmente me gusta Play! Framework (con Scala). Tiene mucho heredado de RoR creo, y Scala es un lenguaje bastante interesante.
creo que django y ruby on rails son las mejores opciones
seria bueno que tubieras estas dos ocpiones en cuenta
http://www.winnvote.com/versus/9/django-vs-ruby-on-rails
30/06/2013 14:15
Ambos frameworks son muy representativos de la idiosincrasia de las comunidades Ruby y Python y su manera de entender los lenguajes de programación y el desarrollo de software. Resuelven el mismo problema (la creación de aplicaciones web CRUD) tratando de ser Rubynicos (esta palabra me la acabo de inventar) o Pythonicos (esta sí suele usarse y no es de mi cosecha :) en el camino.
Y es que Ruby y Python no son tan idénticos como suelen percibirse desde fuera.
Es cierto, son los dos lenguajes dinámicos con mayor aceptación en la última década. Son interpretados, de muy alto nivel, heredan muchos conceptos de los lenguajes funcionales (en concreto del manejo de listas de Lisp) y tienen una plétora de librería para hacer absolutamente de todo sin tener que escribir nuevo código. Ambos tienen comunidades inmensas, mucha documentación, y casos de éxito para parar un tren (GitHub y Heroku en Ruby, Instagram y Dropbox en Python, por ejemplo). Se suele decir que son primos hermanos por todas estas características en común.
Aunque también tienen diferencias de base que los separan muchísimo (al menos en mi opinión). Principalmente, la filosofía tras el diseño de cada uno. Y es que si diseñas con objetivos muy distintos, es difícil llegar al mismo resultado.
En Ruby todo gira en torno a hacer la escritura de software más ágil. Una misma cosa se puede hacer de varias maneras para que cada uno se encuentre cómodo sin adaptarse al estilo de otros, se tira mucho de convención sobre configuración, y se aprecia lo implícito: es común que, sólo con nombrar un método de una cierta manera, mecanismos de las librerías ("invisibles" para el programador) se pongan en marcha para que pasen muchas más cosas de las que explicitamente el programador ha definido. Se valora sobre todo la flexibilidad del lenguaje y el ahorro de tiempo/código.
En Python es un poco el mundo al revés. Python está diseñado con un fuerte énfasis en hacer fácil la lectura de código y su mantenimiento. Se parte de la base que el código se escribe para que otros lo lean. Se refuerza siempre el ser explícito, la configuración antes que la convención, y una única manera correcta de hacer las cosas. De ese modo se crea el concepto de código "pythonico", que es el que cumple con todos los usos considerados correctos por la comunidad. De ese modo cualquier programador Python puede leer código Python de otro programador y entenderlo con muchos menos problemas que en otros lenguajes.
Luego está el alcance de cada uno de esos lenguajes en la industria. Ambos son ahora opciones de primer nivel para el desarrollo web. Rails y Django son la punta de lanza. Hay muchos otros frameworks, micro-frameworks, y no sé yo si hasta meta-frameworks web en ambos lenguajes. Ruby se ha hecho además un hueco importante en la gestión automatizada de sistemas con Puppet o Chef. Python explotó antes y se ha hecho hueco en varios sectores: el mundo científico (es un estándar en bioinformática, física, estadística y muchos otros), scripting de aplicaciones (está en juegos, software de 3D, ...), forma parte de las herramientas de instalación/administración de la mayoría de distribuciones Linux, hay librerías de IA, para aplicaciones de red complejas, etc.
Que en el último párrafo me decante algo por Python no es por una cuestión subjetiva: Ruby explotó con Rails, pero Python lo había hecho años antes como lenguaje de scripting "sustituto" en muchos casos de Perl, lo que le ha dado más tiempo para expandirse. Pero no todo son buenas noticias para Python con ese éxito prematuro. La necesidad de ofrecer todas las herramientas necesarias para abordar todos esos frentes motivó la creación de una librería estándar demasiado basada en el lenguaje líder de aquel entonces (Java), que en el mejor de los casos se puede decir que es poco pythonica. Ruby, en cambio, ha tenido tiempo de moldear una librería estándar moderna y mejor pensada. No hay mal que por bien no venga :)
Es fácil desplegar ambos en servicios como Heroku, o en el caso de Python en Google App Engine (Python es, junto a C++, Java y no sé si Go, el único lenguaje permitido para desarrollo de aplicaciones de producción dentro de Google). Muy lejos quedan los tiempos en que sólo se podía encontrar hosting para PHP.
Sobre Rails/Django vs micro-frameworks, mi consejo para alguien nuevo en el lenguaje es tirar de los primeros. Son proyectos muy bien documentados (yo no sé si he visto documentación de un proyecto open-source mejor que la de Django), con comunidades gigantescas, y millones de addons ya listos. Son batteries-included, de modo que no hay que buscarse la vida fuera del framework para añadir funcionalidades como autenticación, ORM o logging, y para alguien nuevo en un lenguaje eso es un win absoluto. Más adelante, y con más conocimiento, sí puede ser interesante buscar la flexibilidad y ligereza de los micro para según que proyectos.
Ala, my 2 cents.
17/10/2016 18:35
30/06/2013 12:08
02/07/2013 09:02
30/06/2013 11:55
Ruby on Rails te permite luego usar otros frameworks "famosos" o cosas del stack con un salto menor (Sinatra u otros).
23/08/2013 13:05
01/06/2014 11:07
27/10/2014 00:12
¿Por favor me puedes compartir tus razones para preferir Rails? Estoy en esa ardua discusión: Django ó Rails
27/10/2014 21:13
He elegido ruby on rails por:
1) django solo tiene el admin, QUE SI!!! es muy potente !!!, pero en rails tienes varias opciones a elegir si lo deseas agregando una alinea en el archivo gemfile como gem "activeadmin" :)
2) ruby on rails, el framework en si es mas completo y potente, que si es mas pesado, tiene mas archivos... aunque cuando estas trabajando en proyectos grandes nunca nada te va a faltar y no te vas a quejar de que tiene una carpeta con x archvihos del framework :).
3) en python la mayoría de las librerías estas a medias o desactualizadas, me pasaba horas buscando una libreria decente cuando necesitaba algo puntual, esto en ruby on rails no pasa.... a pesar de salir la version 4 de ruby on rails y la version 2 de ruby.... imaginate algo asi en python... tardarina 10 años en actualziarlo todo... :)
y como no... RUBY...
Si aprendes este lenguaje de programación bien te enamoraras de el.... tiene cosas tan avanzadas que en algunos momentos te sientes tonto por usar antes otros lenguajes de programación....
Cuando empece a estudiar ruby la primera vez no me gusto.. lo deje en el intento.... la segunda vez me gusto un poco mas.... pero lo deje igual... la tercera vez cuando tuve mas tiempo pense en aprenderlo poco mas a fondo...
y me enamore...
( por no hablar de los sueldos :) los programadores ruby on rails son mucho mejor pagados que los programadores django o php.
Espero que te sirva esta info.
Tambien me gustaria añadir que tando django o laravel en php son frameworks potentes que te sirven casi para cualquier proyecto
Saludos.
28/10/2014 04:13
Alguna vez tomé un cursito de Ruby y me gustó; también Rails. Python también me gusta; y Django en lo que he estudiado no me ha disgustado del todo. Me preocupan ciertos temas de los frameworks en general, especialmente cuando el nivel de personalización de una aplicación es bastante alto. Gracias por tus valiosos comentarios!
24/12/2014 19:54
Alguna recomendación más aún sigo con la resistencia de pasarme a RoR.
Saludos.
02/06/2014 14:49
Le he echado un vistazo a RoR, y la verdad es que pintaba bastante bien. Yo estoy igual que tu. Quiero hacer un proyecto y no se si elegir RoR o Django...
Personalmente me gusta Play! Framework (con Scala). Tiene mucho heredado de RoR creo, y Scala es un lenguaje bastante interesante.
Un saludo.
30/03/2015 21:36
seria bueno que tubieras estas dos ocpiones en cuenta
http://www.winnvote.com/versus/9/django-vs-ruby-on-rails