Thursday, June 08, 2006

Eu, programador

Gosto de programar, e isso faz de mim um pessimo programador `as vezes. Pois gosto de reinventar a roda, e nao fico satisfeito de usar alguma coisa se nao sei como funciona internamente.

Por exemplo, aos 15,16 anos eu gostava de programar jogos. Mas nunca procurei por APIs ou bibliotecas prontas, ou mesmo um engine pronto. Meu lance era fazer cada funcao no Assembler mesmo, sem choro. Destaco que aos 17 comprei um livrasso, chamado "Zen of Graphics", que versa sobre o tema de fazer rotinas graficas em geral em C trivial, C otimizado e finalmente Assembler. Por isso nao passei no vestibular naquele ano.

Outro exemplo: no trabalho de conclusão de curso do 3o. colegial, era preciso escrever um sisteminha de controle de notas. Enquanto todo mundo fez em clipper e aproveitou a vida, eu fiz em C. Sim. Cheguei a escrever API de banco de dados (com chave e tudo!), controle de formulários (modo texto) e de menus pulldown (ei! estavamos em 1997!!). Um professor admitiu, a contragosto, que não tinha condições de avaliar meu programa por não saber C e deu 10. Outra professora deu 10, sem perceber que eu esqueci de enviar 5 páginas de código (eram 78). A sensação de superioridade intelectual foi boa, mas eu não conheci nenhuma mulher nesse período - não no sentido bíblico.

Não escrevi muitos programas completos na minha vida. Ao iniciar um projeto, por escrever simplesmente tudo do começo eu esbarrava em tantas dificuldades que percebi: só podia começar a programar após fazer minha API completa de graficos 2D, estruturas de dados. Ok. Levei um bom tempo. Depois, o projeto do meu jogo ficou mais complexo, eu queria usar o mouse, abrir janelas. Adivinha? É.... fiz um esquema de componentes visuais em C++. O projeto foi abortado pois achei um bug no GCC e o código não compilava de maneira alguma. Mas eu já havia feito um editor de sprites e um mini-jogo de navinha. Tudo foi perdido no 1o. Grande Crash da HD.

E hoje as coisas não são diferentes. Escrevi meu próprio sistema de montar formulários de edição de tabelas simples e relacionais. Funciona? Funciona. Mas eu não aposto minha mão nisso. Tem n^pi sistemas quase-parecidos que eu podia pegar, melhorar, contribuir com o free software e fazer um serviço melhor. Mas não, eu quis pegar e fazer desde o começo. Pq eu GOSTO!

Claro que essa programança infinita me deu alguma coisa. Não que hoje meu conhecimento sobre algoritmos de fazer círculos em 10 ciclos de clock sejam utilizados diariamente, mas adquiri uma capacidade absurda de debugação. Não imaginam quantas linhas de código eu debuguei na minha vida. Outra coisa. Eu sou bem lerdinho pra aprender, então essa experiência foi necessaria pra eu aprender alguns fatos, como que notação húngara é um pesadelo, que fazer ponteiros void* em C é bico, pegar interrupções do sistema é bem melhor que ficar checando o status o tempo todo, etc.

São fatos bem conhecidos da literatura mas eu sou assim mesmo - lerdo. Hoje em dia eu consigo usar coisas semi-prontas sem me revoltar. Não que alguns dias eu não pense coisas como "hum... vou estudar a sintaxe do arquivo PDF pra gerar meus próprios PDFs", afinal é disso que somos feitos =)

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?