Tome as rédeas: aprenda a programar

178384326_536e7aa755_z

Eu me lembro que a primeira aula que eu tive de programação foi quando entrei na faculdade, logo no primeiro ano de engenharia. A disciplina estranhamente se chamava Processamento de Dados, mas eu não lembro de ter processado nenhum dado na mesma. O principal método de avaliação na matéria eram provas que, por algum motivo razoável que eu falho em encontrar, eram feitas à mão, no papel. Sem computador. Elas levavam horas sem fim para terminar, e erros eram difíceis de se corrigir. Eu fui informado que a situação não mudou muito: os professores do curso de ciência da computação na faculdade ainda usam essa mesma metodologia. Atualmente, acredito que nenhum dos meus aproximadamente 30 ex-colegas de curso saibam fazer um programa que escreva “Hello world” na tela.

Recentemente também fui informado que o curso de física da minha faculdade mantém uma disciplina parecida, em que aos alunos são ministrados os fundamentos de programação em C. O coordenador do curso sugeriu que houvesse uma disciplina de física computacional, mais aplicada, ao invés da original, mas os professores mais conservadores vetaram a ideia, argumentando que os alunos de física deveriam aprender a lógica, a “maneira de se pensar” em programação.

Bom, toda essa história foi para introduzir uma ideia que eu quero passar para todos os jovens, estudantes e principalmente aspirantes a ciência: aprenda a programar. Mas eu quero dizer um aprendizado real, não essa bobagem e perda de tempo que é ensinada em muitas faculdades do Brasil. Programar é como carpintaria, algo que se aprende botando a mão na massa, cometendo erros, consertando erros de outras pessoas. Programação não é uma filosofia, não é uma maneira de se pensar, e ela não é ensinada de um mestre para os discípulos. Ninguém ensinou Isaac Newton como inventar teoria da gravitação, ou Vincent van Gogh a pintar De sterrennacht (A Noite Estrelada). Tais obras foram frutos de prática constante, determinação e auto-disciplina. Aprender leva tempo.

A programação é uma ferramenta utilizada para controlar essas maravilhosas máquinas que são os computadores. E o melhor de tudo é que qualquer pessoa é capaz de programar, ao contrário do que algumas pessoas pensam e que, pasmem, alguns professores dizem aos seus alunos. Humanos são dotados de uma capacidade de planejamento do futuro e análise do passado que poucos animais possuem, e isso é o fundamento da programação. Não deixe ninguém lhe dizer que você não pode!

Computadores nos dão poder: com eles, podemos realizar desde simples comunicados até simulações de um universo, coisas que fazem parte da mais íntima natureza humana (a expressão e a vontade de descobrir). Cada vez mais, temos nos fundamentado na tecnologia de computadores para fazer rodar as engrenagens do mundo rodar. E por isso, qualquer pessoa que saiba controlar um computador tem em suas mãos um poder extraordinário. E quem não sabe programar está sujeito a se tornar uma máquina, em uma estranha inversão de valores.

Qualquer pessoa pode programar, independe de sexo, idade, opção pessoal ou etnia. Crédito: Crown Copyright, Arron Hoare.

Qualquer pessoa pode programar, independe de sexo, idade, opção pessoal ou etnia. Crédito: Crown Copyright, Arron Hoare.

Como e onde aprender?

Eu temo que não exista uma pílula mágica ou uma saída fácil para o aprendizado. Existem livros e outras publicações pela internet que afirmam poder fazê-lo “aprender a programar em 24 horas” ou algo do tipo. Eu acredito que tais guias possam ser úteis mas, assim como as aulas de faculdade, eles não substituem a prática constante e a auto-disciplina. De fato, eu diria que 95% do pouco que eu sei sobre programação foi aprendido sentado na frente de um computador, fazendo minhas próprias experiências e trocando ideias com outros entusiastas, fora das salas de aula e bibliotecas.

Desde 2012, eu venho estudando programação em Python, uma das línguas mais usadas atualmente por cientistas, engenheiros e profissionais não diretamente ligados a setores de tecnologia da informação. Python é extremamente objetivo e bastante livre de burocracia (diga adeus aos ponteiros!), e os pacotes produzidos por outros usuários o tornam uma linguagem muito versátil. Existem até jogos feitos totalmente em Python. De fato, grandes nomes da indústria de tecnologia usam códigos em Python: Dropbox, Google, Yahoo!, NASA e Autodesk são alguns deles.

