De camellos, serpientes y joyas: Perl vs. Python vs. Ruby

Perl es el lenguaje de script mas popular en estos momentos y también es el mas rápido, pero su sintaxis es horrorosa y también falla en la orientación a objetos. Las alternativas son Python y Ruby, con una sintaxis mucho mas sencilla y cómoda que Perl, hasta el punto que mucha gente aconseja Python como lenguaje para introducirse en el mundo de la programación. Python es bastante mas conocido que Ruby, lo cual implica mas herramientas, librerías y documentación pero Ruby es el mas completo en cuanto a orientación a objetos se refiere y es mas flexible que Python. En Ruby todo son objetos, incluso los tipos básicos a diferencia de lenguajes como Java.

En resumen Python es el primo de Perl para los maniáticos de la claridad en el código, es el mas parecido al inglés hablado de los tres. Ruby es el primo de Perl para fanáticos de la orientación a objetos, parecido a Smalltalk.

58 comentarios en «De camellos, serpientes y joyas: Perl vs. Python vs. Ruby»

  1. A mí me gusta bastante Python por su claridad y porque te obliga a que hagas las cosas de tal manera (de todas formas es multiparadigma). Ví Ruby, y no me interesó, pero sí para mí que estaba muy bien concedido pero no me gustó la forma que tiene de pasar parámetros y ciertos aspectos de su orientación a objetos. Me introducí a Perl (soy novato en Perl)… es más o menos como C, pero no es tan claro como Python. Eso sí, para tratar ficheros de textos o textos, Perl es ideal :-).
    En definitiva, alejándome de mis preferencias y de las típicas cual es el peor o mejor, todas tienen sus pros y sus contras, uno adecuado para buscar un tipo de solución y poco convencional para buscar otras.

  2. Que un programa esté mal escrito no es culpa de Perl, sino del programador. Seguro que habéis visto cosas horrendas en PHP, Java, Phyton, C, C#, etc. etc.

  3. Arturo, todo es un objeto en Python desde la versión 2.2, si. Pero nadie ha dicho que no lo sea, ¿verdad? Solo que Python no busca una OO similar a la de Smalltalk.

    Llevo años programando en Python y es mi lenguaje preferido 🙂

    1. Hola soy programador novato y solo en visual basic 6, pero estoy interesado en pasarme a Python, intente hacerlo pero no encuentro una interfaz parecida a la de VB6 que funcione con XP, la mayoria de las que consigo solo trabajan con Linux, tienes alguna interfaz que me recomiendes para instalar en windows XP, me gusta programar al estilo de VB pero me gustaria un lenguaje mas orientado a objetos y mas poderoso, no me gusta C, ni Java ni nada que tenga que ver con «[]{}».

      1. Si has programado únicamente en VB, entonces amigo, disculpame pero todavia no has programado. Yo programé demasiado en Java (incluyendo JEE, JSE y J2ME), php y javascript. También anduve recorriendo Python, C y bash porque me lo exigieron materias de la facultad. Todos los lenguajes tienen sus pros y sus contras. Me parece que lo tuyo es acostumbramiento. Encará lenguajes nuevos!

        1. Damian J.

          Creo que estas equivocado… mas bien estas equivocado al decir que el compañero:

          Jose Castillo nunca ha programado por el echo de utilizar VB 6.0

          Yo empece a programar en C a los 16 años y estoy de acuerdo en que es un lenguaje potente y poderoso ademas de que brinda solidas bases para la resolucion de problemas, pero franacamente he crecido mas profesionalmente programando en Excel/VBA. Realmente es maravilloso lo que se puede hacer con esa combinacion sin importar que no sea multiplataforma y nunca pueda llegar a programar un SO (lo cual no me interesa).

          1. Entiendo tu postura sobre VB, pero lamentablemente la mayoría de los usuarios de VB{6, .NET} y sus variantes, lo usan por el famoso «tecleo punto y me aparece un listbox con los métodos y atributos de la clase».

            Yo creo que un «buen» programador, no necesita una IDE específica; sería pedirle a un usuario de C# que no use el Visual y use el bloc de notas(notepad) y escriba el código.

  4. Yo he programado en los tres y doy fe del tema «velocidad», Perl aun les saca ventaja en tema de velocidad de ejecucion a Python y Ruby.

    En cuanto a la claridad del codigo… discrepo que Python o Ruby sean mas claros porque si, OJO, Perl «PUEDE» ser poco claro si el tio que programa en Perl es un cafre (igual que pasa en otros muchos lenguajes), pero si el programador de Perl es limpio y ordenado (y no se pasa haciendo expresiones regulares retorcidas) un codigo escrito en Perl es tan facil de leer como hablar en un bar 🙂
    La diferencia en la limpieza es que Python te obliga a serlo (por temas de indentacion o declaracion de metodos por ejemplo), mientras que en Perl no tienes obligaciones, puedes ser limpio o no, eso ya es decision del programador, eso se llama FLEXIBILIDAD y eso no hace menos claro al lenguaje sino al programador.
    En cuanto a la orientacion a objetos, bueno, ahi estoy de acuerdo, Python y Ruby ya se pensaron con objetos en mente, pero tb he de decir que en Perl los objetos son igual de flexibles que su sintaxis.

    Al final todo se reduce a:
    -Cuan flexible es un lenguaje a la hora de escribirlo (indentaciones, definiciones de objetos y funciones, etc. Todo eso tiene pros y contras).
    -Cuan rapida es su velocidad de ejecucion.

    Yo creo que la gente a la que no le gusta Perl es porque nunca ha llegado a profundizar realmente en el lenguaje. Si rebuscas un poco, todo lo que puedas hacer con cualquier lenguaje, lo puedes hacer con Perl (y seguramente tambien con Python y Ruby), el resto creo que es simple cuestion de gustos y afinidad personal hacia una metodologia/estructuracion a la hora de programar.

  5. Yo estoy en la misma, toy entre Python y Ruby, no se para que lado agarrar, hasta ahora solo programe J2EE, osea java, xml, javascript, html …… tambien vi algo de php pero no me gusto mucho, asi que tengo que decidirme por un lenguaje para hacer pequeñas aplicaciones web.

    Acepto todo tipo de consejos 🙂

  6. Buenas, estoy con el mismo dilema… hasta ahora he preogramado en la plataforma J2EE (java, xml, html, javascript …) pero ahora tengo que decidirme por un lenguaje para hacer pequeñas y medianas aplicaciones web, vi algo php pero no me gusto mucho asi que estoy entre python (Django) y ruby, se aceptan consejos 🙂 por ahora por lo que e visto creo estar tirando para el lado de python, asi que si alguien me puede ayudar con algun tutorial o curso de python (django) le estare super agradecido 🙂

  7. Que la sintaxis de Perl es horrorosa,, si en Perl hay de muchas maneras para hacer las cosas, a diferencia de Phyton que solo hay una manera,,,

    Con perl se puede ttrabajar igual que coomo cualquiera de los otros, la velocidad que tanto cuesta ha, al fin al cabo la funcionalidad es lo que mas importa en cosas muy pequeñas,, Ahora cuales mas eficiente y cual mas productivo?¿’

  8. Yo me dedico a programar interfaces de administración para sistemas linux, al tema que se habla programe con perl oop durante 7 años y me parece un lenguaje fantastico.
    Por otro lado hace una semana empece a ver python, tambien me parece un lenguaje fantastico.
    Pros y contras? para alguien que hace una software que debe integrar sus capas con app servers y web services tal vez hasta php sea extraordinario.
    La velocidad de ejecucion es todo un tema, digamos que cuando el lenguage te obliga a armar estrategias complejas para el analisis de contenidos, hasta C es lento.
    Pero salvando estas distancias, para mi python lo que tiene es una curva de aprendizaje mucho mas accesible que perl.
    Como programe mis primeras clases? despues de leer inmersion en python una noche y al dia siguiente ya estaba haciendo mi consulta de estados de dispositivos ethernet.
    Creo que todo lenguaje que se aprende depende de la base con que se venga, para mi que tuve mucho perl python me parecio muy simple. Perl aun me parece la caja de pandora, siempre te puede sorprender con algo

  9. wow tu blog ya tiene tantos años? Bueno igual sirve para informar a gente que llegue a este articulo por casualidad como yo. Te felicito por tu blog estoy enganchado, lo reviso muy seguido

  10. Abril de 2009: me parece mentira quedarme colgado de la lectura de los comentarios de este blog. Sigue todo vigente. Sigo entre Ruby y Python. Ruby lo disfruto, Python me obliga a programar «correctamente». Me imagino volviendo a entrar en 2014 y encontrar más comentarios parecidos 🙂

  11. jejeje, yo también me quedé enganchado con los comentarios, tengo varios meses interesado en aprender un lenguaje de programación, por los momentos no tengo chance de adentrarme en un curso para que la curva de aprendisaje sea más rápida.

    Port otra parte temrino mi carrera, pero no dejaré de lado que algún día aprenderé algún lenguaje de programación.

    Por los momentos me están exigiendo hacer un programa en java para una empresa, un programa que hace consultas en una base de datos y arroja los resultados. Java me parece un poco rudo, PERO tiene algo que todos carecen, CONTENIDO WEB…Poseen una Comunidad enorme y bastante contenido everywhere. Me gusta muchísimo Python!, he programado una que otras cosas bastante sencillas y me parece excelentísimo. Ese será el que luego aprenda desúés de Java.

    Saludos a todos.

  12. Yo estoy en una situación parecida a muchos de vosotros… después de haberme visto envuelto en el mundo J2EE durante más de 2 años (ya sabéis cómo es el mundo de la empresa), ahora me encuentro ante el dilema de qué lenguaje/framework/tecnología utilizar en un nuevo proyecto web (esta vez por mi cuenta).

    Creo que la opción python+Django es muy interesante, y pienso que en los próximos años este tándem va a dar mucho que hablar.

    Lo poco que he visto de python me ha encantado, la verdad…

    Por cierto, enhorabuena por el blog. Para los que estamos empezando en el mundillo de la blogosfera, mundogeek es un referente!

    saludos.

  13. Al igual que algunos yo estaba indeciso, entre Perl y Python, pero examinando la sintaxis de ambos me incline por python porque va tomar menos tiempo en adaptarse que en Perl. Este dato a veces es importante.

  14. todos los comentarios que veo aqui estas relacionados con cual es mejor, pero ninguno comenta sobre cual se adapta mejor al sistema anfitrion. cual respeta los usuarios, privilegios, etc. alli creo que del mundo linux, perl tiene mayor integracion, siendo los otros lenguajes indiferentes con la simbiosis. casi todos los sistemas linux interpretados se han escrito en perl, asique para un administrador linux perl es la opcion sin duda

      1. bueno ni tanto, los grandes sistemas de administración linux basados en script son y se continuan escribiendo en perl si haces una estadistica reconoceras que los administradores linux se inclinan mas por perl que por otros, en parte se debe a que perl mantiene mucha de las filisofias del bash, sed, awk, etc. tipicas para un guru del linux. alguien que se quiere especializar en linux busca esas semejansas. python se persive mas como un lenguaje nuevo que rompe con esa tradición casi religiosa de la complejidad del linux. 😮

  15. perl y python son lenguajes que atienden necesidades distintas, basado en lo poco o mucho que he visto de ambos veo que perl mejora las necesidades administrativas de servidores linux, uso y lectura de log de sistemas, etc. eso es algo muy importante en sistemas basados en ficheros de log como linux. python no debe competir contra eso porque perderia, mas bien debe de ser un lenguaje de enlace entre el usuario y el sistema, simplificando la programacion de scripts destinados a la interaccion con el usuario. desgraciadamente los programadores desconocen las obligatoriedades de seguridad de usuario que debe de ser cumplidas, alli python debe se ser mas estricto (aun mas para evitar malas practicas de seguridad de acceso). CPAN es inreemplasable cumpliendo con muchas de las exigencias de seguridad de un sistema linux, alli se encuentra de todo, al alcance de los gurus del linux que saben darle sentido. en fin el lenguaje depende del programador y su inclinación natural. para mi si python si fuese mas riguroso con la seguridad en el momento de programar seria fenomenal (motivando y educando sobre las buenas practicas ante el sistema anfitrion).

  16. Parece mentira. 10 de abril de 2010 (ya dejé un comentario el año pasado) y sigo entrando a este blog. Básicamente porque aún después de programar abundante en Python, sigo con Ruby en la cabeza (me resulta más «natural» para programar). Cada vez que programo en Ruby extraño la claridad de Python (que me permite construir cosas complejas sin que me pierda en el código que SIEMPRE es legible).
    Como dije en el comentario anterio: voy a entrar en el 2014 y este hilo de discusión va a seguir.

  17. Hola amigos, pues los tres lenguajes son buenos, recuerden la potencia de la aplicacion no esta en el lenguaje sino en el programador.

    El search engine de Google esta escrito en Python.
    Amazon.com esta escrito en Perl.
    Twitter esta escrito en Ruby con el framework Rails.

    Y como podran observar los tres sevicios son rapidos y seguros.

    Otro buen lenguaje que pueden escojer es PHP solo que este ultimo solo esta enfocado a desarrollo web.

    Empresas que usan PHP:

    Yhaoo, Youtube, Softonic etc…

    Asi que cualquier lenguaje es bueno solo tienen que exprimirlo al maximo y escojer el que mas les guste.

  18. @Angel, tiempo al tiempo.

    Siempre cuando sale algo nuevo todo el mundo habla maravillas hasta que muchos lo han probado y no era lo que los pocos que lo empezaron a utilizar decían. Esto ha pasado con muchos otros los cuales ahora ya no están (vbscript, por ejemplo).

    En cambio hay lenguajes como Ruby, Perl y Python son lenguajes jóvenes (de hecho Perl es el más viejito) y la gente sigue usando en su día a día las versiones actuales.

    De estos tres, de momento me quedo con Ruby. Ruby es como hablar inglés literalmente por ejemplo:
    if casa.isBig?

    uno lo lee como: «Sí casa es grande»…así de simple.

    No he utilizado Python ni Perl, pero tengo entendido que Ruby es más para alto nivel y Python y Perl son más para bajo nivel y procesos administrativos.

    Un amigo me ha dicho: «Perl en el back-end es indiscutible; Python no es tan bueno para el back-end, pero sirve en back-end, tampoco es tan bueno para front-end; Ruby es indiscutible al front-end.»

    No sé si esté bien o mal, pero es lo que yo también he visto.

    Saludos.

  19. He probado hacer un código que saque números primos de 1 a los 10 millones, y mis resultados son:
    Que perl es mas rapido que php, utilizando for con break o last según el lenguaje.
    7 min en php 5:30 en perl.

    Reescribiendo el código en python, elimine los for y break y los converti en while, poniendo todas las condiciones de salida al while los tiempos bajaron a 3:30m en python.

    Pasando el código reescrito a php php bajo los tiempos de ejecución a 4:19m, pero las mejoras en perl no fueron tan buenas bajo a 4:39m.

  20. Python es muy práctico y sencillo de aprender, Ruby no lo he ocupado, pero he visto su síntaxis y es muy parecido a Python.

    Perl no lo he ocupadao para nada.

    Ambos parecen ser una buena alternativa de programación.

    1. 06/04/2011 (Ojala se mostraran automáticamente las fechas en los comentarios). Lo siento Ariel, pero tus comentarios son erroneos. La sintaxis de Python y de Ruby son muy diferentes, comenzando con la indentación (obligatoria en python, optativa, pero recomendable en ruby), la posibilidad de hacer yielding en ruby (que no existe en python), etc. Coincido con los que piensan que es mejor sentirte cómodo con tu herramienta, y que la sepas usar bien, y no andar picando en toda tecnología de moda sin llegar a dominar realmente ninguna.

  21. Por lo que he leído en este y otros foros Perl, Python y Rubi son muy buenos, puedes hacer lo mismo con los 3, pero donde uno de los 3 es Fuerte el otro debe ser débil para ciertas tareas específicas.

    ¿Alguien sabe acerca de las fortaleces y debilidades de los 3?, sería bueno saberlo para decidirse y empezar a programar en el.

  22. Realmente no creo que haya fundamento para decir que la sintaxis de perl es «horrorosa». Como otros han dicho, perl te permite hacer muchas cosas, incluso escribir un codigo desastroso, que igual funciona.
    No creo que sea un defecto, sino más bien una prestación!

  23. 2 de marzo de 2011. Confirmo que a esta altura del año hago crisis de lenguaje de programacion. Lei esta discusión a la misma altura del año los 2 años anteriores!!!!
    En los hechos: casi todo el codigo que quedo andando estuvo hecho en Python (legible, confiable, bien documentado, se puede volver despues de un tiempo a corregir un bug y se entiende lo que se hizo). Pero sigue sin ser tan divertido como programar en Ruby. Miro cada tanto el indice de Tiobe para ver si aparece algo que me saque de esta situación neurótica, pero parece que quedo anclado en el P vs R.

  24. 17 de marzo 2011. La verdad como un programador mas que soy me resulta interesante leer las opiniones de otros colegas (yo he programado en php, vb.net, c#.net, algo de java y C), creo q este es un buen articulo, seria bueno que el autor lo actualice a la fecha quizas con graficas de comparacion en cuanto a rapidez,cantidad de lineas de codigo fuente, etc.

    Ademas alguien podria resumir las ventajas y contra de los 3 lenguajes mencionados en esta nota, para asi decidir por cual optar, saludos

  25. 16 de mayo del 2011.
    A ver, porque reñir en casa si todos somos del mismo bando (open source), veo que hay quienes desean aprender sobre lo nuestro y lejos de guiarles, como que los ahuyentamos, porque no mas bien orientamos a los novatos y traerlos a nuestro mundo, quizas mandandoles alguna aplicacion hecha para que lo pueda comparar y saque sus conclusiones.

    Soy de Perú, saludos, y les comento que tanto python como ruby son buenos y muy buenos ademas de la simplicidad que manejan, aunque para ir a perl es necesario decir que «para subir la pendiente se empieza de la base» y no pretender saltarse, en otras palabras ser ordenado y no necesitar que alguien te obligue a indentar y…

    Le dire tambien que opte por Python/Django por cuestiones de Gusto aunque extraño mucho RoR
    y desde ya para los futuros pythonicos
    solo comuniquense a mi correo y les enviare una aplicacion funcional de python/django-postgres

    A esto si es personal, a pesar de todo si es que alguien comparte esta idea, erradiquemos a los
    guindosos y su .net
    que por cierto supere a asp.net con django gracias a la memcache y upstream, bingo somos mas rapidos en su casa.

    cielonegro_123@hotmail.com

  26. Hola a todos, muchas gracias por compartir sus experiencias con los diferentes lenguajes, yo creo en lo personal que todos son muy buenos solo que algunos se especializan en unos temas mas que otros y es por ahi que debemos tomar la decisión.

  27. Gracias por este blog la verdad me a abierto un poco la mente ya que como muchos de mis colegas que comentaron arriba yo tambien e empesado a entrar en el dilema de Python vs Pearl ya que hasta el momento solo e manejado lenguajes como C#, VB, php, asp, y java tomando en cuenta claro html, css y javascript entonces quiero ampliar mi conocimiento de lenguajes de programacion y en cuanto a lo que es pearl y python estoy corto de conocimiento pero gracias porque estos comentarios me han dejado claro que lso dos lenguajes y en cuenta ruby son muy buenos y muy completos!!!!!

  28. 2012-JUL-01:
    Hola amigos, esto esto es lo mas cercano ha comunicarse con personas en el pasado jejeje. Pero siguiendo con el tema, en la empresa donde trabajo usamos PHP durante mucho tiempo (codeigniter, yii, cake, etc..) y desde 2011 usamos PYTHON y un framework muy productivo como WEB2PY, en realidad las cosas las hacemos más rapido gracias a este framework.

  29. jajaja le leido todos los comentario y cada uno de ellos y el ultimo comentario me ha matado de la risa jaja ahh recuerdo cuando pensaba que lenguaje aprender cual tiene mas demana y cual tiene futuro la verdad me gusta python por su simplicidad y la forma para debugguear me gusto porq rapido encuentro el problema, en cuanto a perl muy potente rapido como dicen y con muchas librerias pero la verdad no me agrado su forma de manejar la OOP los sub y los package q son las clases y los sub los metodos lo veo mas estructurado creo que por esa razon tal vez lo hace mas rapido escribo desde el 2014 y me parece que los 2 son buenos lenguajes muy buenos para cualquier trabajo pero me inclino por python por la OOP que me gusta mucho como trabaja con su OOP!!!

  30. POST Twitter ha migrado su codigo a Scala y Java por Ruby si recuerdan la ballenita que salia en Twitter era por dejar colgado los servidores, por esa razon preferi no aprender Ruby y aprender esto ademas que Google migro youtube de php a python y Facebook que usa python para los WebSockets 🙂 pero reconosco que perl tiene un competidor q me gusta mucho Mojolicius para WebSockets!

Responder a willliam Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.