Archive for the 'Garoto de programa!' Category

Tá tudo muito fácil, alguma coisa tá errada…

Posted in Garoto de programa! on December 2nd, 2006

Isto (o título) foi o que acabei de ouvir aqui no trabalho, para onde vim às 7:30 da manhã acompanhar a execução de uns scripts que fiz como parte de uma migração.

Agora não sei se fico feliz por estar tudo muito fácil ou se já começa a me desesperar porque alguma coisa está errada (e nós nem sabemos ainda o que é)…

Talvez eu esteja no lugar errado…

Posted in Garoto de programa!, Run to the hills! on November 16th, 2006

Acho que meus ~3 persistentes leitores não conhecem o “Joel On Software“. É um blog em que um sujeito chamado Joel fala sobre software (surpreendente, não?).

Bom, ele tem opiniões interessantes e, apesar de eu não concordar com tudo o que ele fala, a leitura sempre vale a pena. Em particular, como programador e dono de uma empresa de software (uma combinação nem sempre funciona, mas parece estar indo bem no caso do Joel), ele tem uma visão naturalmente bastante voltada para o desenvolvedor e de como deve ser um ambiente de trabalho que o favoreça.

O último post do blog fala sobre subversões do conceito de desenvolvimento ágil, mas o que me chamou atenção foi o seguinte (tradução e links meus):


(…) Programadores Ganham Bastante. O motivo por que eles recebem cadeiras Aeron, M&Ms ilimitados, almoços gratuitos na empresa e os computadores animais com monitores LCD de 30 polegadas é para que eles possam lidar com novos bugs que a Microsoft introduziu no código deles ao estragar uma DLL que costumava funcionar.

Sem entrar no mérito específico dos bugs introduzidos pela Microsoft, a mensagem é: programação é um trabalho criativo; é um trabalho difícil; (assumindo que voce tem uma boa equipe, ) mime seus programadores e eles te darão bons resultados.

Atualmente, estou proibido (literalmente) de usar Linux (embora me tivesse sido dito que eu poderia usar, quando recebi a proposta); mesmo no Windows que preciso usar, não posso ter acesso de administrador, ou mesmo usar o Firefox; tem um livro de Java apoiando meu monitor de 15 polegadas; tendo sido contratado para desenvolver C/C++, estou há quase um ano (desde que vim para meu emprego atual) fazendo scripts Perl para resolver problemas de dados inconsistentes. Não vou entrar em mais detalhes porque este texto é público. Mas acho que dá pra ter uma idéia de onde quero chegar: atualmente, tenho de lutar contra a empresa para fazer o que ela me paga (”não bastante”) para fazer. Os entraves à minha produtividade são praticamente todos ativamente impostos por quem cobra que eu seja produtivo.

Será que nenhum dono de empresa por aqui lê o blog do Joel??

We apologize for the inconvenience…

Posted in Garoto de programa! on May 26th, 2006

Por motivos de TCC maior, este blog está atemporalmente suspenso. A falta de atualizações voltará ao normal assim que possível.

Obrigado.

Malditos spammers…

Posted in Garoto de programa! on February 2nd, 2006

Pô, eu tenho um puta trabalho (vá lá, não foi tanto assim) pra colocar um princípio de anti-spam nesse blog (e nos outros do cybershark), e não aparece nenhum spammerzinho pra eu testar… Droga…

Coisas que fazem você repensar a carreira…

Posted in Garoto de programa! on November 16th, 2005

… Ou, pelo menos, como pretendia se profissionalizar nela:

Meet the IT Gigolo O sujeito colocou um anúncio dizendo “Conserto computadores por favores sexuais”. E, segundo o visionário, tem dado resultado! E eu, aqui, trabalhando pra cacete, quando poderia estar trabalhando *por* ele!

Patologicamente eclético

Posted in Garoto de programa! on November 10th, 2005

