Avançar para o conteúdo principal

Closures em Java

Aqui há tempos, a trabalhar em Javascript (ECMAScript para os mais puristas) acabei por "descobrir" essa técnica engraçadíssima que são os "closures". Usei-os num "test-case" de algumas técnicas de Javascript num inacabado XML Tree Editor (se se derem ao trabalho de ir ver, são os pequenos ícones de gravar/abandonar que aparecem quando se edita um nó da árvore) e que em termos de código são apenas uma coisa do género
var editOk = new function(){
var i=document.createElement('img');
i.src="images/save.gif";
i.style.verticalAlign="top";
i.onclick=function(){
saveThis(this.previousSibling, name, pos);
}
return i;
}

o que a mim me parece quase magia, pois só com isto o raio dos ícones sabem onde estão, quem são e o que fazer... (a "magia" está, é claro, no "name" e "pos" que são definidos no método exterior).

Realmente, já há muitos anos que eu fazia coisas do género, sem saber que se chamava a isto "closures", em linguagens como dBase/Clipper e LotusScript. Mas que provavelmente eram "side-efects" e não "features"...

E agora parece que já está mais ou menos definido que as "closures" vão também "aparecer" no Java 7. O que abre concerteza mais um campo de batalha propícia a "flame-wars"... É que como não há fome que não dê em fartura, existem não uma, nem duas nem sequer três mas (para já) quatro propostas de implementação. Bom começo!

E está claro que ainda antes de discutir os méritos e a bondade de cada proposta, podia-se ainda discutir coisas como:
  • Mas será que as closures são realmente necessárias?
  • Mas será que as closures são realmente necessárias no Java?
  • Mas afinal as "anonymous inner-classes" não são a mesma coisa?
  • Tá bem, não são, mas não bastam para o que é preciso?
E por aí adiante, é quase "cada cabeça sua sentença"... Já agora dou os meus "dois cêntimos" (de Euro) ao assunto, respondendo às duas primeiras questões na minha perspectiva:
  • Mas será que as closures são realmente necessárias?
Claro, tudo o que se pareça com "magia" é bem-vinda à arte da programação, se não for a magia qualquer dia somos todos "engenheiros"... (oops!)
  • Mas será que as closures são realmente necessárias no Java?
Apesar de as closures virem de tão longe como do Lisp e do Smalltalk, acho muito discutível que as closures possam ser consideradas numa perspectiva de "pure object-oriented". Mas de qualquer modo, Java não é "pure object-oriented"... E sempre fará o pessoal do RoR ficar contente...

E pronto, como podem ver aqui, aqui e acolá, a discussão tem pano para mangas...

Comentários

Mensagens populares deste blogue

Conferência Europeia da Comunidade Alfresco

Já foi há quase quinze dias, mas julgo que ainda será relevante abordar a Conferência Europeia da Comunidade Alfresco, que decorreu em Barcelona no dia 22 de Abril. Com uma audiência de mais de 200 pessoas (a sala reservada estava cheia) vindas de vários pontos da Europa, este evento serviu para que muita gente desta comunidade se encontrasse pela primeira vez face a face. A Alfresco Inc. é uma empresa recente, que apostou em criar uma solução de gestão documental de topo de gama usando o modelo open-source . Considerando que a empresa, no seu terceiro ano de actividade, já atingiu o break-even , parece ter sido uma boa aposta. No arranque da conferência esteve John Powell, CEO da empresa, que falou um bocado sobre a excelente evolução da empresa e abordou a "guerra" entre o modelo de negócios proprietário e o modelo de código aberto. Exemplificou este conflito com o Microsoft SharePoint, que ele designou como "a morte da escolha", justificando o epíteto pelo facto ...

Backup automático de disco USB (pen drive)

Hoje em dia toda a gente tem uma pen drive para levar os seus ficheiros de um lado para o outro. E muitas vezes está lá trabalho importante. Mas impõe-se uma pergunta: o que acontece se se perde a pen drive ? Ou se esta se avaria? Quem é que faz backups regulares da pen drive ? Muito pouca gente! Pessoalmente tenho por hábito fazer um backup cerca de uma vez por semana. Quando o trabalho é muito, faço backup mais vezes. Mas já por duas vezes as avarias me fizeram perder as versões mais recentes. E isto chateia. Por isso aqui há uns dias decidi "coçar esta comichão" e resolver o problema de forma mais sistemática: arranjei maneira de fazer um backup automático cada vez que ligo a pen drive a um computador. (sim, eu sei que há software específico para isto, mas que querem, apeteceu-me fazer mais um) A receita é relativamente simples: um script (DOS batch file ) que faz o backup , um ficheiro de definição de autorun e já está. 1. O script de backup - Basta instalar, na roo...

Ideias sobre o ensino à distância em 2020

O processo de combate ao COVID-19 obriga a que todos repensem as suas actividades normais e um dos sectores mais afectados é o Ensino. Diz-se com frequência que o Ensino em Portugal continua no séc. XX, porque continua a depender quase totalmente de lápis, caneta, papel e livros. Entre os anos de 1965 e 1987, Portugal teve a  Telescola , um projecto de ensino à distância que tentava resolver a falta de professores do ciclo preparatório (5º e 6º anos) em locais remotos. Desde então, tanto quanto sabemos, não houve mais projectos de ensino à distância em larga escala. Retrospectivamente, talvez tenha sido um erro mas, enfim, são coisas fáceis de dizer à posteriori. O tele-ensino não é uma coisa nova e os constrangimentos tecnológicos de hoje são muito menores. Nada que se compare, por exemplo com a experiência School of the Air , existente na Austrália desde 1951, quando os miúdos podiam apenas falar com os professores por rádios alimentados a pedais. Foto: "Miss Molly Ferg...