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:
Assine nosso RSS feed!
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:
Assine nosso RSS feed!
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:
Assine nosso RSS feed!
28 Nov
Ultimamente estou correndo atrás de bastante coisa sobre design.
Acho que todos que já entraram no nosso blog já notaram que usamos um template padrão do WordPress.
Depois de muito tempo decidimos mudar de template (na verdade queremos isso desde o começo do blog). Começo do ano estaremos de template novo (espero que bem melhor que o atual).
Como sou programador, de cara fui atrás de javascript. Conheci o JQuery e resolvi assinar a mailing list deles pra ver o que tinha de novidade.
Uma das novidades que vi é um plugin que coloca sombras em praticamente qualquer tipo de objeto html. E o melhor, com quase código nenhum. Parece mágica e funciona mesmo.
Aqui vai um screenshot do site de exemplos (Notem a quantidade de código extra para fazer isso):

Se não acreditar, desabilite o javascript no seu browser (Não aqui, no site de testes). E vale a pena pegar o firebug pra ver como que o plugin faz essa mágica.
Posts Relacionados:
Assine nosso RSS feed!