[Comecei este post várias semanas atrás. Entre revisar, acentuar (escrevi originalmente sem acentos) e enrolar, acabou demorando mais do que eu imaginava. Resolvi, então, postar de uma vez. Quaisquer inconsistências são culpa da pressa e de medicação forte :)]
Uma das minhas primeiras linguagens de programação foi Perl. A primeira, descontando Logo (que aprendi por volta dos 10 anos, acho, e que, no final das contas, só fazia você mover uma tartaruguinha pra lá e pra cá), foi C, que aprendi com um livro emprestado de um amigo da minha mãe. Aliás, me arrependo até hoje de não ter ido atrás de aprender Basic, quando eu devia ter uns 8 ou 9 anos e meu pai sugeriu, vendo meu interesse no TK3000 que ele tinha. Não pela linguagem em si, mas eu teria começado a programar mais cedo, e provavelmente já iria direto pra Ciência da Computação. Por outro lado, por mais que tenha havido percalços, aprendi muito no meu tempo da Física. Mas isso é assunto pra outro post (que provavelmente nunca será escrito - mas isto também é assunto pra outro post!).
Mas estou divagando. Aprendi C por gosto, no comecinho do meu curso de Física, antes de ter uma matéria a respeito na faculdade (e aprendi bem o bastante para fazer o que eu achava, na época, que eram excelentes EPs, ou exercícios-programa). Eu programava pra me divertir, ficava ansioso pra ver se o programa realmente fazia o que eu achava que ele fazia, e perdia muitas noites de sono tentando encontrar e solucionar bugs (em certa época, esse número de noites passou a ser tão grande que marcou o começo do meu abandono da Física).
Flertei rapidamente com Delphi, quando comecei uma iniciação científica no final do primeiro ano de faculdade. A iniciação era na Física, mas meu projeto era relacionado a computação (um sistema de armazenamento de dados), e, na prática, eu era orientado por um mestrando da professora que era, oficialmente, minha orientadora. Ele tambem era programador e programava muito bem em Delphi. Aprendi bastante com ele, mas a verdade é que Delphi nunca me cativou. Sendo já um adepto de C (até hoje tenho saudade e vontade de usá-la em algum projeto), eu não gostava da sintaxe derivada do Pascal, e nunca gostei de ter a interface gráfica acoplada à linguagem (o que, curiosamente, é difícil de explicar pra quem nunca programou). Aprendi muito sobre conceitos de programação, nesta epoca, mas acabei não retendo praticamente nada da linguagem.
Em seguida, aprendi Perl. Junto com a iniciação científica eu havia dado um grande salto no meu aprendizado de Linux, e a distribuição que eu passei a usar (e continuo usando, até hoje) era (e continua sendo, até hoje) fortemente baseada em Perl, e a linguagem comecou a me chamar a atenção. Lá pelo meio de 1997 fui fazer um estágio no CCE da USP, programando Perl, onde tive acesso à primeira edição do “Camel Book“, livro do Larry Wall (criador da linguagem). Este livro mudou completamente minha noção de programação, e mesmo de computação. Ou melhor, o Larry Wall mudou, neste livro e pelo que li e ouvi dele desde entao. Mas o livro, em particular, já provocou uma revolução na minha cabeca. O prefácio dizia (tradução minha): “Para aqueles que meramente gostam de Perl, ela é a Linguagem Prática Para Extração e Relatórios (’Practical Extraction and Report Language’). Para aqueles que a amam, é a Listadora [sic] de Bobagens Patologicamente Eclética (’Pathologically Ecletic Rubish Lister’)”. E, algumas páginas adiante, pela primeira vez eu lia “Há Mais de Um Jeito de Fazer (’There’s More Than Onde Way To Do It’, ou TIMTOWTDI)”, o slogan do Perl. Perfeito. Uma linguagem de programação bem-humorada, que se esforça pra entender o que você quer dizer. Que se adapta, de acordo com o contexto, ao que faz mais sentido, ali. Em que se pode escrever poesia, inclusive poesia concreta. Enfim, uma linguagem que trata programação não como um ofício, ou como engenharia, mas como uma forma de expressão. Até hoje digo que, pra mim, programar é um processo criativo semelhante a escrever um texto (mas suspeito que dou menos sono aos leitores dos meus programas), e Perl incorporava exatamente isto.
Bom, daí em diante programei Perl por muito tempo. No estágio do CCE, no estágio seguinte (no provedor de acesso de um amigo meu), no meu primeiro emprego de verdade (montar a infra-estrutura do que viria a ser um provedor de acesso
de banda-larga) e em uma série de “frilas”. Nesse meio tempo, aprendi PHP, cheguei a usá-la para alguns projetos, mas nunca gostei da linguagem. A premissa de embutir programação no HTML (ou vice-versa) já me parecia ruim na época, e hoje considero quase uma heresia. Funciona pra meia dúzia de páginas, mas para mais do que isso vira um pesadelo. É claro, você sempre pode usar templates, fazer os programas separados, mas para isso você não precisa de PHP, use uma linguagem que já parte deste pressuposto. Aprendi também, na faculdade, um pouquinho de C++ (mas nunca fui mais a fundo, ainda quero aprender direito) e até Fortran, uma linguagem que, a saber, atualmente só é usada na própria Fisica (e, por conseqüência, na Engenharia). Aliás, Fortran tinha algumas características meio bizarras, para o meu entendimento àquela altura, como passar dados por referências, ou dar importância a indentação. Irônico estranhar isto, na época, e programar hoje em uma linguagem com características semelhantes (estou sendo obviamente sarcástico, Python não tem semelhança alguma com Fortran).
Em 2000 fui para a Conectiva e, apesar do que eles constantemente me prometiam, nunca pude oficialmente programar, lá, mas continuei usando Perl fortemente para projetos pessoais, e mesmo programando informalmente dentro da empresa. Na época tive meu primeiro contato com Python, mas me pareceu uma linguagem esquisita, restritiva, quando o que me atraia à programação era justamente a liberdade. Por volta dessa época tive meu contato mais sério com Java, que foi utilizada numa matéria que cursei no IME (enquanto eu ainda tentava conciliar a Conectiva, a faculdade e minha falta de organização e de maturidade). Não achei Java de todo ruim, mas parecia meio burocrática demais, meio “trambolhosa”, assim por dizer. Ao contrário do que possa parecer, já que brinco sobre isso com freqüência, não odeio Java, só não vejo muitas vantagens nela. No Senac há um viés forte de Java, então recentemente aproveitei pra conhecer melhor, mas “Quanto más conozco al Java, más quiero a mi Python”.
Saindo da Conectiva, no meio de 2002, minha vida ficou em um limbo, com problemas particulares tomando boa parte de, digamos, o ano seguinte, e isso se extendeu à programação. Não consigo pensar em nada que tenha feito, na área, durante este período (e consigo pensar em várias coisas ruins que fiz, fora da área). Mas, se eu fiz algo, muito provavelmente foi em Perl :)
E, finalmente, chegamos ao final de 2003, começo de 2004, quando, após muita insistência do Leo (e muita implicência minha em retribuição), comecei a aprender Python. Eu já havia ensaiado dar uma olhada na linguagem uma ou duas vezes, além da que citei aqui, mas nunca havia parado pra prestar atenção. Inventei um projeto (o zzbot) e fui programar. Muitas das críticas que eu tinha deixaram de ser problemas logo nos primeiros dias de programação. Algumas persistem até hoje. Mas o fato é que Python facilita muito a organização de idéias. É uma linguagem orientada ao problema, não à própria linguagem (como, por exemplo, C ou Java, em que você passa boa parte do tempo tentando descobrir “como esta linguagem faz isto?”, ao invés de “como eu resolvo o problema que tenho em mãos?”). É realmente uma linguagem de fácil leitura, e qualquer programador previamente organizado não tem maiores problemas com a indentação forçada, já que deveria ser uma atitude natural pra começo de conversa. E, na minha opinião, é sem dúvida a melhor linguagem para ensino de programação que conheço. Acabei fazendo também em Python um projeto pra faculdade que eu havia originalmente pensado fazer em Perl, sob a racionalização (correta, acho) de que o professor, não conhecendo nenhuma das duas, teria mais facilidade de entender Python. Deste projeto surgiu meu trabalho de conclusão de curso, que, portanto, também vai herdar a linguagem. Hoje em dia, sou oficialmente um programador Python profissional. Adotei a linguagem, e quando penso em um problema já comeco a pensar nela para a solução, inclusive para soluções que eu já havia parcialmente desenvolvido em Perl.
Agora, até hoje não consegui superar a sensação de que Python é uma linguagem muito “certinha”. O que é ótimo para soluções “limpas”, corporativas ou científicas. Mas não necessariamente para expressões artísticas. Bom, muita gente argumentaria que linguagens de programação *não* são para expressão artística, são para *programar*, e programas deve ser eficientes, legíveis e corretos (não necessariamente nesta ordem de importância). Não discuto, devem mesmo. Mas acho que isto eh só uma faceta de programação. É a faceta “desenvolvimento de software”. Uma coisa séria, com teorias, estudos, Ciência da Computação. Mas, além de cientista da computação (que só serei, na verdade, no ano que vem), sou também programador, hacker, fuçador. E, nesta persona, eu gosto de me expressar escrevendo programas. Gosto de ter mais de uma forma de fazer as coisas (contra o mantra de Python que diz só haver uma forma óbvia de fazer). Acho que explícito é melhor que implícito, mas acho que há beleza no implícito. Acho fantástico que haja concursos de poesia em Perl. E acho sintomático que uma comunidade tenha uma lista de discussão chamada “Fun With Perl” enquanto a outra tenha um site chamado “Python Challenge“.
Já faz algum tempo que não programo em Perl. Minha última tentativa foi um programinha que fiz às pressas, ficou feio, remendado, certamente cheio de bugs. Já me peguei dezenas de vezes pensando em reescrevê-lo em Python (ou, mais ainda, em Plone, já que o programa é para acesso via web). E leio cada vez menos a lista de discussão de Perl, enquanto participo mais e mais ativamente da lista, do canal de irc e da comunidade Python de modo geral (eu ia inclusive fazer uma palestra sobre Python e Aprendizado Computacional, no Conisli, mas precisei cancelar de última hora por imprevistos no trabalho). Mas ninguém ainda na comunidade Python conseguiu (nem vai conseguir) desbancar o Larry Wall, que consegue fazer uma palestra sobre o estado do Perl falando de agentes secretos, que sutilmente encaixou um “All Your Code Are Belong To Us” em uma palestra para um público mal selecionado, no FISL de uns anos atrás, que coloca “P+++++(–)$” em seu Geek Code, e que me ensinou que programadores devem ser preguiçosos, impacientes, orgulhosos e criativos.