10 março 2008

Utilização das linguagens de programação

Novamente lendo o blog do Cezar Taurion me deparei com um post bem interessante falando sobre o debate que temos visto ultimamente sobre a substituição do java por linguagens de programação dinâmicas, mais especificamente Perl, PHP, Python e Ruby.

faz algumas semanas que esse debate (em alguns casos são brigas) vem acontecendo principalmente em fóruns, lista de discussão e blogs. Muitas vezes intitulado como o "fim do Java" ou "a morte do Java", esse debate teve início, se não me engano, em uma matéria de um site de noticias norte-americano que não sei qual foi, somente li posts brasileiros comentando sobre o assunto, mas ele falava justamente que o Java, em pouco tempo, seria substituído por linguagens dinâmicas e pela plataforma .Net da Microsoft. No post do Cezar não foi mencionado o .Net, mas foi bem comentado sobre as linguagem dinâmicas, e foi mencionado também o site da Tiobe Software que é conhecido por disponibilizar uma espécie de ranking das linguagens de programação.

Resolvi dar uma passada no Tiobe para ver como anda o ranking das linguagem de programação e analisar principalmente as linguagens citadas no post. Neste mês temos: Java aumento de 2,61%; PHP queda de 0,68%; Perl queda de 0,64%; Python aumento de 0,70%; Ruby queda de 0,11%. Analisando assim podemos dizer que Java é a linguagem que tem crescido mais dentre as mencionadas.

Mas essa análise não mostra a tendência de utilização das linguagens, que pode ser constatada olhando-se o gráfico, que mostra o período de 2002 à 2008, onde podemos ver que Java já passou por um período de queda muito maior, mas agora esta mais estável, e que as linguagens dinâmicas tem sim uma curva de utilização com forte subida, a não ser Perl que esta em queda. Porém se observarmos com atenção vemos que a maior parte do mercado que essas linguagens dinâmicas tem tirado é da dupla C/C++, e não do Java.

Levando somente esses dados em consideração, não acredito que seja possível dizer, nesse momento, que Java vai morrer (até mesmo por que linguagens de programação não morrem, somente diminuem a utilização), nem mesmo que Java será substituída por outras linguagens ficando sua utilização restrita a alguns nichos e a sistemas legados. Aliando isso aos argumentos que Cezar Taurion colocou, podemos acreditar que, nas palavras de Cezar, "Aprender e ser proficiente em Java ainda é e será por muito tempo uma boa opção profissional."

Só para terminar, outras observações interessantes que podemos fazer analisando o gráfico do Tiobe:
- C# não tem crescido tanto quanto a Microsoft gostaria, ficando apenas com 4,143% de utilização;
- Visual Basic tem crescido bastante, será que isso é por causa do Visual Basic .Net ter se transformado em uma linguagem realmente boa para desenvolvimento, ou o pessoal gosta mesmo é da facilidades de criar "telinhas" somente utilizando o mouse?
Bom, a respeito do Visual Basic, eu não sei se realmente a versão .Net esta boa, mas até a versão 6 que eu conheço a única vantagem que essa linguagem tem em cima de várias outras é a facilidade de se criar telas, fora isso não vejo nenhum motivo para um crescimento tão grande dessa linguagem. Eu particularmente acho o VB uma linguagem péssima para se criar sistemas grandes, talvez seja melhor para criar pequenos aplicativos, e mesmo assim costuma dar muito problemas na hora do desenvolvimento. Mas eu não conheço o VB .Net, talvez por ter melhorado muito nessa versão esse seja o motivo desse crescimento. Preciso conferir isso.

06 março 2008

Novo projeto

Conforme disse no post anterior, estou iniciando um projeto para estudo de Java. Bom, não é só para estudo, é também uma necessidade pessoal que tenho. Vou falar um pouco deste projeto.

Eu costumo controlar meu orçamento pessoal em uma planilha eletrônica, que até funciona satisfatoriamente, porém todo o trabalho é feito manualmente, o que gera muito trabalho. Mas a ideia de desenvolver um pequeno sistema para controle financeiro não é nova, já vem de uns 3 anos atrás, quando eu comprei um PDA (um Palm Zire 21) visando procurar algum software para essa finalidade que eu pudesse instalar nesse PDA. Mas como não encontrei nenhum que me atendesse, resolvi eu mesmo desenvolver um sistema, pensando inicialmente usar o J2ME, mas como não existia JVM para aquele modelo de palm acabei conhecendo o SuperWaba que poderia ser considerado, a grosso modo, como uma "cópia" do Java especializada para rodar em PDAs (não é isso, mas não achei nesse momento uma explicação melhor).

Cheguei a desenvolver duas versões de um aplicativo de controle de orçamento para o PDA utilizando SuperWaba. A primeira ficou horrível, já a segunda ficou bem melhor, porém ainda não estava em um nível no qual poderia ser utilizado no dia-a-dia, sem falar de alguns pequenos bugs. Mas apesar do pequeno sucesso que tive, acabei desviando minha atenção desse software e acabei deixando-o de lado... para começar utilizar a planilha.

Após um bom tempo utilizando a planilha, comecei a pensar se não seria melhor desenvolver um pequeno sistema para substituir a planilha, logicamente adicionando mais recursos. Juntei isso com a vontade de aprender a desenvolver para a web com Java, então criei o projeto no Google Code chamando Controle Financeiro Pessoal. Bom, sobre o projeto posso dizer que será um sistema web, utilizará JSP, Servlet, Struts, Hibernate... e tudo mais que eu tiver direito ;-)

Qual critério usei para escolher essas ferramentas? Bom, praticamente to tentando aprender o que é mais pedido pelo mercado de trabalho. Principalmente sobre o Struts, já vi em vários lugares que ele nem de longe é o melhor o framework MVC que temos, mas ainda é o mais pedido nas vagas, por isso vou utiliza-lo no aprendizado.

E o motivo de fazer um sistema web é por que poderei utiliza-lo em qualquer lugar onde tenha um computador com acesso a internet, além do mais como a tendência de cada vez mais podermos acessar internet através de PDAs, celulares e smartphones, a intenção é, se o projeto der certo, desenvolver uma interface para dispositivos portáteis acessarem. Vamos ver no que vai dar.