quarta-feira, dezembro 05, 2012

GUI Toolkit: Uma eterna procura

Esse semestre eu cursei a matéria Projeto de Interface de Usuário, ministrado pelo Dr. Jair Cavalcante Leite, uma espécie de introdução ao campo de interface humano computador. É engraçado como muita coisa que nós gostamos, e outras tantas que detestamos, nas interfaces gráficas das ferramentas que usamos tem um porquê de estar ou não lá.

Uma das coisas que eu gostei dessa matéria com relação a outras que eu cursei na UFRN foi o fato que o professor nos deixou livre para usar as tecnologias que quiséssemos no projeto, o que me permitiu experimentar o GTK+, uma biblioteca de interface gráfica, e eu decidi não usar nenhum binding, ou seja, usei a linguagem em que a biblioteca foi feita originalmente, isto é, C. Era algo que eu queria fazer a algum tempo.

Quando você pensa em programação de maneira comercial, interface gráfica é crucial para o sucesso de um produto. E após alguma pesquisa a respeito do assunto, também um grande limitador de requisitos. Vou citar aqui algumas coisa que eu aprendi a considerar ao escolher uma biblioteca gráfica.

Linguagem

Diferentes bibliotecas são escritas em diferentes linguagens. Isso faz com que as bibliotecas herdem características das linguagens em que foram escritas, por mais que essas bibliotecas tenham bindings para outras linguagens. As mais tradicionais e mais utilizadas foram escritas em C, ou seja, se você quiser usá-la com uma linguagem orientada a objetos, prepare-se para alguns pedaços de códigos bem procedurais, a não ser que o binding da linguagem seja muito bem feito.

Plataforma

Mantendo o escopo de desktop, diferentes sistemas operacionais aceitam essas interfaces de maneiras diferentes. Alguns toolkits tentam circular essa deficiência enquantos outros assumem que eles são específicos para seu S.O. Os primeiros tendem a seguir duas abordagens diferentes para ser multiplataformas:

Utilizam a API nativa de cada Sistema
É o caso da wxWidgets e do projeto XWT. O ponto bom dessa abordagem é que o aplicativo fica com a aparência nativa do sistema em que se encontra, mas tem que usar aos controles comuns a todas API, tornando-a meio limitada
Têm uma implementação específica para cada Sistema
Acho que a maioria dos toolkits usam essa. A vantagem é que podem ser mais completos, definindo todos os controles que acham necessários, implementados do jeito que acharem melhor, mas acaba comprometendo a aparência dos programas, dando a impressão de estarem deslocados em alguns Sistemas.

Uma curiosidade é que o GTK+ tá trabalhando para poder rodar via navegador, através de conexão de rede (incluindo internet!), o que eleva o termo multiplataforma á um outro nível.

Documentação

Infelizmente é aqui que muita biblioteca peca e não só de GUI. Não é à toa que GTK+ e Qt são tão utilizadas, elas mantêm em seus sites uma referência completa de maneira organizada e sempre atualizada. Não se pode dizer o mesmo de alguns bindings delas.

Licença

E aqui muitos programadores pecam. Lembrem-se de sempre pesquisar a licença de uso das bibliotecas que vocês usam. Algumas licenças têm limitações de uso e distribuição do software que usa o toolkit que foi licenciado. É bom ter isso em mente para não ter problemas judiciais e financeiros.

Então, é isso. Espero ter ajudado a vocês a ter uma idéia de qual interface escolher. Uma dica a mais é tentar desenvolver de maneira modular, mantendo a lógica de negócio independente da interface usada, assim você terá mais liberdade de escolher, e caso necessário, mudar de toolkit de acordo com as suas necessidades. 

Nenhum comentário:

Postar um comentário

class Comment
def initialize
puts "C'mon! U can do it!"
end
end