Esto viene de Ni Ruby ni Rails son para todos ni para todo - 1ra parte y atajando al loco del Sebastián que no se tomó su medicación y brincó con Rubíes, perlas y granos de café donde concluyó lapidario (y seguramente muerto de la risa) con "Ruby rulez!!! Rails rulez!!! Java sux!!! Perl sux!!! Python sux!!! (y Php no es digno de mención)" (cita textual ;-)

La verdad es que yo me he preguntado varias veces ¿Por qué tanto alboroto por Ruby y Rails? ¿Cómo es que a estas alturas del partido surge un lenguaje/framework nuevo que logre abrirse paso entre los pesos pesados del desarrollo de aplicaciones (particularmente en la categoría web) y captar tanta atención?

Así que les cuento como llegamos a Rails y a Ruby, que fue por un camino un poco particular, porque estábamos evaluando combinaciones de lenguajes de programación y frameworks (bajo licenciamiento libre/abierto) que soportaran nuestro proceso de desarollo que sistemáticamente había producido aplicaciones robustas, escalables y mantenibles para ambientes J2EE.

Una de las cosas importantes a considerar era la gente, parte de nuestras oficinas son un típico manicomio de desarroladores de software donde la gente brinca de un computador a otro practicando algo parecido al peer-programming, las actividades se paralizan si hay un buen partido del fútbol, las pizarras blancas están llenas de diagramas en pseudo-UML y los horarios son una cosa que le pasa a otra gente pero no a los programadores.

Así que la alternativa a Java/J2EE/etc que se escogiera tenía que ser algo interesante y divertido para trabajar, al mismo tiempo que se siguieran produciendo aplicaciones de calidad enterprise, por llamarlas de alguna manera.

Bueno, sobre las experiencias intermedias no voy a hablar, pero consistentemente se nos atravesaba en el camino Ruby On Rails, desde el famoso video y los controvertidos números de productividad se discutieron en The Server Side el tema no dejaba de aparecer en blogs y artículos técnicos del área. Algo así como las móscas en una zona agrícola.

En un chat le propusimos a Sebastian hacer drop del código de BagOfBlogs de PHP y arrancar "from scratch" con Ruby On Rails. Para ese momento él ya se había convertido y votó +1 ya que en lo que a él se refería no quería trabajar con otro lenguaje de programación que no fuera Ruby.

¿Sebas dropping Perl y CPAN? ¡Vaya! Eso es algo así como San Pedro convirtiéndose al Budismo, y fue el empujoncito que nos hacía falta para probar Ruby On Rails, proyecto al que siempre habíamos visto en forma despectiva, ustedes saben "Pana, eso no tiene ni máquina virtual es ¡Sálvese quien pueda! interpretado".

Así que empezamos a leer en línea el "Programming Ruby: The Pragmatic Programmer's Guide", "Agile Web Development with Rails: A Pragmatic Guide" y el texto más demencial del programación que haya leído alguna vez: "Why’s (Poignant) Guide to Ruby".

En este último "libro" (por llamarlo de alguna forma), es cuando uno ve la luz con un "Whack in the side of the head" que me permito citar textualmente:

Read the following aloud to yourself.

RUBY:
  1. ['toast', 'cheese', 'wine'].each { |food| print food.capitalize }

¡¡¡¿¿¿QUEEEEEEE???!!! Eso definitivamente convierte el calificativo de "expresivo" (en relación a un lenguaje de programación) en algo que está más allá de una cuña de detergente, pero lo mejor es que siendo Ruby altamente expresivo después uno se da cuenta de que el código se mantiene inteligible (del latín intelligibilis) salvándonos del Lado Oscuro de la Sintaxis, y de la Pesadilla del Mantenimiento en la Aplicación del Perlfierno.

En ese momento fue donde pensé "me gusta", y el "pequeño programador" que llevo adentro y que estaba sepultado bajo llamadas telefónicas, correos y presentaciones se despertó y empujó a un lado la tapa del ataud.

