Ronaldo
Ronaldo Desenvolvedor, pai, cidadão do mundo.

Aprender a programar não é tão simples assim

Muita gente vende a ideia que é fácil. E essa ideia torna-se uma frustração.

Aprender a programar não é tão simples assim

Hoje em dia vivemos uma onda onde todo mundo tem uma ideia genial e todo mundo quer sair criando um aplicativo ou serviço para dar suporte a esta ideia genial. É uma coqueluche de startups, que me lembra um pouco os anos 2000, quando todo mundo queria ter um site que vendesse alguma coisa — a coqueluche das ponto-com.

E muita gente vende a ideia de que programar é fácil, bastando ler um livro ou fazer um curso. Não é bem assim. Programar não é fácil. Eu aprendi a programar em outra época, lá pelos idos de 1984. A linguagem popular da época era o BASIC. Todo mundo fazia curso de BASIC e, depois, de COBOL. Era o que tinha.

BASIC não foi fácil de aprender. Penei. Tive de ler livros, estudar muito para poder escrever um programa que fizesse algo útil. Ao contrário do que se imagina, BASIC é uma linguagem muito simples. Os programas são procedurais e há um suporte muito rudimentar para sub-rotinas. Programas grandes são difíceis de manter. Complicadíssimos por conta das limitações da linguagem. Porém, as linguagens modernas são mais sofisticadas e cheias de abstrações que na época não existiam.

Ou seja, hoje em dia é mais complicado aprender a programar do que há alguns anos atrás. Por mais que as linguagens tenham se desenvolvido, aumentou-se, e muito, a quantidade de abstrações, o que torna a curva de aprendizado ainda mais complicada.

Pegue, por exemplo, Python. Python é uma linguagem de uma beleza única: os blocos de código são criados por níveis de identação. A sintaxe é simples e muito direta. Porém, é orientada ao objeto, tem amplo suporte a modularização e permite a criação de namespaces bem limpos e concisos. Mas, veja: as principais vantagens da linguagem são, também, suas principais desvantagens para o aprendizado de quem nunca teve contato com programação. São vários níveis de abstração que tornam a linguagem complexa para quem está aprendendo.

Apesar de tomar o Python como exemplo, ela não está sozinha: java, C++, C, Swift, Objective C e outras linguagens sofrem do mesmo problema.

O fato é que a computação, em si, trabalha com abstrações. Ou seja, é preciso desenvolver-se o raciocínio abstrato para que se possa escrever programas concisos, objetivos, eficazes e eficientes. Tudo termina em um modelo abstrato que é exercitado matematicamente por um computador, dando como resultado dados em um banco de dados ou em um relatório, ou mesmo na tela de um smartphone.

A questão aqui não é a linguagem de programação, mas o que vem antes. Aprender a programar não é aprender uma linguagem de programação. Na verdade, é aprender a gerar conceitos abstratos à partir de fatos concretos, criar modelos destes conceitos e exercitá-los através de simulacros escritos em uma determinada linguagem de programação. O exercício destes modelos são os programas que controlam nossas casas, nossa conta bancária. Todos simulacros de conceitos que foram abstraídos de fatos do mundo real, com a intenção de automatizar tarefas enfadonhas.

Note, não é meu objetivo desanimar você que quer aprender a programar, mas alertá-lo que não basta aprender uma mera linguagem de programação. Eu costumo dizer, enfaticamente, e normalmente causando alguma polêmica, que a linguagem de programação é a coisa menos importante para o programador. O mais importante é o pensamento abstrato, a capacidade de criar e exercitar abstrações para, só então, descrevê-las na forma de um programa escrito numa linguagem arbitrária.

Eu aprendi a programar em 1984. E programo profissionalmente desde 1994. O computador é a coisa mais legal que já inventaram. Se você quer aprender a programar, não se prenda à linguagem. Tem mais coisa a aprender: algoritmos, estruturas de dados, metodologias de desenvolvimento, paradigmas de programação, e por aí vai. É muita coisa. Eu continuo estudando desde então, ininterruptamente. Mesmo o conhecimento básico é muito amplo. Ainda hoje estudo algoritmos, e me pego voltando a conceitos básicos.

Mas é um mundo tão abrangente, tão ilimitado que vale a pena o esforço.