Para os não-iniciados, eu acho que partir diretamente para a documentação do Python pode ser um pouco assustador. Por isso eu recomendo começar por tutoriais e guias de iniciantes pela internet. Felizmente, a maioria deles estão em inglês, então esta é uma oportunidade para praticar a língua mais falada do mundo, e abrir ainda mais portas de aprendizado. Minha iniciação com Python foi pelo guia Learn Python the hard way, onde eu aprendi os básicos da linguagem através de programas bastante simples e interessantes. Curiosamente, até hoje eu tenho a página nos meus favoritos para fazer eventuais consultas a exemplos básicos. Posteriormente, decidi me especializar mais em aplicações à ciência, por isso comprei o livro Computational Physics with Python (infelizmente, acho que não é vendido no Brasil: deve ser importado).

Outros tutoriais podem ser encontrados pela internet: Aprenda Python (em português), Software Carpentry, Codeacademy (com a vantagem de ser mais interativo), um curso do MIT no edX. Escolha o tutorial que for mais interessante para você, e vá até o fim. As dúvidas de muitos usuários provavelmente já estão respondidas no Stack Exchange, uma das fontes de informação que eu mais consulto no meu trabalho. E claro, a documentação do Python é a fonte mais confiável para informações técnicas sobre a linguagem, e lá também tem um tutorial, só que eu recomendo para usuários mais experientes com programação.

Entre as bibliotecas mais usadas por programadores em Python se encontram:

  • SciPy: álgebra linear, equações diferenciais, processamento de sinais etc.
  • NumPy: arranjos (arrays) matemáticos
  • SimPy: matemática simbólica
  • Matplotlib: plotagem de gráficos
  • Pandas: análise de dados
  • Cython: otimização de códigos usando linguagem C

Também existem pacotes para ciências específicas, como:

  • scikit-Learn: aprendizado de máquina
  • Biopython: bioinformática
  • PsychoPy: psicologia (!) e neurociência
  • Astropy: astronomia

Uma outra ferramenta muito útil também é o IPython notebook, usado para construir cadernos com blocos de códigos executáveis e inserir comentários, imagens, equações em LaTeX e outros apêndices. Esses cadernos podem, por exemplo, ser compartilhados para outras pessoas que por sua vez poderão ver explicações sobre o que exatamente é feito no código, o que facilita a comunicação e o aprendizado. Eu mesmo pretendo começar a utilizar o IPython notebook para publicar alguns dos meus códigos na internet, ao invés do GitHub, cujo caráter mais espartano pode ser meio assustador para iniciantes.

Pratique diariamente

Atualmente, eu ainda me considero um iniciante em programação. Meus códigos são bastante rudimentares e têm aplicação muito limitada. Mas eu estou nessa pela viagem. Adquirir maestria em um ofício é algo que leva muitos anos. E é por isso que eu lhe recomendo de praticar programação diariamente, nem que seja apenas uma linha de código. Torne a prática divertida: faça coisas que lhe interessam, trabalhe em um projeto pessoal, de longo prazo, algo que você faça apenas pelo prazer de fazer.

Eu me lembro de ter lido em um livro que o aprendizado costuma acontecer de uma maneira bastante peculiar: ele é constituído de patamares. No início, há um notável crescimento que nos dá energia e motivação para continuar, até atingirmos um patamar. A partir dele, a prática constante e diligente não renderá frutos instantaneamente, e podemos nos sentir estagnados. Os patamares podem ser longos e às vezes frustrantes, mas cedo ou tarde há um novo momento de crescimento rápido e notável, que será seguido de um novo patamar. O fato é que se sentir estagnados pode nos desestimular à prática diligente, e por isso devemos aprender a gostar do patamar. Por isso que eu digo para trabalhar em coisas que lhe interessam e sejam minimamente divertidas. Tudo isso vale para programação e também para a carreira em ciência, penso eu. Certamente você já deve ter visto algum filme em que o aprendiz de samurai deve subir a montanha carregando baldes de água nas costas diariamente, e acho que é uma boa analogia para os patamares: a prática constante que leva à maestria; mas claro, em uma visão mais romântica.

O aprendizado começa quando você decidir tomar as rédeas sobre o seu computador e não querer ser mais a máquina. Aprenda a programar!


Imagem em destaque: No, this is not, por Marta Manso no flickr

Obs.: este é o repost de um antigo blog que eu tinha e que agora está desativado. O post foi originalmente escrito em 11 janeiro 2015.

Anúncios

Fique à vontade para comentar, aqui não há certo ou errado, nem censura de ideias. Mas, por favor, seja claro e, acima de tudo, use pontuação. Comentários ininteligíveis ou ofensivos não serão publicados.

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s