Mientras tanto, otras personas hacian el tutorial de Ruby on Rails y me llamó mucho la atención que programadores altamente productivos y fóbicos a la lectura de tutoriales estuvieran clavados en los PDFs y menearan la cabeza de vez en cuando diciendo "Que arrecho, que arrecho, ...".

Y cuando al cabo de poco tiempo estos mismos programadores empezaron a producir aplicaciones web, y a hackearlas para resolver problemas que son comunes en nuestros desarrollos, brincándose el tutorial sin tener mucha idea de lo que estaban haciendo pues ni un barniz de Ruby se habían dado, no pude menos que conceder que Rails es un framework productivo.

Durante la mesa redonda en la RubyConf 2005 le preguntaron a Matz (Yukihiro Matsumoto, creador de Ruby) cuál era el motivo del incremento en la popularidad de Ruby a lo que él contestó, en primera instancia, en tono de broma y fuerte acento japonés: "¿Dails?".

Y lo cierto es que Rails es muy bueno, y tanto que en cada uno de los principales lenguajes de programación comúnmente usado para la web hay al menos un clon de este framework. Lo que además demuestra que en Rails no se está haciendo nada que no se pueda implementar en Java, Perl, PHP o Phyton por decir algo.

Pero, por otra parte una vez que uno se mete en el código no puede dejar de apreciar la forma en que Ruby se siente como un guante. No necesito un IDE que me genere los pares de métodos getters/setters, uso:

RUBY:
  1. class MiClase
  2.   attr_accessor :mivariable;
  3. end
  4. f = MiClase.new
  5. f.mivariable = "5"
  6. puts f.mivariable  # imprime "5"

Y ya tengo los métodos que me permite hacer la asignación y la consulta, nada que ver con el idioma get/set, si ya vieron el operador de asignación por ahí les adelanto que todo en Ruby es un Objeto incluyendo las Clases, que no se corresponden con el concepto de tipo como lo manejamos en Java.

Ruby está lleno de buenas ideas, propias y tomadas de otros lenguajes (de Lisp en este caso), como los bloques que no son más naturales porque no es posible:

RUBY:
  1. File.open("archivo.ext") do |file|
  2.   file.each_line do |linea|
  3.     puts "> #{linea}"
  4.   end
  5. end

¿Quién es responsable de abrir y cerrar el archivo? La clase File, sencillo y natural. La lógica del proceso que se quiere hacer con el archivo, en este caso imprimir cada línea prefijada con un ">" está en el bloque asociado al método open.

Rails y Ruby tienen una sinergia que hace muy "sabroso" trabajar con ellos, cuando se viene del mundo Java/J2EE es como si a uno le quitaran la camisa de fuerza, esto es orientación a objetos, no el guarapito aquel.

Sin embargo, ni Ruby ni Rails son para todos ni para todo, y eso lo justificaré en la que será 3ra parte de esta novela por entregas.


