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.

Comentarios
  1. .teri

    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.

    Responder

  2. explorer

    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.

    Responder

  3. arturo

    En Python, todo lo que crees será reconocido como un objeto. Revisa tu documentación, sería bueno que te informaras bien.

    Responder

  4. 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 🙂

    Responder

    • jose castillo

      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 “[]{}”.

      Responder

      • Damián J.

        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!

        Responder

        • 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).

          Responder

          • Joel

            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.

  5. si quieres algo como smalltalk usa smalltalk en vez de ruby, sino perl y python ambos son necesarios… para un profesional. sino php está bien para un empírico… :p

    Responder

  6. genesis

    no lei nada pero yo estaba buscando el idioma de las serpientes para confirmar si era parcel se lo recomiendo

    Responder

  7. pablo

    Perl es el más rápido. Qué es un lenguaje rápido? Qué lenguaje es más rápido?: El español o el inglés

    Python es el primo de Perl? el único ancestro común que tienen es C, así que fíjate lo lejanos que están. http://www.levenez.com/lang/history.html
    salvo que sean adoptados 🙂

    Responder

  8. Tekky

    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.

    Responder

  9. Fabian

    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 🙂

    Responder

  10. Aprende Python. Es mucho más popular que Ruby.

    De hecho, esto te puede ayudar a aprenderlo: Tutorial Python.

    Responder

  11. Fabian

    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 🙂

    Responder

  12. 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?¿’

    Responder

  13. Por favor mirad esto:

    http://search.cpan.org/~fxn/Acme-Pythonic-0.46/lib/Acme/Pythonic.pm

    un módulo de perl para poder programar con la sintaxis de python

    Lo hizo un profesor mío de la universidad

    Responder

  14. Juan

    ¿Porque ya no se habla de TCL?
    tk fue concebido para TCL, según entiendo, Perl y Python acceden a TK mediante TCL…

    Responder

  15. Jorge

    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

    Responder

  16. Diego

    Según esto http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=all&box=1 perl no es mas rápido que Python. de hecho Python es muchisimo mas rápido que perl y ruby.

    Responder

  17. @Diego si te fijas en la URL la entrada es de 2004 😉

    Responder

  18. Diego

    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

    Responder

  19. Muchas gracias Diego, se agradece de verdad 🙂

    Responder

  20. 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 🙂

    Responder

  21. Fernando

    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.

    Responder

  22. 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.

    Responder

  23. Cerca

    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.

    Responder

  24. alejo

    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

    Responder

    • Eso no es cierto. Hace tiempo que Python reemplazó a Perl como lenguaje de script preferido en Linux.

      Responder

      • alex

        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. 😮

        Responder

  25. angelOS

    recomiendo que lean este articulo, bastante claro aunque en ingles..peguenle el google translate si no saben ingles ;D….

    http://johan.kiviniemi.name/blag/ruby-vs-python/

    Responder

  26. alex

    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).

    Responder

    • Python ya se utiliza más que Perl para tareas administrativas y “pegamento del sistema”. Ergo no solo podía competir con Perl, sino que ya ganó en su día.

      Responder

    • Damián J.

      Es irreemplazable esta palabra “inreemplasable” por esta “irreemplazable” jajaj

      Responder

  27. 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.

    Responder

  28. Nooo!!!! Mi comentario anterior fue hace exactamente 1 año!!!! Quiere decir que en Abril hago crisis de lenguaje de programación preferido!!!!

    Responder

  29. Edgar Mencia

    Perl o Python o Ruby, parece eterno…

    Responder

  30. XaviAQP

    Python es mejor, en el futuro será el lenguaje preferido salu2 desde Perú

    Responder

  31. Edgar

    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.

    Responder

  32. angel

    groovy es el futuro

    Responder

  33. @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.

    Responder

  34. ivan Mrsnik

    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.

    Responder

  35. 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.

    Responder

    • Luis

      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.

      Responder

  36. HFC

    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.

    Responder

  37. 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!

    Responder

  38. Marcelo Escobal

    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.

    Responder

  39. 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

    Responder

  40. 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

    Responder

  41. 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.

    Responder

  42. Jose Bolanos

    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!!!!!

    Responder

  43. Eduardo Diaz

    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.

    Responder

  44. Ismael Ochoa

    26 Jun 213 / Eclipse Ecxelente Opcion Para Empesar A Programar Con Python

    Responder

  45. Terminator

    Les escribo del futuro, año 2169, estamos programando en pichulis, lenguaje procedural marciano

    Responder

  46. wuilfred

    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!!!

    Responder

  47. wuilfred

    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

Deja un comentario