É bastante provável que as pessoas que costumam ler esse blog já conheçam as minhas opiniões sobre o uso de Python no ensino de programação de computadores para alunos do ensino superior, mas como provavelmente eu nunca comentei nada por aqui, resolvi escrever este artigo.
Atualmente estou fazendo faculdade e tudo indica que dessa vez eu consigo terminá-la (diferente das outras 2e+35 tentativas anteriores). É uma faculdade daquelas formam “tecnólogos” em um curto espaço de tempo e essa me garante o direito de fazer uma pós-graduação stricto ou latu senso. Ainda estou no primeiro semestre e em minhas aulas de algorítmos tenho implementado alguns programinhas em “Portugol”.
A minha opinião sobre o uso de “Portugol” no primeiro semestre de um curso voltado para o desenvolvimento de software é -0, ou seja, não acho bom nem ruim, mas se usassem uma linguagem ‘de verdade’ tornaria o aprendizado um pouco mais divertido.
Portugol é legal quando o professor não disponibiliza um interpretador real da linguagem pois faz com que o aluno exercite a leitura de código e o entendimento do mesmo (o velho conhecido Teste de Mesa). O problema é que 6 meses de programação sem observar o efeito real dos programas não me parece ser muito ‘estimulante’.
Mas o foco desse artigo não é muito no primeiro semestre e no portugol. O foco deste artigo é mais adiante no curso onde estudaremos Delphi (como linguagem OO e orientada a eventos), Java (porque o mercado exige) e alguma linguagem estruturada que provavelmente será Pascal ou C (já que vi compiladores das duas linguagens nos laboratórios).
Em um passado não muito distante eu achava que os alunos deveriam aprender apenas Python por ser uma linguagem que aglutina vários paradigmas de programação (estruturado, OO e funcional). Usando apenas Python o professor “perderia” tempo para explicar a sintaxe de uma linguagem apenas uma única vez e, com isso, sobraria mais tempo para ele explicar esses diversos paradigmas.
A minha opinião só mudou (um pouco) após uma conversa com o Gustavo Niemeyer, enquanto voltávamos da I PyCon Brasil, onde ele me disse: “Um programador precisa saber como um computador funciona, como se aloca memória, como os dados são representados pelas máquinas. E esse tipo de coisa ele aprende se tiver que programar em C”. Fui obrigado a concordar com ele e, hoje, no meu trabalho vejo que isso realmente é muito importante. Esse tipo de coisa também pode ser aprendido programando-se em Assembly, mas todos sabemos que os professores não costumam dispor te tempo infinito para ensinar os alunos então C seria um meio-termo mais prático para eles (até por ser uma linguagem multiplataforma e algumas universidades terem acesso à diversas plataformas).
Depois de ter discutido isso com ele eu acho que cheguei à uma opinião menos extremada onde Python seria ensinada nos primeiros semestres (iniciando preferencialmente pelo paradigma OO) e um período de um ou dois semestres no final do curso serviriam para um intensivão de linguagem C.
Eu acho que o paradigma OO deve ser o primeiro a ser ensinado porque ele é mapeado de maneira muito simples ao mundo real que é comum à todos os egressos de um curso de programação. As pessoas sabem o que é um carro, um avião, um barco quando chegam à faculdade mas muito poucos alunos sabem separar dados e informações das ações que agem sobre estes. Mas essa opinião ainda não está escrita em pedra na minha cabeça porque ainda não tive acesso a resultados de estudos que comprovam que é mais fácil ensinar o paradigma OO ao estruturado. Isso é apenas uma intuição que tenho por ter achado muito difícil a minha migração do paradigma estruturado para o paradigma OO. Talvez o caminho inverso seja mais tranquilo.