domingo, 2 de março de 2008

LibFácil

Uma coisa que não podemos esquecer é a busca constante pela nova versão da LibFácil. Quando eu programava em Clipper, um amigo apelidou nossa biblioteca de FazTudo, porque tínhamos quase tudo pronto naquela biblioteca.

O tempo passou e continuo a procurar uma nova versão da LibFácil, seja em Java, C#, Python ou Ruby. É interessante o esforço que um programador realiza em busca de novas bibliotecas. Muitas vezes, eu já perdi mais tempo procurando uma nova biblioteca do que se tivesse implementado do zero. Faz parte do risco, mas normalmente a recompensa de uma biblioteca é maior estabilidade e hoje no mundo do Open Source, podemos contar com atualizações diárias, comunidades para resolver bugs e intermináveis downloads, tutoriais e sites de como fazer.

Mas achar a LibFácil não é fácil. Eu participo do grupo Python Brasil, uma lista de discussão sobre Python e são frequentes as buscas por bibliotecas gráficas: GTK, QT, Wx... o mesmo para jogos onde temos a PyGame e a Pyglet. Em Delphi é a mesma coisa, com um agravante: componentes.

Não que tudo isso seja ruim, mas o excesso de opções tem lá suas desvantagens. Um exemplo, escolher a linguagem e o conjunto de bibliotecas para se escrever uma nova aplicação Web. Há tantas opções que a escolha se torna um trabalho hercúleo. J2EE, Ruby on Rails, Django, tecnologias Microsoft, Zope e os milhares de quase frameworks PHP, gerenciadores de site e Wikis mágicos que encontramos por aí.

Eu mesmo estou em busca da LibFácil para sites e descobri uma forma bem interessante de escolher a biblioteca para o serviço, no caso, sites Web com banco de dados, os antigos sistemas agora chamados de aplicações web :-) Uma vez que a Web é a nossa plataforma, uma forma de pensar neste tipo de problema é ver as opções de hospedagem. Qualquer aplicativo web hoje precisa de um servidor seguro e rápido, tanto em relação a banda de Internet quanto em processamento. Hospedagem nos EUA hoje é quase de graça, mas nem tanto. Se você escolher J2EE ou Python prepare-se para gastar mais. A maioria dos sites que encontrei só disponibilizam hospedagem em Python ou Java com hosts dedicados... aí a coisa fica muito cara. Mas a questão é a LibFácil.

Antes de começar a desenvolver o sistema, temos que escolher o banco de dados, a biblioteca de mapeamento objeto-relacional, o framework, etc, etc, etc. E cada uma destas questões é respondida por uma biblioteca diferente. O número de camadas de abstração cresce assustadoramente, tornando as aplicações mais simples lentas, mesmo em computadores com recursos absurdos como temos hoje. Essa semana estive discutindo sobre o uso de XML ou YAML em nossos sistemas :-) Porém, a decisão é sempre tomada em relação a maturidade das bibliotecas YAML ou XML. Como eu odeio XML, fica mais fácil, mas nem sempre é assim.

No final, você usa umas 15 bibliotecas para fazer qualquer besteira. E cada uma delas é um novo mundo. Talvez esta seja a explicação de programadores profissionais não trocarem tão facilmente de biblioteca. Uma vez que aprendem ou dominam um conceito, ficam nele uns 10 ou 15 anos... por isso que ainda encontro gente com saudades de Visual Basic ou Clipper. Era tão simples naquela época. Você instalava o compilador e já estava pronto para quase tudo, mas já existiam bibliotecas e componentes comerciais... mas era mais fácil. A vida com Delphi ou .Net não facilita muito as escolhas também. Eu uso o novo Delphi 2007 para Win32 e ele vem com umas 4 ou 5 formas diferentes de acesso ao banco de dados. Eu achei pouco e ainda instalei uma outra forma... e por ai vai. Felicidade deste tipo só encontrei em J2ME.

A busca da LibFácil às vezes nos desvia dos problemas reais. Eu já vi muitos desenvolvedores modificarem um problema simplesmente para poder utilizar a biblioteca que mais gostam. Quem trabalha com Java acha XML a coisa mais natural do mundo, Perl é lindo, Python é perfeito. É por isso que eu defendo uma certa independência entre quem desenvolve a solução e quem determina a arquitetura de tudo isso. Quem nunca viu formulários de aplicações Delphi completamente irritantes, tudo para usar os controles DataAware e facilitar a vida do programador :-)

E a busca da LibFácil do momento continua. Viva o Google e a Internet. A procura não termina jamais !