…Python Vs. Ruby… ¿Rivales?

Desde la primer charla del LugLi en la UTN, hace un par de semanas, que conozco Ruby. Esto quiere decir que ví algo de código, me mostraron algunas de sus características y me dejó algo impactado.

Este lenguaje es muy parecido a Python en muchos aspectos. Sin embargo Gastón Ramos me mostró algunas aspéctos que lo hacen que sea tan bueno como es, y me dejó regulando en como hacerlo en Python.

Hay mucha gente que o está del lado de Ruby o de Python, y ni siquiera quieren mirar al costado para compararlos, son cerrados y hasta incluso rivales. Después de un tiempo le propuse hacer algunas comparaciones un poco más profundas y no que quede solo de palabras, asique decidimos escribir un par de post al respecto. Este es el primero de él, la respuesta de Juanjo y ahora tiro algunas diferencias entre ellos.

Python

  1. Tiene strings inmutable
  2. Lo métodos privados comienzan con __ (doble guión bajo)
  3. Los bloques se delimitan con la identación y : (dos puntos)
  4. Tiene __getattr__()
  5. La sobrecarga de operadores se define como un método especial (comienza y termina con __). def __add__(self) para redefinir la suma.
  6. No tiene constantes
  7. InputRaw con r»C:\Mis Documentos»
  8. Insertar una variable en un texto al estilo C: «Mi variable es: %s» % (cadena.upper())
  9. Necesita paréntesis para llamar a un método
  10. True, False, None, elif, import
  11. Acceso dirécto a las variables de una instancia mediante el operador . (punto)
  12. if __name__ == ‘__main__’: verifica si es el archivo principal
  13. Tiene un guía excepcional para todo programador: import this
  14. Docstring utilizados para brindar ayuda con help()
  15. Las funciones son objetos y puedo crear una referencia a ellas

Ruby

  1. Tiene strings mutables
  2. Los métodos privados van después de private
  3. Los bloques se delimitan con end’s statements
  4. Tiene method_missing
  5. La sobrecarga de operadores es def +(), para redefinir la suma por ejemplo
  6. Tiene constantes
  7. InputRaw con ‘C:\Mis Documentos’, (comillas simples)
  8. Insertar una variable dentro de una cadena al estilo Template (de Django, por ejemplo): «Mi variable es #{variable.capitalize}
  9. No necesita paréntesis para los métodos, los atributos comienzan luego del espacio
  10. true, false, nil, elsif, require
  11. Tengo que definir cuales variables son públicas una por una
  12. if __FILE__ == $0 verifica si es el archivo principal
  13. No tiene un guía built-in
  14. Los docstring se utilizan cuando se llama al comando: rdoc
  15. Hasta ahora, no pude guardar la referencia a una función en una variable

Éstas son algunas de las diferencias que encontré a simple vista en Python y Ruby, pero lo que más me interesa mostrar es cómo hacer algo en un lenguaje utilizando alguna particularidad del mismo, que permita que sea super sencillo o que diréctamente en el otro no se pueda realizar de «ninguna forma«.

Vamos a ver que sale de todo esto. ¿Seguiré con Python o me pasaré a Ruby? ¡CHAN!

Etiquetado ,