[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.

Metablogger

Posted in Garoto de programa! on August 12th, 2005

Desde que comecei a trabalhar, fico reclamando (para mim mesmo e para outros pobres infelizes que me perguntam a respeito) que não tenho tempo de escrever mais para o blog. Tenho um arquivo texto, no micro, em que vou escrevendo idéias para posts e, conforme tenho tempo e inspiração, vou terminando e postando. Este arquivo, atualmente, deve ter uns 10 começos de posts.

E, no entanto, outro dia fiquei até as 3 da manhã programando para achar o jeito mais prático, flexível e elegante de listar blogs e seus últimos posts na página de índices de blogs do cybershark.

Malditos geeks…

Thank you for your application

Posted in Garoto de programa! on June 26th, 2005

Dear rbp,

Thank you for taking the time to apply for Google’s Summer of Code program. We received a lot of interesting applications, but we are only able to fund a limited number. Unfortunately, yours was not one of the finalists.

Please keep up the good work, and we hope to connect with you in the future!

Best regards,
The Summer of Code team

Grunfles…

Sobre Python

Posted in Garoto de programa! on May 27th, 2005

Bem, este post era pra falar sobre o PyConDay Brasil (renomeado pra “PyCon”, pro ano que vem), um evento sobre Python que aconteceu nos dias 28 e 29 de Abril, no Centro de Computação
da Unicamp. Mas acabei enrolando pra terminar de escrever e agora a coisa meio que perdeu o sentido. Então fica só a introdução que escrevi, comentando sobre Python:

Para os não-geeks (ou os que ainda não descobriram que são), Python é uma linguagem de programação. Segundo seu criador, o nome é uma homenagem ao Monty Python. Só isso já deveria ser motivo o bastante para qualquer um (bem, qualquer um que tenha algum interesse ou necessidade em programação - mas leia mais abaixo) ir dar uma olhada na linguagem. Mas, fora isso, ela tem algumas características, principalmente relacionadas a clareza e certa rigidez de expressão, que a tornam uma excelente primeira linguagem (e, sem dúvida, uma excelente linguagem em qualquer ponto, mas tem um atrativo especial para quem está aprendendo a programar). Tenho alguns poréns com ela e com alguns aspectos externos à linguagem em si (como sua documentação, por exemplo), mas tenho usado com freqüência (zzbot, nnebs etc) e estou cada vez mais convencido de que, das linguagens que conheço, ela é a mais adequada para ensino de programação, pois sua sintaxe e organização visual se intrometem pouco entre o aluno e a lógica do programa.

Como ilustração, um dos palestrantes do PyConDay era um doutorando em Biologia, que precisava de um software para fazer algumas manipulações e análises em dados biomoleculares. As opções existentes ou eram muito simples e incompletas, ou completas mas muito complicadas. Ele nunca havia programado antes, não é da área de computação. Aprendeu Python e fez
um belíssimo programa, o MPAlign, usando o PyGTK (uma das possibilidades de se fazer um programa com interface gráfica). Ficamos todos muito impressionados!

Tenho planos malignos de dar um micro-curso de programação em Python para os meus amigos não programadores que estiverem interessados. Vamos ver quando vou conseguir colocar isto em prática :)

Bem, é isso. O post ficou com uma cara meio incompleta, né? É que não era mesmo pra ser sobre isso :P

Entrão!

Posted in Garoto de programa! on May 12th, 2005

Caramba, eu sou mesmo muito entrão (ou, como diz o daniduc, “cocky newbie”). Caso em questão: entrei na lista de discussão de Python há mais ou menos um mês. Uso a linguagem tem mais ou menos um ano. Não é lá muita coisa. Bem, já estou numa “discussão” (amigável) com o Niemeyer (da Conectiva, que é do grupo de core developers de Python) sobre um comportamento que considero inconsistente na linguagem.

Como também diz o daniduc (caramba, como fala!), um dia eu ainda morro disso (bem, não é exatamente a isso que ele se refere, mas a eu saber ser conscientemente irritante). Não vai ser desta vez, o Niemeyer é um cara legal e paciente, mas, um dia… :)