sexta-feira, 15 de junho de 2007

Todo programador Java ruim que eu conheço...


Meu amigo Carlos Villela, o famoso fera CV que já ajudou muita gente no GUJ incluindo a mim, criou um tópico no GUJ com o título acima que incendiou a galera. É um dos tópicos mais lidos nos últimos tempos e muita gente respondeu, sendo que alguns mais de uma vez. Fora o esperado flame war, que acho que era o que o CV esperava que fosse mais divertido, muitas respostas boas apareceram. Até acredito que algumas poderiam ser coletadas em um manual de bons conselhos e outras em pit stop para o riso. Eu também respondi lá mais de uma vez. E vou responder de novo, só que desta vez por aqui.

Todo programador Java ruim que eu conheço...

Deve estar preocupado sabendo que os fabricantes de chips quase não fabricam mais CPUs mono cores e que no futuro precisarão aprender outras linguagens muito mais complexas com facilidades de computação paralela para aproveitar os multi cores.

Como muitos já perceberam, a industria de processadores se deparou com o chamado "muro de potência" e não consegue mais crescer a velocidade de processamento seguindo o mesmo ritmo de antes. Antes a lei de Moore previa a duplicação de desempenho a cada 18 ou 24 meses de um processador mono core. As projeções atuais, baseadas no que vem acontecendo nos últimos anos, indicam que o ciclo de duplicação deste tipo de processador é de no mínimo 5 anos.

Assim não é estranho que aumentar a freqüência do clock não seja mais o principal meio de melhorar a capacidade do processador. Já que não se pode crescer para cima o jeito é ir para os lados. O investimento atual é no paralelismo com o crescimento da capacidade de processamento utilizando vários núcleos. Um processador de 2 núcleos consome muito menos energia do que um de 1 só núcleo com o dobro de velocidade.

O hardware está mudando e o mundo do software, que se baseou durante anos no processamento seqüencial, terá que mudar. Já tem gente mudando porque a turma acadêmica de processamento científico e de Data Minning, já está relativamente adiantada na pesquisa de uso de métodos paralelos. O primeiro grandão que percebeu a necessidade de mudanças foi o Google. Eles foram buscar no Lisp o algoritmo MapReduce que se transformou em uma das chaves do sucesso do seu sistema.

Fiquem atentos, já vi o mundo mudar antes e acredito que ainda vou assistir isto acontecer outras vezes nos próximos anos. As mudanças sempre chegam oferecendo oportunidades de sucesso para gente inovadora. Tenho a certeza que não será diferente desta vez. Não duvidem que em futuro não muito longínquo, os Tomcats, JBoss, WebLogics e mais todos os ESBs da vida, não sejam mais escritos em Java e sim em Scala, Erlang ou outra linguagem qualquer com suporte mais fácil ao aproveitamento de mais processadores. Quem sabe o programador seqüencial Java que estamos malhando hoje não seja um novo “Marc Fleury” ou “Ray Ozzie” no mundo da computação paralela?

5 comentários:

marcospereira disse...
Este comentário foi removido pelo autor.
marcospereira disse...

Muito interessante mesmo o post do CV, apesar de eu ter respondido apenas uma vez. Sobre Scala, só uma coisa a dizer: sudo apt-get install scala

ps.: o seu blog está ótimo, já está no meu google reader.

Luiz Claudio Franca dos Santos disse...
Este comentário foi removido pelo autor.
Vinícius disse...

Quanto ao "muro de potência" que você citou, realmente é um problema para a eletrônica. Entretanto, já estão falando por aí de uma tal de spintrônica, que parece que vai ser uma alternativa para o futuro.

Eduardo disse...

interessante, mas não consegui entender o por que essas linguagens são melhor aproveitadas pelos novos processadores. se pudesse explicar, seria ótimo.

Quem sou eu

São Paulo/Paraty, SP/RJ, Brazil
Engenheiro estrutural COPPE/UFRJ por formação, desenvolvedor Java por experiência e poeta se sobrasse tempo