11 pensamientos en “…Python Vs. Ruby… ¿Rivales?

  1. leorockway dice:

    El otro día le conté a Sean de la existencia de Ruby y parece que le gustó más que Python… así que no sos el único.

  2. r0ver dice:

    Hola

    Muy bueno el detalle y la comparación que estas haciendo y quisiera hacerte una pregunta porque realmente no conozco ruby. Esta preparado para ser usado en multiples propositos. Por ejemplo, en python podes hacer juegos, pasando por aplicaciones de escritorio y tenes muuchos frameworks para web. Como es Ruby en ese aspecto ?.

    saludos
    r.

  3. gush dice:

    hola humitos como te va? copada la comparacion.
    voy a estar a la espera de tu desicion, jaja, porque si te tiras a ruby vos q sos un conocedor de python que nos espera a nosotros los newbies de python jejeje.

    mas vale prevenir q curar.
    un cordial saludo
    gush

    pd: che no me maten, no soy spamer , posta jeje

  4. humitos dice:

    Agrego algunas diferencias que me olvidé:

    Python
    – soporta herencia múltiple
    – tiene atributos nombrados en las funciones
    – pasaje de funciones como argumentos

    Ruby
    – soporta closures (pasar bloques de código a los métodos)

  5. danyx dice:

    La verdad es que hay que reconocer que son dos excelentes lenguajes de programación, utilizando un paradigma totalmente orientado a objetos.

    Hay muchas cosas para destacar y diferenciar, tal y como lo indica este post. Seguramente que la elección del lenguaje a utilizar va a depender mucho de las caracteristica y de otros factores a considerar.

    Si bien ambos comparten muchas cosas, como ser OO, multiplataforma, miles de API, conexión con diferentes motores de Bases de Datos, incorporan librerias graficas y de texto, etc.

    Hay dos cosas que a mi experiencia quería recalcar, Python fue el primero que aprendí, realmente aprender es muy fácil, con un par de horas comienzas a realizar cosas interesantes y en pocas semas comprendes OO, algo que realmente me encanta es la proligidad de su codigo, la identación me parece perfecta.

    Ruby es un lenguaje estupendo, la forma de tratar los datos, string, su universo mismo ya es objeto, pero a mi criterio creo que ya debes tener una base OO, de lo contrario te puedes llegar a marear un poco con conceptos como herencia, polimorfismo, metodos, etc.

    Ahora si vamos al plano de frameworks web, creo que Ruby se lleva todos los laureles con Ruby on Rails, si bien en Python existe frameworks y son un montón, creo que no tomaron el vuelo que alcanzó RoR.

    Por último, me parece que esta bueno aprender cosas de ambos, lo importante de todo esto es que podemos realizar lo que nos propongamos si de materia de programación se trata, con la ventaja que son totalmente libre! Saludos

  6. rafa dice:

    Esto responde al punto 15, punteros a metodos

    class MyClass
    def myMethod(i, j)
    i + j
    end
    end

    # instancia de MyClass
    m = MyClass.new

    # creo el puntero al metodo
    fp = m.method( :myMethod )

    # llamo al metodo
    puts fp.call(1, 2) # -> 3

    Ejemplo tomado de
    http://renaud.waldura.com/doc/ruby/idioms.shtml

    en ese sitio hay algunas otras comparaciones de entre ruby y otros lenguajes.

  7. La documentación de Python no tiene ejemplos de como se usa y funciona cada cosa.
    Documentación de Ruby:

    abs > integer magnitude > integer
    Returns the value of fix.

    -12345.abs #=> 12345
    12345.abs #=> 12345

    Documentación de Python:

    abs(x)
    Return the absolute value of a number. The argument may be an integer or a floating point number. If the argument is a complex number, its magnitude is returned.

    La documentación de Python es muy técnica, a veces cuando lees de algo no entiendes como funciona, y de todo no hay ejemplos, parece que se espera que el programador pruebe cada cosa en modo interactivo, a veces por eso no consigo hacer lo que quiero o entender algo por falta de ejemplos y al probar me asusto pensando que va a explotar o algo. Los muchos tutoriales y la mucha info. que hay no pueden ser una referencia de todo en el lenguaje.

    Por eso me he ido a aprender Ruby. Lo malo es que el tiempo de carga de las aplicaciones Ruby es mayor y el rendimiento de las aplicaciones es peor que en Python. Yo digo que Python tiene que mejorar su documentación y Ruby su performance.

  8. Nosotros usamos Python con su framework Django en el desarrollo de nuestra web y quiero decir que es un poco más potente que Ruby on Rails, pero eso si, Python es mucho más potente a la hora de hacer programas de escritorio y videojuegos(Blender por ejemplo, está preparado para hacer videojuegos con Python y la verdad es que la experiencia fue exitosa).

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: