Você é programador Java?

Este blog deixou de ser mantido, mas o autor continua escrevendo aqui. Não deixe de assinar o novo feed!

291893723_6abbfcd880_m.jpgHá bastante tempo (desde sempre, pelo que me consta) observamos uma segmentação muito forte no que diz respeito às linguagens de programação, principalmente por parte dos próprios programadores; existem aqueles que se auto-denominam programadores C, programadores Java, programadores Delphi, programadores ASP, programadores PHP e assim vai.

Você sabe, as coisas costumam funcionar assim: é bem provável que um cara que se auto-denomina programador C, mesmo tendo poucos conhecimentos em outras linguagens, consiga resolver — de um jeito ou de outro — os problemas que precisa usando essa linguagem. O mesmo acontece com outros programadores proficientes em outras linguagens. Isso faz sentido para você? Fazia para mim. Fazia.

Ontem, escutei ao podcast do AboutGroovy.com, onde o entrevistado da vez é Neal Ford, Arquiteto de Aplicações na ThoughtWorks, e um dos assuntos levantados nesse podcast é o conceito de Polyglot Programming (ou programação poliglota).

Segundo Ford, linguagens de programação como o Java estão começando a mostrar sinais evidentes de “velhice”, o que não é algo realmente agradável. Como é de conhecimento geral, o Java se apoiou em diversas características introduzidas pelo C, com a diferença de incluir uma VM e mais um punhado de outras coisas. O plano era que esse negócio aí fosse inteligente o suficiente para diminuir bastante as dores de cabeça dos programadores quanto a alocação de memória e tudo mais (coisa que costumava tirar o sono de muitos na época). Isso me leva a concluir que a pretensão do Java era ser o que o C seria se este tivesse sido feito da forma correta! (assim como o Subversion é em relação ao CVS, segundo Linus Torvalds).

Devo dizer que o Java foi extremamente bem-sucedido nessa tarefa. Como todos sabemos, a coisa não parou por aí, tanto é que hoje temos uma plataforma extremamente robusta e eficiente. Porém, essa definitivamente não é minha opinião quando vejo a parte “linguagem” do Java. Hoje, a coisa está mais ou menos assim: numa mão temos uma excelente plataforma: rápida, robusta e amplamente usada pela indústria; na outra mão temos uma linguagem que está ultrapassada e que definitivamente não está em condições de ser usada de modo a extrair o máximo dessa plataforma.

Sabendo desse problema, um grande esforço foi iniciado há algum tempo com o objetivo de melhorar a plataforma Java, permitindo que esta fosse capaz de trabalhar com diferentes linguagens. O mais legal é que isso é possível de ser feito sem que seja necessário abrirmos mão das qualidades com as quais estamos acostumados. Hoje podemos escrever programas em Ruby, Groovy, Python, JavaScript e em uma infinidade de outras linguagens e, ainda assim, programamarmos em Java! E é justamente por esse motivo o podcast é tão interessante (você deveria ouvir, sério). Entre outras coisas, ele diz que nós deveríamos parar de nos preocupar com a parte “linguagem” do Java para tirarmos mais vantagem da parte “plataforma” do Java.

Tá, eu já sabia disso… e é provável que você também. Mas é sempre mais interessante ouvir isso de outra pessoa, principalmente quando essa pessoa é bem mais experiente e sabe muito mais do que você. :D

- Ahh… mas eu não posso fazer aplicações corporativas usando linguagens de dinâmicas… e também não sei como chegar para o meu chefe e propor o uso delas sem ter que pegar minha cabeça no chão depois.

Pedaaaaala, programador Java!!Já disse e repito: ouça o podcast. Uma abordagem muito interessante que o Ford sugere para facilitar a entrada do Groovy — e outras linguagens do gênero — nas empresas é usá-las na criação de test cases. Sim, pois trata-se de código que não vai para produção. Então, quando todo mundo perceber que é muito mais fácil e rápido desenvolver com Groovy em vez de Java, oportunidades para uso da primeira começam a surgir naturalmente.

A propósito, se alguém acha que não se pode usar Groovy em aplicações corporativas, eu gostaria de saber qual é a sua definição de “aplicação corporativa”, pois, existe uma grande chance dela estar equivocada.

Algumas reflexões…

Pra quê criar aplicações em um framework Java qualquer (que, no fim, acabam sendo diferentes sabores da mesma gororoba) se podemos criar aplicações com o Grails — muito mais fácil e rapidamente, diga-se de passagem — e gerar um arquivo WAR/EAR lá no final da mesma forma que você faria com outro framework Java qualquer?

Pra quê ficar tentando convencer o compilador de que você não é um idiota e sabe exatamente o que está fazendo? Sim, pois é justamente isso que frameworks como o JMock fazem. Podemos criar test cases muito mais simples e eficientes em Groovy — inclusive com Mock Objects — sem ter que dar elásticos e dribles-da-vaca no compilador.

Pra quê gerar XMLs com API s que são mais verbosas que o Galvão Bueno em final de Copa do Mundo se você pode usar, por exemplo, o XML Builder do Groovy e outras alternativas tão poderosas (e simples) quanto?

O que o Ant faz sozinho que não poderia ser feito mais elegantemente em código Groovy? Aliás, existe uma forma de se criar scripts Ant com código Groovy, o que nos deixa numa situação bem mais confortável uma vez que não precisamos meter a mão em quilos de arquivos XML.

Temos que deixar de programar em Java, ou em C# ou em Brainfuck e programarmos nas linguagens que forem adequadas para fazer o trabalho da forma mais simples possível. Um óbvio que de tão óbvio passa desapercebido por muitos.

Fotos por: manhattan.about.com, Google Images

Tags: , , , ,