2008/12/09


Exemplo de laço complicado

Eu sou um defensor da instrução GOTO, acho que as pessoas devem pelo menos aprender como funciona quando tão na escola. Já escrevi muito por aqui a respeito do GOTO, e do preconceito sem noção, etc.

Tudo bem que dá pra resolver qualquer problema com os for e whiles da vida, e os breaks e continues auxiliam, mas não deixa de ficar feio né gente... Não sei se fica menos feio do que usar um GOTO.

Olha esse exemplo aqui de código real que tem um laço complicado. Achei interessante porque vem direto de uma documentação de uma biblioteca, é um programa bem básico, é muito pequeno, e tem um laço bizarro.




lexer = lex.lex()
lexer.input(sometext)
while 1:
tok = lexer.token()
if not tok: break
print tok

Olha só, o sujeito teve que fazer um laço “infinito”, algo sempre chamativo. Aí tem uma atribuição, um teste com break, e um print. O problema é que não dá pra testar o tok de cara, porque é preciso a primeira atribuição. nao dá pra fazer do ... while também porque o print precisa ficar depois do teste. Não tem jeito. O teste teve que ficar no meio desses dois. Aí então faz um “laço infinito com break no meio”. Uma estrutura que não tem nome. Se fosse GOTO, seria simplesmente mais um “laço com um teste”... Pra entender esse programa eu uso mais meus conhecimentos de programação fudamental, sabedora do GOTO, do que as facilidades estruturantes oferecidas pelas estruturas whiles e fors da vida.

Claro que dá pra fazer um jeito do programa ficar mais bonito, e o verdadeiro teste que limita o laço ficar na declaração do while. Tipo:




lexer = lex.lex()
lexer.input(sometext)
tok = lexer.token()
while tok:
print tok
tok = lexer.token()

Deve até poder ficar melhor com for. Mas algo levou esse programador a optar por uma única linha de atribuição, e um break, achou que talvez isso fosse mais claro, mais simples, mais de acordo com as famosas “limitações de suas habilidades cognitivas” que preocupavam Dijkstra. Eu pergunto: Será que estamos satisfeitos com nossas linguagens?...


Listinha de presentes

É sempre bom manter atualizada uma listinha de presentes que eu gostaria de ganhar, pra se alguém resolver assim, de repente, comprar alguma coisa pra mim. É uma ferramenta importante de auto-conhecimento também, fazer uma lsitinha dessas, que não é muito diferente de escrever uma carta pro Papai Noel não é mesmo?...

Aí vai então:

  • Livros da Amazon ou Livraria Cultura, tenho wishlists enormes lá que atualizo de quando em vez.
  • Chaverinho de 10 reais do multi-coisas, com uma tirinha de couro e clipe pra prender no cinto e aro grande.
  • Camiseta do Sepultura (a velha, de verdade, preta, com o S vermelho)

Por enquanto só essa miséria, um dia ponho mais coisa...

2008/12/07


O spam do século XX

Poeminha bobo aí que eu pensei outro dia no ônibus. Alguns argumentam que não teria nada de poésico, mas fazer o que, sorte que não sou poeta profissional!



De um lado da rua vem o caminhão de lixo,
Recolhendo.
Do outro o dos correios,
Entregando.