Chris Castiglione Profesora en One Month. Facultad en la Universidad de Columbia.

Ruby vs. Python: ¿Cuál es la diferencia?

3 min read

¿Cuál es mejor? ¿Ruby o Python?

He utilizado tanto Ruby como Python en mi trabajo, y aunque tengan muchas similitudes, también se diferencian en algunos aspectos críticos. Es una pregunta común, pero importante, así que deja que te explique la diferencia entre Ruby y Python.

Ruby vs. Python: What is the difference?

Para ponerte en el contexto, primero aprendí desarrollo web a través de Python y su framework Django. Después de cuatro años desarrollando aplicaciones con Django, conseguí un trabajo haciendo Ruby on Rails y me esperaba que la transición fuera fácil. Fue entonces cuando me quedó claro que los dos lenguajes y sus frameworks son muy diferentes y no es tan fácil pasar de uno a otro.

Entonces ¿en qué se diferencian?

El Lenguaje:  

El framework web Ruby on Rails está basado en el lenguaje de programación Ruby, mientras que el framework web Django está basado en Python.

Aquí es donde se encuentran muchas de las diferencias. Los dos lenguajes se parecen visualmente pero son mundos distintos si consideramos su aproximación para resolver problemas.

Ruby está diseñado para ser muy flexible y para empoderar a los programadores. Eso permite a Ruby on Rails hacer varios trucos para crear un framework web elegante. A veces puede hasta parecer magia, pero la flexibilidad también puede causar algunos problemas. Por ejemplo, la misma magia que hace que Ruby funcione cuando no te lo esperas, también puede complicarte mucho las cosas a la hora de encontrar errores, lo que conlleva revisar el código durante horas.

Python tiene un enfoque más directo a la programación. Su objetivo principal es hacer que todo sea visible al programador. Esto sacrifica parte de la elegancia que tiene Ruby, pero le da a Python una gran ventaja cuando comienzas a aprender a codificar y resolver problemas de manera eficiente.

Un buen ejemplo que muestra las diferencias es trabajar con el tiempo en tu aplicación. Imagina que quieres obtener el tiempo que hay entre ahora y dentro de un mes . Así es como lo harías en los dos lenguajes:

Ruby
requires ‘active_support / all’
new_time = 1.month.from_now

Python
from datetime import datetime
from dateutil.relativedelta import relativedelta
new_time = datetime.now () + relativedelta (months = 1)

Fíjate en como Python requiere que importes funcionalidades específicas de las bibliotecas datetime y dateutil. Es muy explícito, pero está muy bien porque puedes identificar fácilmente de dónde viene todo.

Con la versión Ruby, muchas más cosas están escondidas detrás de una cortina. Importamos una biblioteca active_support y de repente todos los enteros en Ruby tienen los métodos «.days» y «.from_now». Se lee bien, pero no está claro de dónde vino esta funcionalidad dentro de active_support. Además, la idea de parchear todos los enteros en el lenguaje con una nueva funcionalidad es genial, pero también puede causar problemas.

Ninguno de los enfoques es correcto o incorrecto; destacan aspectos diferentes. Ruby resalta por la flexibilidad del lenguaje, mientras que Python por la claridad y la legibilidad.

Frameworks web

Tanto Django como Rails son frameworks que te ayudan a construir aplicaciones web. Tienen un rendimiento similar porque tanto Ruby como Python son lenguajes de script. Cada framework proporciona todos los conceptos de los frameworks MVC tradicionales con modelos, vistas, controladores y migraciones de base de datos.

Cada framework tiene diferencias en la forma en que implementa estas características, pero en el núcleo, son muy parecidos. Python y Ruby también tienen muchas bibliotecas que puedes usar para agregar nuevas características a tus aplicaciones web. Ruby tiene un repositorio llamado Rubygems, y Python tiene otro llamado Package Index.  

Comunidad

Python y Ruby tienen comunidades importantes detrás de ellos. Cada comunidad influye en la dirección que toma el lenguaje, las actualizaciones y la forma en la que se crea el software. Sin embargo, Python tiene una comunidad mucho más amplia que Ruby. Hay un montón de casos de uso académico, tanto en matemáticas como en ciencias, donde Python ha prosperado y continúa creciendo gracias a ese impulso. Python también está preinstalado en casi todos los ordenadores de Linux, por lo que es el lenguaje perfecto para usar en servidores Linux (es decir, los servidores más populares del mundo).

La popularidad de Ruby se inició en 2005 con la salida de Rails. La comunidad proliferó alrededor de Rails y desde entonces se ha centrado increíblemente en el desarrollo web. También se ha vuelto más diversa, pero no llega ni de lejos al nivel de diversidad que Python ha alcanzado.

Uso

¿Quién está utilizando estos lenguajes de programación? Bastantes empresas. Tanto Ruby como Python están muy extendidos en el mundo de la tecnología.

Hay muchas páginas web conocidas creadas con Python, incluidos Google, Pinterest, Instagram, National Geographic, Mozilla Firefox y el Washington Post. Asimismo, hay muchos ejemplos de páginas web con Ruby on Rails. Entre las empresas que utilizan Ruby on Rails destacan Apple, Twitter, Airbnb, Shopify, Github y Groupon.

¿Debería aprender Python o Ruby primero?

Ruby vio un aumento en su popularidad entre 2010-2016, pero parece que la industria se está moviendo hacia Python. Aquí tienes una ayuda para decidir: si ya tienes un cliente, un trabajo o un proyecto específico que requiere que conozcas Ruby, aprende Ruby. Si no, aprende Python primero. Ten en cuenta que hay diferencias entre Python 2 y Python 3. Si eres nuevo en la programación, te recomiendo que comiences con la última versión: Python 3

Conclusión: Ruby o Python?

Cualquier cosa que puedas hacer en Ruby on Rails también puedes hacerla en Python y Django. Qué framework es mejor no es una cuestión de capacidad. La mejor pregunta podría ser: ¿qué lenguaje es el más adecuado para ti o tu equipo?

Si sólo quieres hacer aplicaciones web, dale prioridad a Ruby on Rails. La comunidad es buena y siempre están a la última. Si estás interesado en crear aplicaciones web, pero te gustaría aprender un lenguaje que tenga un alcance más amplio y que sea apto para el manejo de análisis de datos, te recomiendo que aprendas Python.

Learn to Code Comment Avatar
Chris Castiglione Profesora en One Month. Facultad en la Universidad de Columbia.