23 Dec
Um requisito cada vez mais importante hoje em dia para uma aplicação é a portabilidade. Com cada vez mais sistemas diferentes no mercado, com configurações e necessidades específicas, fica mais difícil atingir esse objetivo.
Em Java, essa preocupação não é necessária, já que a máquina virtual é sempre a mesma (na verdade, quase sempre… algumas têm funcionalidades a mais). Mas em linguagens compiladas para código de máquina, como C e C++, a tarefa fica mais difícil.
Felizmente há diversas ferramentas e truques que podem ser utilizados para atingir esse objetivo mais facilmente. É possível fazer aplicações portáveis em C e C++ sem o uso dessas ferramentas, mas é mais fácil utilizarmos o que já está pronto. As duas principais ferramentas que fazem esse papel são o autoconf e o CMake. Não tenho muita experiência com o autoconf, mas já utilizei o CMake numa aplicação que utilizava as bibliotecas GTK+ (Gimp ToolKit) e VTK (Visualization ToolKit). Ambas as bibliotecas estão disponíveis para mais de um sistema operacional, e meu objetivo era fazer com que meu programa funcionasse tanto em Windows como em Linux. Utilizando o CMake, não foi necessária nenhuma alteração na aplicação para fazê-la funcionar em ambos os sistemas.
A função dessas ferramentas é assegurar que as dependências do seu programa (bibliotecas, formato de dados) estão satisfeitas e gerar instruções para uma ferramenta de compilação (Make, Visual Studio) saber como chamar o compilador para compilar seu programa, afinal os compiladores mudam de sistema para sistema, e mesmo as opções de compilação de um mesmo compilador mudam.
Então, se você for escrever uma aplicação um pouco mais complexa do que um “Hello world”, vale a pena investir um tempinho para escrever um arquivo de configuração para usar uma dessas ferramentas!
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
15 Dec
Olá a todos! Sou o mais novo membro do VidaGeek. Nesse meu primeiro post vou falar um pouco sobre a utilidade do software.
Creio que, como eu, todo programador fica satisfeito quando faz ou participa do desenvolvimento de um software que as pessoas usam e gostam. Mas nem sempre um programa que escrevemos tem a avaliação que esperávamos. Como, então, escrever algo que se sabe que será utilizado?
Pode parecer óbvio, mas a resposta é o foco no usuário. Não basta escrevermos um programa que faça o que o usuário quer (ou o que nós, programadores, queremos), é necessário que o programa seja do jeito que o usuário mais gosta, ou seja, fácil de usar, de aprender e eficiente. Daí surge a necessidade de se levar em conta a opinião do usuário a cada passo do desenvolvimento, para saber o que pode ser melhorado e como. Esse é um processo iterativo: a cada passo, deve-se procurar saber o que o usuário achou do produto até àquele estágio e tentar corrigir os problemas enquanto se implementam novas funcionalidades.
Nem sempre é fácil obter esse tipo de informação. O usuário normalmente não sabe o que quer, exatamente. Aí entram questionários, entrevistas, observação, experimentos, etc.
A conclusão é: se você quer fazer algo útil, procure saber quais são as necessidades dos usuários. Quais são os problemas existentes nos produtos atuais ou o que pode ser criado para facilitar a realização de uma tarefa.
Exemplos bem-sucedidos de produtos que levaram em conta a opinião dos usuários: Windows (sim, apesar de ele ser cheio de problemas, ele faz sucesso), Wii, Orkut, Youtube.
Creio que é isso que falta para que o Linux faça mais sucesso do que já faz.
Para saber mais: Interação Humano-Computador
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
7 Dec
Depois de um bom tempo sem postar nada (fim de ano é complicado….), dei de cara com alguns sites que merecem ter sua engenhosidade (no uso do algoritmo Picareta) exposta como exemplo.
Antes, uma rápida introdução ao algorítmo:
Incrível não? Esse sim é um algoritmo que pode ser considerado uma bala de prata. Ele é aplicável a qualquer problema (inclusive os incomputáveis) e geralmente funciona por um bom tempo, antes dos dados serem corrompidos e aparecer a bendita falha de segmentação (ou NullPointerException para os javeiros - notem que ela só pode ocorrer na linha 3, onde você depende de dados injetados na sua aplicação).
Alguns exemplos de usos bem sucedidos (e vários ainda estão rodando):
Esses são apenas os casos de sucesso que eu conheço. Garanto que existem muitos outros.
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.