Ruby, Top of the Pops

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido. Mas não se assuste, como esse texto tem alguma coisa de interessante, eu farei uma versão atualizada lá. E só removerei este texto depois de passar o link aqui.

A Edição número 51 de Java Magazine troxe um artigo sobre JavaFX nada excitante, pois mostrou um formzinho bobo, ao invés de um desenho 2D interativo, que eu acredito ser esse seu forte. Mas isso é assunto pra outro post, o mais me irritou no artigo foi a seguinte declaração (tudo bem que se fala de linguagens dinâmicas em geral, mas acerta em cheio o Ruby): Leia o resto deste post »

A caveira de Craig McClanahan (e o porquê do XML ter sido tão importante)

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido. Mas não se assuste, como esse texto tem alguma coisa de interessante, eu farei uma versão atualizada lá. E só removerei este texto depois de passar o link aqui.

No post anterior, comentei sobre a opinião de Bruno Borges dizendo que a especificação é lerdinha. Hoje, irei comentar sobre a opinião de que Craig era o homem errado na especificação do Faces.

É piada corrente (piada?) de que a única coisa que Craig fez de bom foi o Tomcat, o resto (Struts e JSF) foi um lixo. Não é bem assim, temos a mania de olhar as coisas do passado com os olhos do presente e criticar os criadores por não terem uma maldita bola de cristal para saberem o que aconteceria no futuro se fizessem desse ou de outro jeito.

Bruno Borges chamou de “Tríplice Aliança” a referência de um objeto via programação java, página JSP e arquivo XML (Mas o que interessa na verdade é o “meio-de-campo”, ou seja, XML.). Porém, considerando o ano de 2000, quando o Struts surgiu (ao mesmo tempo que o então chamado J2EE surgiu), haveria para os frameworks uma alternativa ao XML? Leia o resto deste post »

Hey Hey Hey Hey Hey Hey Hey Hey Hey Hey! Do you wanna drink some alcohol?

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido. Mas não se assuste, como esse texto tem alguma coisa de interessante, eu farei uma versão atualizada lá. E só removerei este texto depois de passar o link aqui.

Muita gente do Java tira suas dúvidas e responde as dúvidas dos outros no Orkut GUJ, tem gente “estrela” lá, e tem até moderadores que ficam moderando o que possa parecer imoderável. Mas o que muita gente desconfia mas que não ousa falar é que todo mantenedor de fórum A-DO-RA quando ocorre uma discussão inflamada, pois todo o trabalho que eles tiveram para manter o fórum foi recompensado pela briga alheia. Mas é claro, precisa ter uma boa pauta pra começar uma discussão. Não foi o que aconteceu com o The Server Side, onde eles tiveram a idéia mais boboca do mundo: qual é o melhor? Struts ou JSF?

Tinha tudo pra ser mais uma lenga-lenga sem fim até que Bruno Borges apareceu e colocou um post em inglês que se resume a dois tópicos: Leia o resto deste post »

Common Lisp é um assunto seríssimo

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido.

Tá achando que manjo de Lisp? Neca de Pitibiriba. Minha experiência com essa linguagem se limitou a apenas um dia de aula de Linguagens de Programação com o Professor Zorzo na UFSCar, que no período em que estudei lá (2002 a 2005) significava das 8h00 às 9h30 e das 10h00 às 11h30; além de um trabalhinho não muito complicado.

Lembro apenas que era uma linguagem com muitos parânteses (não que eu ache isso um problema (eu mesmo uso parênteses como um recurso narrativo onde é apresentada uma idéia paralela enquanto eu deixo a outra em suspensão (reparou que tá chovendo muito nesses dias? Não dá nem vontade de subir a serra no fim de semana))) e que tinha um shell próprio (na época pré-Ruby, uma blasfêmia) e era uma linguagem onde fazíamos manipulações de uma lista encadeada fazendo recursão.

Leia o resto deste post »

O momento em que Java quase virou .Net e C++ ao mesmo tempo

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido. Mas não se assuste, como esse texto tem alguma coisa de interessante, eu farei uma versão atualizada lá. E só removerei este texto depois de passar o link aqui.

Isso já tem mais de um ano, mas em novembro de 2006 o arquiteto da Sun Danny Coward propôs a inclusão de propriedades em seu blog. Para quem está com preguiça de ler, ele sugeriu que a linguagem Java tivesse, ao invés de getters and setters, tivesse a expressão property, ficaria assim:

public property String foo;

E para a leitura de propriedades, seria feita dessa maneira:

a->Foo = b->Foo;

ao invés de:

a.setFoo(b.getFoo()) ;

Isso gerou uma polêmica desgraçada pra muitos javeiros, mas a crítica a ela se dividiu em algumas correntes:

1- Aqueles que acharam que isso seria copiar o .Net com sintaxe do C++. Pra mim, isso é bobagem. Java pode e deve ter influências de outras linguagens, basta, é óbvio, saber escolher aquilo que seja compatível com a filosofia do Java, e saber identificar os pontos fracos das soluções já implementadas. Dizer “isso não foi inventado aqui” não funciona, o Ruby é um exemplo de uma linguagem que não tem vergonha de dizer que se inspirou em outras linguagens, e olha que não é ruim não.

