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 ! ! !
Sem comentários:
Enviar um comentário