quarta-feira, agosto 08, 2007

Se o Buda fosse programador...

Na nova empresa para onde ingressei, estou agora a frequentar um workshop de Ruby, essa maravilhosa linguagem de scripting que deu origem a esse extraordinário framework conhecido por RubyOnRails .
Estou a dar uns toques rápidos na linguagem, para ver se reaprendo a programar aquilo que já conheço e que sei fazer em Java. Isto consiste em fazer programas que tenham um sentido prático e útil para mim, de forma que mais tarde possa voltar a pegar neles e reutilizá-los, acrescentado-lhes melhoramentos. Uma dessas ideias é gravar a estrutura de uma árvore de directórios num ficheiro XML, de forma que possa mais tarde recuperá-la facilmente. Fiz uma primeira versão em Python, que funciona optimamente e outra em Java. Agora quero refazer o mesmo programa, mas em
Ruby. E daí ando à procura da API de Ruby em XML que já esteja incorporada na linguagem. Acabei por encontrar o ReXML. Eu estou habituado, e nos dois programas que fiz anteriormente a seguir a API formal recomendada pelo W3C que se chama DOM. Simplifica o processo de ter de estar sempre a (re)inventar a roda quando se
quer fazer a mesma coisa mas em linguagens diferentes. Quando eu entro na página do ReXML, ele faz uma referência ao DOM nos seguintes termos:

REXML avoids The DOM API, which violates the maxim of simplicity. It does provide a DOM model, but one that is Ruby-ized. It is an XML API oriented for Ruby programmers, not for XML programmers coming from Java.


Senti-me 100% desiludido, mas também convencido neste trecho, mas ele continua:

Some of the common differences are that the Ruby API relies on block enumerations, rather than iterators. For example, the Java code:

for (Enumeration e=parent.getChildren(); e.hasMoreElements(); ) {
Element child = (Element)e.nextElement(); // Do something with child
}

in Ruby becomes:

parent.each_child{ |child| # Do something with child }


E logo de seguida conclui com esta afirmação extraordinária:
Can't you feel the peace and contentment in this block of code? Ruby is the language Buddha would have programmed in.

Não faço ideia se os ruby-programmers atingem o nirvana durante a sua jornada diária de programação, ou se a escrita de código em Ruby equivale a uma meditação transcdental.
Sei que durante o workshop de Ruby alguns colegas meus mais experimentados começaram a falar de block enumerations. Senti-me incapaz de os acompanhar. Provavelmente o nível de iluminação atingido por ele ao idealizarem semelhantes estruturas de programação nas suas mentes equivale a uma elevação mental ainda impossível de alcançar por mim, entretanto. Não sei se será a mesma sensação que um músico terá ao escutar a Nona Sinfonia de Beethoven. É tudo uma questão de conseguir lá chegar... o que eu espero vir a conseguir ! ! !