2- Aqueles que identificaram que propriedades não podem ser mapeadas com métodos. E com razão, eu poderia ter facilmente void setMyLink(URL myLink) e void setMyLink(String myLink) em uma mesma classe. Mas como eu mapearia isso para properties (que deve ter um comportamento similar ao de variáveis)? E sem falar que Beans tem um certo problema com coleções, pois não há nada que faça um objeto que possua uma List ter conhecimento da inserção e remoção de elementos desta List e que ao mesmo tempo esse objeto seja reconhecível pelos frameworks que exijem o padrão Bean.

3- Aqueles que acham que isso tiraria a programação explícita do Java. Eu não gosto muito de dogma, e acredito que se possa criar abstrações que facilitem a vida do desenvolvedor. O uso de propriedades poderia tirar deixar um pouco mais implícito, mas também não tornaria a linguagem confusa.

Mas uma coisa ninguém falou, pra quer melhorar os getters e setters se ela está decaindo a cada dia? É isso mesmo que você leu: DE-CA-ÍN-DO. Por várias razões:

1- Estou convencido de que nunca na história desse país, o uso de gettes e setters foi tão criticado. E isso porque uma classe com apenas getters e setters não é muito diferente de uma struct no C-zão. Se você duvida, procura no Google (e no GUJ também) sobre crítica aos getters e setters. Você vai até se deparar com as bibas Paulo Silveira e Philip Shoes, o “Calçado” tendo piti quando escutam que get e set faz com a aplicação fique orientado a objeto. É obvio que isso é mentira! Já participei de dois projetos onde havia um monte de “Bean”, que todo mundo passava a mão, com um monte de “objetos” de “negócio” em volta deles fazendo muita merda. O primeiro, com o objetivo de substituir um legado com problema de manutenção, resultou num programa com problema de manutenção. E o segundo, resultou num programa tão matador que o projeto morreu antes de mostrar seu ROI.

2- Já reparou que o Hibernate pode ser usado com annotations? Já reparou que a JPA é só annotations? Já reparou que existe um container de IoC leve chamado Google Guice que pode ser usado só com annotations? Aquela dependência de getter e setter está caindo cada vez mais. Possivelmente seu uso só servirá para pegar e mudar valores do modelo e jogar na visão (isso se não inventarem outra coisa mais interessante pra fazer isso).

É claro que ainda haverá momentos em que o uso de getters e setters se torna “inevitável” (na verdade, para um desenvolvedor, inevitável significa algo que poderia ser impedido em situações normais, não fosse a preguiça de pensar, mais o chefe que só tá lá porque deu a bunda pro gerente, mais a falta de café e mais o prazo apertado), mas acredito que as situações possíveis vão diminuindo, à medida que vão surgindo alternativas interessantes.

Então resta a dúvida, pra que mexer em algo que já não é tão indispensável assim?

O Linux não me ama

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido.

Este sábado instalei o Ubuntu 7.10, depois de uma certa frustração do Ubuntu 7.04 porque não reconhecia o som, nem a placa de rede. Lembro que na versão anterior eu havia conseguido rodar o som, de uma maneira misteriosa que eu nem mesmo sei, o que sei foi que eu fiz um monte de coisa, instalei e desinstalei o Alsa de vários jeitos e num reboot mágico o som apareceu, só a conexão sem fio que não funcionou, o Ndiswrapper não reconhecia os drivers da minha placa de rede. Agora, com essa versão atual, o Ndiswrapper funcionou que é uma beleza, o som não.

E o pior é que eu tive uma certa ilusão quando as propagandas do Ubuntu dizia que a distro procurava os drivers proprietários e sugeria a instalação se houvesse uma conexão à internet disponível (eu tinha, antes da conexão sem fio, havia um fio azul claro atravessando a casa, e que quando alguem tropeçava, derrubava aquele roteador que parece mais leve que o ar), mas achei que ele serviria pro áudio, pro wireless e pra tudo mais. Não, só funcionou pra placa de vídeo NVidea. Ora, apesar de na versão 7.04 não ter nada parecido, eu conseguia instalar esse driver facilmente. Mas o problema com som e placa de rede sem fio está tão problemático de resolver quanto na versão anterior.

Porém, eu gostei da nova versão porque tem o Compiz Fusion, mas é assim, é que-nem trocar XP pelo Vista, nova embalagem com o mesmo conteúdo.

De qualquer maneira, farei o som funcionar, a luta continua!

Eu, pedindo desculpas (ou não?)

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido.

Sempre chega aquele momento no blog onde o blogueiro fica aparentemente sem idéias e pára de escrever. Aí a volta é insuportável (pelo menos pra mim), pois tem que pedir desculpas pra galera e coisa e tal, e tem que prometer que a partir de agora tudo vai ser diferente. Mas quer saber? Não vou fazer nada disso. Sabe por que? Leia o resto deste post »