Engenharia naïf 3

Posted by Humberto on maio 14, 2008

– Inaugurando a minha participação no blog –

Sabe aqueles quadros que costumam vender na rua? Esses de feirinha, que são verdadeiros clássicos: casas toscas num gramado, cenários praianos, coisas deste naipe. São parte do que é chamado de arte naïf: obras não necessariamente intelectuais ou acadêmicas. Que podem até ser tecnicamente bem-feitas, mas dificilmente vão transformar seus autores em Van Goghs, mesmo que eles arranquem as próprias orelhas com os dentes.

Lembrei dessas coisas no mês passado, quando eu estava a ponto de precisar desenvolver um parser para uma certa linguagem de programação antiga. O parser seria um pedaço de uma ferramenta que extrai informações sintáticas e estruturais de um programa a partir do seu fonte — coisa que qualquer IDE atual disponibiliza quando se faz refactoring ou checagem de referências e dependências. Mas, como a tal linguagem não tem exatamente um IDE, a ferramenta (e o parser) tem que ser desenvolvidos “do zero”. E lá estava eu estudando as necessidades do meu trabalho.

Em pouco tempo concluí (instintivamente, não objetivamente) que o ideal era construir um mecanismo de parsing genérico, que servisse para qualquer linguagem. Entendi que esse mecanismo era possível de existir, desde que o léxico (sintaxe para definir sintaxes) fosse potente. Foi divertido então definir um léxico que permitisse uma estruturação a la BNF. E de forma bastante ingênua parti para montar um protótipo de parser. Um protótipo que entendesse uma linguagem simples. Um parser de XPath, por exemplo, só pra começar…

Foi aí que eu vi que ainda preciso comer muito arroz e feijão! O fato é que eu nunca precisei fazer um compilador na faculdade (ha!), e portanto não sabia que o buraco é muito mais embaixo. Existe um monte de formas de se construir um parser, uma porção de ferramentas, documentos, exemplos… e eu lá, escavando a pedra pra fazer a roda.

Pra mim foi interessante entender como esses mecanismos funcionam, e também foi bacana ter imaginado alguns algoritmos que, depois vi, são usados no ramo há muito tempo. Mas o ruim da história é ter entrado num caminho arriscado ao criar uma solução duvidosa, por pura ignorância. Nesse episódio eu fui um engenheiro naïf!

A minha “obra” até poderia ser passável tecnicamente, mas sem dúvida eu deixaria uma série de defeitos para trás, que qualquer um mais capacitado iria bater o olho e pensar: mas quem fez esta merda? Que é mais ou menos o que eu penso quando vejo uma ou outra pog alheia…

Seu código se sentiria à vontade na feirinha hippie?

Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

  1. miguelbaldi qua, 14 mai 2008 14:15:00 UTC

    Grande post! Pelo visto teremos grandes revelações literárias por vir. Abraço

  2. Roger Leite qua, 14 mai 2008 14:22:00 UTC

    Tentei fazer um parser esses dias também, segui a mesma trajetória … acabei que no final, guardando o código nas minhas obras naif.

    Belo post !

  3. Tiago Albineli Motta qui, 15 mai 2008 02:42:00 UTC

    Também já dei uma de programador naif criando um compilador simples. No caso a linguagem eu havia criado, bem básica, nos inicios da minha vida nerdiana, quando programava em delphi precisei criar uma linguagenzinha de script para fazer calculos e rodar na aplicação. Foi simples, e hoje se eu olhar o código sem dúvida direi MaQueMerdaEhEssa.com. A notícia boa, é que 7 anos depois, o negócio ainda é usado, funciona direitinho, e felizmente não pediram nenhuma alteração… Se pedirem aí sim vai ser foda.

Comments