11 Aug
Uma pergunta bastante relevante que surge na cabeça de quase todos os programadores certa hora da vida é: por que existem tantas linguagens de programação? Outra bastante comum é: qual delas é melhor? Alguém poderia responder: existem tantas porque uma vem para corrigir as falhas das outras, e a melhor é a que tem menos falhas. Certo? Errado.
(more…)
Posts Relacionados:
Assine nosso RSS feed!
19 Apr
Ao entrar na sala John Maddog Hall, uma das maiores desse FISL, 5 minutos antes do início da palestra, eu esperava muitas coisas, mas certamente não esperava encontrar uma sala de palestras completamente lotada, com até mesmo pessoas de pé para assistir o Fabrício falar.
A motivação dessa palestra é algo também interessante: o palestrante sente que Rails acabou sendo o foco da trilha de Ruby e acha que a linguagem em si merecia mais destaque, embora mesmo sua palestra fale de Rails. A palestra ensinou Ruby básico, um pouco de rails e explicou que Ruby é baseado em Convention over configuration e usa MVC naturalmente - tudo isso demonstrado na construção de uma pequena aplicação funcional.
Passando por a criação de uma página com formulário simples e padrão de Ruby on Rails e seguindo incrementalmente e de forma bastante natural - fazendo alterações à medida que erros foram aparecendo e resolvendo-os. Não sei se propositalmente ou acidentalmente, mas os incontáveis erros que apareceram durante a palestra foram até instrutivos, já que o palestrante mostrou o que causava cada um deles e como eram resolvidos.
De passo em passo, de erro em erro e passando, eventualmente, pelo scaffold uma aplicação simples de perguntas com usuários. Apenas, uma pena, não deu tempo de terminar essa aplicação. A versão completa dessa aplicação pode ser vista clicando aqui: Aplicação de Perguntas.
Posts Relacionados:
Assine nosso RSS feed!
7 Mar
Encontrei um artigo muito bom sobre construção de interfaces com o Glade neste site. O autor ensina, passo-a-passo, como instalar e utilizar essa ferramenta tão poderosa, concluindo com exemplos em diversas linguagens. O artigo ainda está em construção, mas já está bem completo.
Para quem não conhece, o Glade é um utilitário para desenvolvimento de interfaces utilizando a biblioteca GTK+. O papel do Glade é permitir ao programador projetar a interface de um programa visualmente, em vez de programá-la, o que pode ser tedioso e cansativo (exceto no Visual Basic e similares, em que tudo já está quase pronto nesse aspecto).
Como o autor do artigo cita, a biblioteca GTK+ está disponível para muitas linguagens, e o arquivo com a descrição da sua interface, gerado pelo Glade, pode ser utilizado para carregá-la dinamicamente, ou seja, você pode mudar a hora que quiser a linguagem do seu programa que não precisará redesenhar a interface, o que torna o Glade muito versátil.
Veja também o site oficial: http://glade.gnome.org/
Posts Relacionados:
Assine nosso RSS feed!
16 Jan
![]()
No livro Test-Driven Development By Example, Kent Beck mostra em um pequeno apêndice como criar a função que calcula o número de Fibonnaci de forma recursiva através do Test-Driven Development(TDD, desenvolvimento direcionado por testes). Baseando-me neste exemplo, criei uma versão para Ruby.
Primeiro, gostariamos que fib(0) = 0. Para isso começamos a escrever o nosso teste:
Rodando o teste temos, como esperado, um erro já que não criamos a classe Fibonacci. Devemos fazer agora o mínimo para que os testes passem. Isso inclui em adicionar a classe Fibonnaci e criar uma implementação do método self.fib.
Rodando o teste descobrimos que está tudo bem. Podemos agora testar se fib(1) = 1, vamos modificar o teste anterior para incluir esta condição.:
Que obviamente não passará. Podemos mudar o self.fib para a seguinte versão:
Os testes estão novamente passando, mas existe uma repetição entre eles, algo ruim de se fazer (use a metodologia DRY - Don’t Repeat Yourself). Vamos então refatorar o método test_fib:
Temos agora os casos de teste compostos de pares (n,fib(n)). Podemos agora adicionar o par (2,1) e rodar os testes para ver que o método continua funcionando. Vamos então adicionar mais um teste, o par (3,2), portanto temos cases = [[0,0],[1,1],[2,1],[3,2]]. O teste não passa, podemos modificar o código rapidamente para resolver este problema.
Temos agora os testes passando e podemos generalizar para obter o resultado esperado. Ao invés de retornar 2, podemos retornar fib(n-1) + fib(n-2) (o passo completo seria 2 = 1 + 1 = fib(n-1) + 1 = fib(n-1) + fib(n-2) ). Abaixo está o código final:
Posts Relacionados:
Assine nosso RSS feed!