Segue para o conteúdo

Archive for dezembro, 2006

29
dez

Armagedom na Internet

Orkut is over!Não sei se as pessoas notaram, mas está acontecendo uma coisa engraçada na “Internet Brasileira” neste exato instante: o Orkut está fora do ar há mais de 18 horas. :)

Boatos estão se alastrando por todos os lugares e uma grande depressão está atingindo os brasileiros, afinal de contas, se o Orkut sair do a Internet vai perder 50% de sua utilidade para o brasileiro (os outros 50% ficam para o MSN).

Blogueiros estão colocando as palavras chaves “Orkut, Fora do ar” em seus sites para ganhar acessos e um dinheirinho extra1, brincalhões de plantão já estão criando os seus falsos-emails-oficiais-do-google dizendo que é o fim do Orkut, os conspiracionistas estão alertando os amigos que o Orkut está instalando um sistema que permite à Polícia Federal recolher os dados dos usuários deste serviço, etc, etc.

O mais engraçado disso tudo é que meu pai se inscreveu no Orkut essa semana. Vou até fazer uma brincadeira com ele: “Pô pai, o senhor é tão ‘mal elemento’ que bastou criar uma conta no Orkut pros caras fecharem o site!” :)

1

 

28
dez

Duck Typing

Lendo os comentários de uma notícia que foi postada recentemente no BR-Linux eu pude observar que algumas pessoas não entendem muito bem o que é duck typing.

Ao contrário do que muitas pessoas pensam duck typing não é um mecanismo disponível em linguagens de programação que usam tipagem dinâmica mas sim uma técnica (ou prática) de desenvolvimento. Essa técnica é explicada da seguinte forma:

Se um objeto anda como um pato e faz quack como um pato então ele é um pato.1

O problema dessa explicação é que ela não fornece muitos elementos úteis para que as pessoas possam entender exatamente como isso funciona então irei recorrer à outra citação extraída do livro Design Patterns:

Program to an interface, not an implementation. (Programe para uma interface, não para uma implementação).

Duck Typing é uma técnica que funciona com qualquer linguagem de programação com suporte ao paradigma OO e diz basicamente que se o seu objeto responde à uma determinada mensagem (chamada de método) característica de um determinado tipo de objeto então esse objeto também pode ser considerado do mesmo tipo.

Trocando em miúdos: Se eu tenho um objeto do tipo “Conta” e um objeto do tipo “Lançamento” e ambos os objetos respondem ao método “.cancela()” pouco me importa se eles são derivados de uma classe em comum ou se ao definir a classe deles eu especifiquei algo como “implements Cancelable” :), o que me importa é que quando eu fizer “objeto_cancelavel.cancela()” esse objeto será cancelado.

Alguns defensores da tipagem estática podem dizer: “mas e se o objeto não implementar o método “.cancela()” e eu chamá-lo o meu programa vai quebrar!”. Sim, vai, e é exatamente isso que teria que acontecer, afinal de contas se você está tentando “cancelar” um objeto que não pode ser cancelado (não implementa “.cancela()”) é muito provável que o seu programa esteja com algum bug que precisa ser corrigido, implementando o método “cancela()” no objeto ou não chamando esse método onde ele está sendo chamado, já que essa chamada estaria violando o polimorfismo.

Então, para terminar, é necessário lembrar que duck typing não é um tipo de tipagem (tocradilho não intencional) dessa ou daquela linguagem de programação. É apenas a forma com que você faz uso das interfaces de seus objetos.

1O nome duck typing surgiu a partir dessa explicação.

26
dez

Projetos inacabados

Eu geralmente não consigo terminar os projetos que começo. Isso é um problema tão grande pra mim que até ajuda especializada eu busquei. Infelizmente pouca coisa melhorou depois disso de modo que hoje eu diminui drasticamente a quantidade de “novos projetos” que eu costumava abraçar.

Também já li um livro pra tentar melhorar um pouco essa situação mas o máximo que consegui foi adicionar mais um projeto à lista de projetos inacabados: adotar a metodologia sugerida pelo livro.

Com esse post aqui eu vou tentar dar início à mais uma tentativa de por ordem nessa situação e partir para a solução desse meu problema. Para isso vou fazer uma lista dos projetos que estão pendentes, uma data para a finalização deles e uma ação a ser tomada com o projeto caso a meta não tenha sido cumprida.

  • Terminar de escrever o meu livro (Desenvolvimento Python) – 30/08/2007 – Se o livro não ficar pronto até esta data eu irei liberar os capítulos que já estão prontos na Internet sob uma licença Creative Commons.
  • Finalizar a versão 1.0 do titletrack e escolher um nome melhor para ele – 15/02/2007 – publicar o que está pronto, oferecer para algum mantenedor que tiver interesse e “lavar as mãos”.
  • Terminar a biblioteca de leitura de código de barras – 15/04/2007 – abortar o projeto de software para pesquisa de preço em supermercados feito em Python for S60.
  • Terminar de escanear as revistas Micro Sistemas para doá-las para um colecionador interesado (já escolhi o beneficiário) – 15/06/2007 – enviar as revistas sem escaneá-las mesmo.
  • Migrar o PythonBrasil para uma nova versão de moin e implantar novo leiaute – 1/2/2007 – lançar o “desafio” na lista e ver se alguém se oferece para realizar essa tarefa.

Existem alguns outros projetos pessoais além desses mas eles tem prioridade muito baixa ou são pessoais demais para constar aqui no blog. De qualquer maneira estou com uma lista parecida com essa em mãos onde ficarão anotados esses projetos.