5 Respuestas a “Ni Ruby ni Rails son para todos ni para todo - 2da parte”

  1. 1 KodeGeek
  2. 2 BrainX

    Supongo que la palabra "end" finaliza el bloque, pero donde demonios comienza???

    Por ejemplo, si tengo un editor que pueda llamarse "respetable" (ver Notepad++) puedo de forma ordenada cerrar bloques enteros para depuracion de codigo??? O me tengo que dejar llevar por los "ends" y las tabulaciones?

    Otra cosa, con respecto a lo "expresivo", esa sentencia (por asi decirlo) de codigo fue tan expresiva como una estatua de piedra... Pregunto: QUE COÑO HACE ESO???

    Y es que si lo escribieses en Perl, o en PHP, o en C, o en C++, en Java, Delphi/Pascal, VisualBasic o cualquier lenguaje entendible, obviamente lo hubiese entendido.

    De repente puedes alegar que el motor de ruby maneja las cosas "de la mejor forma" y que para ciertas cosas es muy comodo, pero no me jodas diciendome que es un "lenguaje facil de aprender". No por lo menos hasta que sea lo suficientemente popular para que desde la escuelita nos enseñen a programar usando el "paradigma orientado a ruby".

    Saluts!

  3. 3 Sócrates Medina

    Me agrada haberme enterado de la existencia de este blog (Gracias al Sebas).
    Es agradable poder compartir ideas de programación con gente de nuestra misma cultura pero a la vez con diferentes experiencias de programación.
    Por mi parte debo decir que mi experiencia en programación se remonta a 1999 cuando empecé a programar aplicaciones web en ASP y PHP, luego comencé con ASP.NET y hace 1 mes empecé a darle con Ruby on Rails y aunque no he desarrollado mucho en este último debo decir que haciendo los tutoriales que andan por allí por la red y leyendo los Pragmatic Books (tanto en papel como en PDF) varias veces no pude evitar darle a mi cabeza y decir "que arrecho, que arrecho".
    Luego seguiré dando mis comentarios.
    Saludos muchachos

  4. 4 Erasmo Gómez Molina

    Hola que tal amigos como están:

    En estos momentos estoy realizando la selección entre Ruby y PHP (el detalle es que no tengo mucho tiempo para aprender los dos lenguajes para luego escoger con cual voy a trabajar :') ), y los criterios que estoy utilizando para dicha elección son los siguientes:

    Lenguaje de programación libre que se pueda manejar con un servidor de aplicaciones para el uso de componentes de software (que podamos realizar) tales como se utilizaría con J2EE o.Net. He escuchado y he leído sobre MONO, ZOPE, JONAS, LAN. Uno de estos trabaja es con java, pero no se si estos trabajan con ruby o PHP o simplemente no hacen falta.

    Quiero investigar sobre lenguajes que me permitan poder desarrollar productos de software Multicapa, utilizando la filosofía MVC. Para que nos permita reutilizar componentes de software, poder realizar escalabilidad y a su vez mantenerlos. (y que estos estén desligados de la capa de datos y presentación).

    El lenguaje que tenga que elegir debe llevarse muy bien con la distribución Linux a elegir (Debian, Ubuntu, Suse). Consultando me recomiendan Debian

    Que tenga alguna herramienta que me permita poder realizar pruebas unitarias, funcionales, stress, entre otras; sobre el código que podamos realizar.

    Maneje CVS

    Se puede construir clases a partir de diseños UML que podamos realizar en
    nuestro diseño de software. Conocen alguna erramienta para Ruby o PHP?

    Buscar servidor Web, y manejador de base de datos que sean compatibles con estos lenguajes.

    Selección del IDE que nos permita poder construir nuestro código. (en Ruby he escuchado de RadRails y en PHP conseguí una lista de 25). En Ruby el IDE esta diseñado bajo la filosofía MVC y en PHP un grupo maneja esta filosofía. Ambos lenguajes se pueden trabajar bajo eclipse utilizando su respectivo plugins.

    Conocer aplicaciones que actualmente están diseñadas (Aplicaciones Web, Aplicaciones de Escritorios) en el lenguaje que elija y que actualmente el usuario las pueda utilizar sin ningún inconveniente (aplicaciones ya en producción).

    También quiero investigar si existe aplicaciones que manejen Sistemas de información Geográfica con alguno de estos lenguajes, y que actualmente han sido estables.

    Saludos a todos y de antemano muchas gracias :)
    erasmo

  5. 5 hectorjazz

    Hola compañero del maravilloso mundo de la informatica:

    como podemos ver este ruby on rails esta creciendo mucho en la web. Personalmente, programo con ruby on rails, php, javascript, "PERL" y otras cosillas, hace muy poco que estoy con Ruby y me ha dejado buena impresion. Me estoy acostumbrando a la sintaxis pragmatica "loquesea.metodo/propiedad", todo e un objeto, exelente manera de ver las cosas, pero, "es realmente todo un objeto?" supongo que para la web esta bien, hasta ahora. veamos que nos depara el futuro.

    Nota: A pesar de todo no cambio mi querido PHP,

    bye.


RSS feeds

Suscríbete a nuestros RSS Feeds