Para decidir, entre tantas opções disponiíveis, vários fatores precisam ser considerados e ainda assim a escolha pode não ser a ideal. Se pensarmos apenas em termos de mercado (brasileiro, pelo menos), a linguagem escolhida deveria ficar entre o MS Visual Basic ou o Borland Delphi.
Mas apesar de muito competentes e fáceis de utilizar, ambas fugiriam de um dos propósitos seguidos neste trabalho: de utilizar apenas ferramentas livres. Neste quesito, o Kylix que tem uma versão gratuita poderia ser cogitada para utilização no projeto, porém apesar de gratuito[1], o Kylix não é software livre e portanto, foi descartado.
Dentre as linguagens realmente livres, poderímos decidir entre Free Pascal, GNU Pascal, GNU C/C++ entre várias outras. Pensando em implementação em ambiente web, já teríamos o PHP ou ainda o PERL.
Pela robustez, pela possibilidade de aproveitar melhor os recursos de rede e da própria estação, o ambiente cliente servidor é o ideal para a implementação do sistema. Como o processamento é feito na estação, a carga de processamento no servidor é minimizada - apenas o banco de dados roda no servidor. Outro ponto que pesa a favor deste ambiente é que apenas os dados solicitados ou enviados pela estação trafegam pela rede.
Decidido pelo ambiente cliente/servidor falta agora definir a linguagem de programação. Nenhuma das linguagens citadas proporcionam um ambiente de desenvolvimento rápido como temos no VisualBasic ou no Kylix e inicialmente a escolha parece ser impossível. Imagine ter que se preocupar, além do layout das telas, em escrever todas as rotinas de manipulação de telas e dados. Seria uma perda de tempo muito grande. Estava então difícil fugir do Kylix.
Felizmente, os desenvolvedores das interfaces gráficas (principalmente Gnome e KDE) disponibilizaram as bibliotecas para que os programadores de aplicativos pudessem utilizar em seus sistemas. O problema agora é aprender a utilizar estas bibliotecas. No caso do Gnome, a biblioteca básica é a GTK e no KDE, é utilizado o Qt. A biblioteca escolhida foi o Qt e conseqüentemente a linguagem adotada foi o C++. Vamos agora justificar a escolha.
Por mais que o Gnome seja eficiente, enxuto e agradável, ele não consegue bater o KDE em popularidade. A maioria das distribuições Linux adotaram o KDE como ambiente gráfico padrão e portanto sua utilizaçõo aumenta a compatibilidade do sistema entre várias distribuições disponíveis. Outra grande facilidade do Qt é que a biblioteca é 100% orientada a objetos e reimplementar uma classe é mais intuitivo que trabalhar com ponteiros de funções, o que ocorre no GTK. Existe sim uma extensão do GTK orientado a objetos, mas isto não é nativo, diferentemente do Qt que já foi concebido usando POO.
Uma outra (grande) vantagem na adoção do Qt/KDE é que existem ferramentas que tornam o desenvolvimento C++ rápido e intuitivo. O Qt traz consigo o excelente Designer que torna o desenho das interfaces uma tarefa fácil e envolvente. Apesar de também gerar código C++ personalizado, os fontes gerados são estritamente Qt, que fogem ao estilo GNU de desenvolver sistemas (configure -> make -> make install).
Para trabalhar no código C++, a escolha foi o ambiente KDevelop que é bem integrado ao KDE, Designer e ainda gera distribuições no estilo GNU e distribuições rpm. Além disto, no KDevelop, a classe que representa a janela, é herdada e as alterações efetuadas nesta classe não interferem na interface desenhada pelo Designer. Some-se a isto o fato de que o KDevelop é mais competente para lidar com os códigos-fonte e com a manipulação de classes.
Para conectar ao banco de dados, também não há problemas, pois o MySQL já fornece uma API nativa em C. Para utilizá-la, basta acrescentar o header do MySQL e depois ao compilar o programa, fazer a ligação com a biblioteca.
Finalmente, a escolha da linguagem C++ também sofreu influências do próprio Linux e seus aplicativos, quase 100% deles escritos em C. Já que a grande maioria dos programadores Linux usam C, por que procurar outra linguagem? Além do mais o C já vem acompanhando qualquer distribuição Linux do mercado.
[1] | Conforme a Free Software Foundation, o fato de o software ser gratuito não implica que ele seja livre. Para ser livre, o software precisa no mínimo ter o código fonte disponível, o que não acontece com o Kylix. |