Por que as Universidades Brasileiras Ainda Ensinam Portugol em 2020?

Você está escolhendo uma faculdade de TI e ainda não decidiu qual é o melhor curso?

Ou já começou a faculdade, mas não entende direito porque a disciplina de lógica de programação e algoritmos não ensina logo uma linguagem de programação?

Está em dúvida sobre quando você vai começar a “programar de verdade”?

Se a faculdade onde você vai estudar (ou já estuda) ensina algoritmos usando uma pseudolinguagem chamada Portugol, ou português estruturado, você pode acabar perdendo um semestre inteiro estudando uma coisa que não tem aplicação prática.

Por quê?

Bem, nesse post eu explico em detalhes a minha visão sobre o uso do Portugol no ensino de programação, para que você possa tomar a sua decisão e escolher uma faculdade que não vai desperdiçar o seu tempo e nem o seu dinheiro.

Além disso, eu mostro como transformar o ensino do Portugol em uma oportunidade para você se destacar já no início da sua carreira.

!

Nesse post eu não avalio se o Portugol é bom ou ruim e nem entro em detalhes técnicos além do necessário para justificar os meus argumentos.

Essa é somente a minha opinião sobre a necessidade de se usar o Portugol no ensino de programação hoje em dia.

O que é Portugol?

De acordo com a Wikipedia, o Portugol é uma pseudolinguagem usada para escrever algoritmos em português.

Isso significa que ela não é uma linguagem de verdade, mas um conjunto de instruções que simula o controle de fluxo de um algoritmo.

Na prática, o Portugol se parece com uma tradução simples da linguagem de programação Pascal, com blocos definidos por instruções de início e fim. Por exemplo, Se/FimSe.

A origem do Portugol não é muito clara, já que sua criação é atribuída a dois professores no início dos anos 1980, um português e um brasileiro, mas há relatos de seu uso desde a década de 1970.

Além da pseudolinguagem, ao longo dos anos foram criados interpretadores para o Portugol, como o VisuAlg e o Portugol Studio, permitindo que os alunos “executem” os algoritmos escritos dessa forma.

No entanto, há diversas variações da sintaxe do Portugol entre os diferentes interpretadores.

Em alguns, letras maiúsculas e acentos não são permitidos. Há também diferenças de sintaxe como caso/fimcaso/fim-caso e escolhe/fimescolhe.

Um dos interpretadores mais conhecidos do Portugol é o VisuAlg, mas ele não tem atualizações significativas há muitos anos e parece não ter uma comunidade de desenvolvedores, já que o código fonte não está disponível.

Agora que você já sabe o que é Portugol, talvez esteja com uma dúvida muito comum…

Por que Usar uma Pseudolinguagem para Ensinar Algoritmos?

A culpa é dos alunos. Sempre. Pelo menos é o que parecem afirmar os professores.

Eu pesquisei bastante sobre o motivo de se usar uma pseudolinguagem como o Portugol nas disciplinas de lógica de programação e algoritmos.

Em todos os textos que eu encontrei sobre o assunto, as justificativas são sempre as mesmas:

  • O aluno não entende os conceitos básicos de programação;
  • O aluno não consegue ter um bom rendimento na disciplina e fica desmotivado;
  • O aluno abandona a disciplina e o curso porque não consegue aprender.

Dessa forma, é criada uma barreira cultural folclórica: se o curso aborda uma linguagem de programação desde o início, as dificuldades do aluno causam a desmotivação e a evasão.

Por esse motivo, o Portugol seria uma maneira mais simples de introduzir os conceitos de programação, sem causar um trauma nos alunos.

Mas e a universidade? Será que ela tem alguma culpa se o aluno tem dificuldade para aprender? Será que existem recursos mais modernos do que uma pseudolinguagem introduzida há mais de 40 anos?

Com certeza a tecnologia evoluiu muito desde a criação do Portugol. Os computadores atuais são menores e mais baratos, ou seja, mais acessíveis.

Hoje em dia é possível programar até no celular!

Além disso, as universidades estão equipadas de maneira suficiente para utilizar a tecnologia mais moderna, com laboratórios e acesso à Internet em alta velocidade.

Toda essa evolução criou oportunidades que não existiam 40 anos atrás.

Será que, mesmo assim, não é possível inovar na maneira de ensinar programação nas universidades?

Parece que não. Se o aluno não aprender, a responsabilidade continua sendo somente dele próprio.

Assim, o Portugol continua sendo usado como etapa introdutória no ensino de programação.

Eu não consegui encontrar algum estudo moderno que demonstre que o aluno aprende melhor com Portugol.

E eu estou falando de Ciência de verdade, conduzida com turmas diferentes, de instituições diferentes, testando uma hipótese bem definida, com grupo de controle e aleatoriedade, com dados suficientes para uma conclusão. Não de estudos de caso simples.

Eu nunca vi algum estudo assim. Se você conhece algum, deixe o link aí nos comentários e eu vou ficar muito feliz de aprender uma coisa nova.

O curioso é que, já que os alunos teriam toda essa dificuldade de aprender e isso tornaria o Portugol necessário, a universidade acaba tendo algumas vantagens com essa situação.

A principal delas é a redução da carga de trabalho dos professores na correção dos exercícios.

Parece a tempestade perfeita…

No entanto, para eu não correr o risco de ser injusto nesse ponto, é preciso analisar o contexto do ensino de programação no país no início dos anos 1980.

Contexto Histórico e Geopolítico do Brasil nos Anos 1980

Como eu não sou professor de História e nem quero correr o risco de escrever um texto chato para quem é da área de exatas, vou resumir o máximo possível e contar a história que eu conheço.

Nos anos 1980 eu era um garoto que jogava bola descalço no subúrbio do Rio de Janeiro.

Naquela época, o Brasil vivia os últimos anos do governo militar e a inflação era uma coisa assustadora. O preço de um produto podia dobrar em alguns dias.

Nesse cenário, os microcomputadores eram objetos de luxo no Brasil, disponíveis para poucas pessoas que podiam importar um deles. E esse não era o meu caso…

Enquanto os Estados Unidos dominavam o mercado de tecnologia, com o lançamento de microcomputadores voltados para o consumidor doméstico, como o Apple II em 1977, o IBM PC em 1981 e o Apple IIe em 1983, a indústria nacional reclamava da falta de incentivos para pesquisa e desenvolvimento de tecnologia.

Para piorar, esse “incentivo” à indústria nacional veio em 1984, com a Política Nacional de Informática (PNI).

Algumas ações protecionistas já estavam sendo implantadas desde o início dos anos 1970, mas foi a PNI que estabeleceu em definitivo uma reserva de mercado para as empresas nacionais.

Na prática, isso significava que as empresas estrangeiras não poderiam vender sua tecnologia no Brasil.

Bom para as empresas nacionais, certo?

Errado. Os investimentos em Pesquisa e Desenvolvimento não saíram como previsto. (Mais sobre isso adiante.)

A carência de profissionais especializados, a visão imediatista e a alta carga tributária, que sempre foram realidade no Brasil, levaram as empresas nacionais a usar a PNI para encher o mercado de clones dos equipamentos americanos, criados por engenharia reversa.

Como resultado disso, as empresas nacionais foram acusadas de ignorar as patentes e a propriedade intelectual sobre os produtos copiados, o que levou a uma retaliação comercial pelo governo do presidente americano Ronald Reagan.

Esse método levou o mercado brasileiro para uma situação ainda pior, com tecnologia desatualizada e caríssima, já que o processo de engenharia reversa levava muito tempo e não tinha concorrência.

Afinal, quem iria comprar um microcomputador que só tinha um interpretador BASIC, por um preço equivalente a mais de US$ 2.000,00 em valores atuais?

Talvez só os grandes entusiastas de tecnologia que tivessem muito dinheiro para gastar.

Enquanto isso, as universidades brasileiras usavam os mainframes para apoiar o ensino de programação.

Uma das linguagens de programação usadas no mainframe era o ALGOL, que depois inspirou a sintaxe da linguagem Pascal para microcomputadores.

O nome “Portugol” é uma mistura desses dois nomes com a palavra “Português”.

Mas o uso dessa tecnologia também era caro, já que a universidade tinha que alugar o mainframe no modelo de time-sharing, ou comprar e manter o equipamento em seu Centro de Processamento de Dados (CPD).

Além do custo de manutenção das instalações, isso exigia um quadro de funcionários especializado.

Para piorar, o investimento estatal no ensino tecnológico era instável, tanto em equipamentos, quanto em pessoas.

Lembra que eu falei lá em cima que as empresas não encontravam profissionais formados em número suficiente para Pesquisa e Desenvolvimento?

De onde você acha que o mercado tirava esses profissionais, pagando muito mais?

Das universidades, é claro!

E quanto menos gente especializada tinha para ensinar, menos se formava gente especializada para trabalhar.

Pois é. Parece que faltou visão sistêmica na elaboração de Políticas Públicas…

Por que era importante ter universidades equipadas com tecnologia de ponta para a época?

Porque programar é uma competência que se desenvolve sobre a experiência, mas os mainframes não estavam acessíveis aos alunos pelo tempo necessário ao aprendizado.

Eu lembro de ouvir histórias de colegas de trabalho mais velhos que diziam ter tido só uma hora de aula por semana acessando um mainframe. E isso era para a turma toda.

Aonde eu quero chegar com essa contextualização?

Continue lendo que você vai entender.

A Necessidade da Prática no Ensino de Programação

Ninguém consegue programar no papel.

Talvez você consiga ler um livro sobre programação e escrever algum código no papel, mas você não tem como verificar se ele funciona.

Isso seria como treinar tiro apontando a arma para o alvo e gritando: “PÁ! PÁ! PÁ! PÁ! PÁ!”.

Ou aprender a dirigir em um carro desligado. Quem nunca brincou disso quando era criança?

Se o ensino de programação nos anos 1980 não podia contar com a disponibilidade dos mainframes e muito menos dos microcomputadores, os estudantes não tinham como compilar e executar seus programas.

O resultado disso é que a responsabilidade recaía toda sobre os professores.

Imagine ter que corrigir uma lista de exercícios com 50 algoritmos no papel, como um compilador humano.

Achou difícil?

Então multiplique isso por 60 alunos a cada semestre, ou mais.

E não se esqueça das provas!

Para piorar, cada aluno poderia escrever seu “código” de um jeito diferente, já que a pseudolinguagem era o Português. (Mais sobre isso adiante.)

Por exemplo, se uma questão pedisse ao aluno para escrever um laço de repetição que executasse um bloco de código 10 vezes, algumas possíveis soluções seriam:

Para (contador n de 1 até 10 passo 1) faça Início Bloco de Código Fim ------------------------------------------- para x de 1 a 10: Bloco de Código fim-para ------------------------------------------- para ( seja n igual a 1 ; enquanto n for menor ou igual a 10 ; incremente n de 1 em 1 ) faca Bloco de Codigo fimpara ------------------------------------------- for(cont = 1; cont <= 10; cont++) { // Bloco de Codigo } (A linguagem C foi criada em 1972.)

Que professor daria nota zero para qualquer uma dessas soluções?

Talvez nenhum…

No entanto, a troca de contexto para acompanhar o raciocínio de cada aluno diferente é muito desgastante, para não dizer impossível, para uma quantidade enorme de algoritmos.

Quem já corrigiu provas de matemática sabe que, depois de um tempo vendo a resposta certa escrita da mesma forma, o cérebro cria uma memória visual que facilita o processo.

Mas se cada resposta é diferente, o esforço para corrigir os algoritmos é enorme.

Por isso, na prática, o professor só corrigia as provas.

O próprio aluno fazia o Teste de Mesa para os algoritmos dos exercícios, anotando os valores em cada etapa do processamento, para todas as entradas.

Ou então o professor distribuía uma cópia do gabarito dos exercícios para cada aluno, que comparava o texto com a sua solução. Isso era como conferir um bilhete da mega-sena ou brincar do jogo dos 7 erros.

Com isso, o aluno talvez não entendesse bem o que estava fazendo, já que ele não via o código funcionando, com um resultado sendo apresentado ou um erro acontecendo.

A solução para isso foi a padronização.

A pseudolinguagem Portugol trouxe um conjunto de instruções padronizadas baseadas na linguagem de programação ALGOL.

Assim, se as respostas dos exercícios estivessem certas, elas tendiam a ser muito parecidas ou iguais ao gabarito do professor, facilitando a correção.

E, passados muitos anos, os próprios alunos puderam usar o interpretador do Portugol para rodar os seus algoritmos. Isso desde que tivessem acesso a um microcomputador com Windows, é claro.

Mas isso foi no passado…

Avance 40 anos e as universidades públicas e privadas têm laboratórios de informática e acesso à Internet.

!

É claro que há muitos problemas com universidades públicas sucateadas, mas a maioria tem pelo menos alguns computadores disponíveis o tempo todo para os alunos.

Ainda que os equipamentos estejam desatualizados, é possível rodar pelo menos um compilador na linha de comando para testar um programa.

E se uma universidade tem um curso de computação, mas não dispõe de recursos tecnológicos para apoiar o ensino, isso é um problema de gestão, não de impossibilidade de acesso a esses recursos na atualidade.

Além disso, muitos alunos têm acesso a um computador em casa, ou no ambiente de trabalho.

Na verdade, hoje em dia você pode programar usando qualquer computador que tenha acesso à Internet.

Há vários ambientes online gratuitos que permitem que você execute código em diferentes linguagens de programação.

O Google Colab, por exemplo, é um ambiente online pronto para executar código em Python usando só o navegador. A elaboração do código e todo o processamento são feitos na nuvem.

E ele ainda é integrado ao GitHub, ou seja, nem é preciso salvar os arquivos com código fonte na mesma máquina usada para programar.

Isso significa que o seu ambiente de desenvolvimento está disponível o tempo todo e pode ser acessado de qualquer lugar.

Outra opção é executar código no celular. Pode não ser muito prático, mas é possível.

O app Termux é um ambiente Linux completo e open source que roda em celulares Android. Nele, é possível escrever e executar código em C, Python, JavaScript, Perl e Ruby.

No iPhone também é possível rodar código escrito em Python, usando o app Pythonista.

É claro que ninguém vai desenvolver um sistema inteiro usando um celular, mas isso serve para mostrar como é fácil ter acesso a ferramentas para programar hoje em dia.

Com tantas possibilidades, não existe mais o problema da correção de exercícios e de provas que havia no passado.

As listas de exercícios podem ser disponibilizadas online e o enunciado do problema pode prever um teste unitário no qual o algoritmo deve passar.

Assim, o próprio aluno pode rodar o teste e verificar se a sua solução está correta.

Além disso, os professores não precisam mais tirar todas as dúvidas de forma individual.

Isso porque é possível incluir links nos exercícios que permitem ao aluno explorar cada conceito em recursos online, como fóruns, vídeos no YouTube, apostilas e repositórios de código no GitHub, só para listar alguns.

Então, se hoje em dia os ambientes de desenvolvimento e todas essas facilidades são acessíveis a qualquer aluno no ensino superior, eu volto à pergunta original desse post:

Por que as universidades brasileiras ainda ensinam Portugol?

Bem, há uma outra justificativa muito comum…

O Problema do Inglês

Além de ser acusado de não entender os conceitos de programação, o aluno também seria culpado por não saber falar a língua na qual são escritas as linguagens de programação.

Em uma entrevista para o site InfoEscola em 2017, um dos professores a quem é atribuída a criação do Portugol em 1980, disse o seguinte:

Detectei, alguns problemas e um deles era o fato de que a maioria das linguagens de programação, “eram ou ainda são” em INGLÊS (…) Muitos brasileiros não gostam muito do inglês e nem dos termos técnicos em inglês e se assustam quando tem que montar o próprio algoritmo “ou um programa de computador” todo em inglês.”(sic)

Pesquisando um pouco mais sobre esse assunto, encontrei fóruns de discussão que parecem reforçar essa visão de que aprender a programar em inglês seria “mais difícil“.

Então, essa suposta dificuldade dos programadores iniciantes com o inglês seria mais uma razão para o uso de uma pseudolinguagem introdutória em português, já que ela facilitaria o entendimento dos conceitos básicos.

No entanto, esse argumento de que a língua é uma barreira não faz sentido, por dois motivos:

A Tradução da Sintaxe de uma Linguagem de Programação é Muito Simples

Uma linguagem de programação tem um conjunto de palavras reservadas para executar as instruções.

Além disso, as instruções mais comuns, que são ensinadas nas aulas introdutórias de algoritmos, costumam ter a mesma sintaxe nas diferentes linguagens.

Então, se o problema é que o aluno não entende algumas palavras em inglês, basta oferecer a ele a tradução dessas palavras.

Para testar essa afirmação, eu criei a tabela abaixo, onde eu listei todas as palavras reservadas das linguagens C, Python, Java e JavaScript, lado a lado.

Depois eu escrevi ao lado de cada uma sua tradução ou significado. As traduções marcadas em cor diferente são as usadas no Portugol.

CPythonJavaJavaScriptTradução ou Significado
  abstract abstrato
 and  e
 as  como
 assertassert afirme
 async  assíncrono
auto   automático
 await awaitaguarde
 Boolean*booleanBoolean*booleano (lógico)
breakbreakbreakbreakinterrompa
  byte byte (8 bits)
case casecasecaso
  catchcatchcapture (exceção)
char char caractere
 classclassclassclasse
const const**constconstante
continuecontinuecontinuecontinuecontinue
   debuggerdepurador
 def  defina (define)
default defaultdefaultpadrão
 del deleteapague
do dodofaça
double double ponto-flutuante
 elif  else + if
elseelseelseelsesenão
enum enumenumenumeração
 except  exceção (exception)
   exportexporte
  extendsextendsestende
extern   externa
 Falsefalsefalsefalso
  final final
 finallyfinallyfinallyfinalmente
floatfloat*float ponto-flutuante (real)
forforforforpara
 from  a partir de
   functionfunção
 global  global
goto goto** vá para
ififififse
  implementsimplementsimplementa
 importimportimportimporte
 in inem
inline   em linha
  instanceofinstanceofinstância de
intint*int inteiro
  interfaceinterfaceinterface
 is  é
 lambda  função anônima
   letdeixe (variável)
long long inteiro longo
  native nativo
  newnewnovo
 nonlocal  não local
 not  não
 Nonenullnullnulo
 or  ou
  packagepackagepacote
 pass  passe
  privateprivateprivado
  protectedprotectedprotegido
  publicpublicpúblico
 raise  levante
register   registrador
restrict   restrinja
returnreturnreturnreturnretorne
short short inteiro curto
signed   com sinal
sizeof   tamanho de
static staticstaticestático
  strictfp ponto-flutuante estrito
struct   estrutura de dados
  supersupersuperclasse
switch switchswitchescolhe
  synchronized sincronizado
  thisthiseste
  throwthrowlance
  throws lança
  transient transitório
 Truetruetrueverdadeiro
 trytrytrytente
typedef   define tipo (alias)
   typeoftipo de
union   união
unsigned   sem sinal
   varvariável
void voidvoidvazio
volatile volatile volátil
whilewhilewhilewhileenquanto
 with withcom
 yield yieldproduza
Tabela 1 – Significado das palavras reservadas em C, Python, Java e JavaScript

* Está presente, mas não é uma palavra reservada.
** É uma palavra reservada, mas não é usada pela linguagem.

A primeira coisa que chama a atenção nessa lista é que o conjunto de palavras usadas em Portugol é muito menor do que as usadas em uma linguagem de programação de verdade.

Isso quer dizer que há muito mais coisas para aprender e muitas outras instruções possíveis de serem usadas em seus programas que não são cobertas pelo Portugol.

Perceba também que, como nenhuma dessas linguagens usa palavras-chave para delimitar um bloco, não há correspondência para as palavras-chave do Portugol início, fim, fimSe, fimEscolhe e fimEnquanto.

Ou seja, você nunca vai usar essas instruções em um programa real nessas linguagens.

Além disso, olhando mais de perto, você vai perceber que muitas dessas palavras são cognatos, como false, return e case, ou seja, são palavras simples de relacionar com suas traduções para o português.

Portanto, se a tradução fosse um problema real, bastaria que os professores elaborassem uma tabela como essa para a linguagem de programação que estivessem ensinando.

Mas e as saídas de erro?

Bem, as exceções geradas pelas linguagens são padronizadas.

Assim, não existe um número enorme delas.

E se isso ainda for um problema, é fácil copiar o texto do erro e usar o Google Translate para entender do que se trata.

Tudo isso leva ao segundo motivo…

Em Algum Momento Será Preciso Programar em Inglês

O problema de programar em português para fugir do inglês é que essa abordagem só adia o inevitável.

Você não pode desenvolver um sistema real usando Portugol.

Isso significa que, em algum momento, você vai passar a programar em uma linguagem de verdade, toda escrita em inglês.

Além disso, aprender a programar em português não vai te salvar de encarar os erros de compilação, de ter que ler a documentação oficial da linguagem ou de ter que pesquisar em fóruns, tudo isso em inglês.

Isso porque programar em Portugol não vai fazer com que você nunca mais cometa um erro quando for escrever código em uma linguagem de programação de verdade.

Portanto, não faz sentido usar esse argumento de que o inglês é uma barreira para o aprendizado de uma linguagem de programação real, como C, Python ou JavaScript.

Mas Afinal, Qual é o Problema de Estudar Portugol?

Talvez você já tenha se convencido de que essa tal “dificuldade” do aluno não é mesmo motivo para ter que estudar Portugol.

Mas a essa altura você pode dizer:

Ok, não tem motivo para estudar Portugol… Mas qual seria o motivo para não estudar, se sempre foi assim em alguns lugares?

Afinal de contas, quanto mais informação, melhor. Não é?

Na verdade, não.

Essa cultura do “Mal, não faz…” representa um atraso para a tecnologia.

Talvez eu consiga te convencer disso com um exemplo bem simples.

Imagine que você quer fazer uma viagem.

Você compara os preços nos sites das companhias aéreas, compra as passagens online, pesquisa as opiniões sobre os hotéis no TripAdvisor e faz uma reserva pelo Trivago. Tudo isso em menos de uma hora.

No dia da viagem, você desce do avião e já chama o Uber pelo celular enquanto caminha até o lado de fora do aeroporto.

Quando você chega na calçada, o carro já está te esperando. O preço da corrida é debitado do seu cartão de crédito quando você chega no hotel.

E se você precisar comprar qualquer coisa durante a viagem, é só encostar o celular na maquininha de cartão do vendedor.

Até aí, tudo normal para os anos 2020, não é?

Agora imagine fazer tudo isso como se fazia 40 anos atrás:

Semanas antes da viagem, você dirige até o aeroporto, estaciona o carro pagando uma fortuna por hora e entra nas lojas de todas as companhias aéreas.

Em cada uma delas você fica na fila, esperando o atendimento.

Depois de algumas horas, você decide em qual companhia vai viajar e compra as passagens, pagando todas as taxas que as lojas físicas cobram.

Mal, não faz, não é?

Qual é o problema de passear um pouco e conversar com gente diferente? Mesmo pagando um pouco mais…

No dia seguinte, você dirige até a agência de viagens mais próxima e se senta para conhecer as opções de hotéis.

Você confia na indicação do agente de viagens sobre a qualidade do hotel que ele te colocou.

Mais uma vez, mal, não faz…

São só umas horinhas. E você ainda caminhou um pouco, o que é bom para a saúde.

No dia da viagem, chegando no destino, você sai do avião e anda até a fila do ponto de táxi mais próximo.

Você fica lá em pé no sol esperando um carro aparecer. Esse suspense de não saber se o táxi vai demorar 5 ou 40 minutos até que é emocionante, não é?

Pode não ser, mas… Mal, não faz…

Depois de rodar a cidade toda por um caminho que você não sabe se é o mais rápido, você chega no destino.

Nessa hora você tira do bolso aquele bolo de dinheiro que sacou no caixa do banco no dia anterior e paga o táxi.

Você acaba arredondando o valor para cima porque o motorista não tem troco.

Mal, não faz, não é? Afinal, taxista é bom de papo…

Ah, e no banco você também enfrentou uma fila enorme, mas até que foi legal rever os amigos.

Entendeu a piada?

Na verdade, ninguém quer correr mais riscos, perder mais tempo e nem gastar mais dinheiro do que precisa.

Por quê?

Porque a tecnologia é feita para tornar as coisas mais fáceis!

Agora compare o cenário da história que você acabou de ler com o assunto desse post.

Um semestre de aulas em uma faculdade dura, no mínimo, quatro meses.

Então você não pode perder algumas horas na fila do banco, comprando uma passagem aérea ou reservando um hotel?

Você não pode perder nem alguns minutos esperando um táxi?

Mas tudo bem perder quatro meses estudando uma coisa que não vai usar para nada quando entrar no mercado de trabalho?

Claro que não!

O objetivo da tecnologia é resolver os problemas do cotidiano de maneira cada vez mais simples.

Assim você corre menos riscos e ainda sobra mais tempo e dinheiro para você investir em qualidade de vida.

E se você escolheu desenvolver tecnologia como profissão, é porque você acredita nisso e quer ajudar a tornar a vida das pessoas mais fácil.

Portanto, seria ainda mais sem sentido usar a tecnologia contra você e perder tempo à toa.

Esse é o motivo pelo qual você não precisa estudar Portugol hoje em dia.

O tempo que você perde estudando Portugol pode ser usado para estudar outra coisa.

Inglês, por exemplo!

Agora que você já entendeu todo o cenário, está na hora de aproveitar a oportunidade que ele produz.

O que Você Pode Fazer Sobre Isso?

Em primeiro lugar, questione.

Será que os alunos não entendem mesmo os conceitos de programação quando estudam uma linguagem de verdade desde o início?

Será que o problema é mesmo o inglês?

Será que aqueles alunos que não conseguem entender estão se esforçando tanto quanto precisam?

E na faculdade, o que os responsáveis pelo curso pensam a respeito?

Se você já estuda ou pretende estudar Ciência da Computação, ou qualquer curso semelhante, entre em contato com a faculdade.

Ligue, envie um e-mail ao coordenador do curso, ou vá até lá e converse com os professores. Pergunte se o curso ensina Portugol. E se ensina, quais são os motivos?

Se você ouvir que “é por que os alunos têm dificuldade de aprender a programar“, peça para ver os dados que sustentam essa afirmação.

Peça para te mostrarem os resultados dos alunos que não estudaram Portugol comparados com os resultados dos alunos que estudaram. As notas melhoraram?

É provável que nada disso exista e que você receba uma resposta do tipo “já era assim quando eu entrei aqui, não tem porque mudar…

Mas é claro que o meu objetivo não é ser chato ou implicante, e sim otimizar o seu investimento na sua carreira.

Então, passando da teoria para a prática, essa é uma grande oportunidade para você se diferenciar, antes mesmo de se formar!

Como assim?

Eu explico… E preste bastante atenção, porque tem gente na Internet cobrando milhares de reais por dicas como essa, na forma de coaching.

Quando você se formar, a maior dificuldade que você vai encontrar para conseguir um emprego vai ser a sua falta de experiência.

Você pode até conseguir um estágio, mas talvez ele não te dê muita bagagem para entrar no mercado de trabalho depois.

No entanto, experiência não é só tempo de trabalho em alguma empresa. É o conhecimento que você adquire por meio da prática.

E o que isso tem a ver com o ensino de Portugol?

É fácil. Você pode ganhar experiência e criar o seu próprio caso de sucesso, reescrevendo todo o conteúdo da disciplina de algoritmos em uma linguagem de programação.

Essa dica funciona tanto se você estiver cursando, como se já tiver cursado essa disciplina.

Escolha uma linguagem de programação simples, que suporte o paradigma procedural, já que ele costuma ser usado nas disciplinas introdutórias de algoritmos.

Nesse caso, eu sugiro que você use a linguagem Python.

Se estiver em dúvida, leia o artigo completo que eu escrevi sobre qual linguagem de programação aprender primeiro, onde eu mostro as vantagens de aprender Python antes de outras linguagens.

Além das vantagens que eu menciono naquele artigo, o ecossistema do Python é perfeito para colocar essa ideia em prática.

Veja os passos para fazer isso:

  • Transforme os exemplos e as listas de exercícios da disciplina em notebooks do Jupyter Lab.
  • Disponibilize todos os notebooks Jupyter no seu repositório no GitHub.
  • Dentro dos notebooks, crie testes unitários para as funcionalidades que são pedidas em cada exercício. Assim, cada aluno pode escrever seu código e verificar se ele está certo rodando os testes.
  • Inclua instruções simples sobre como configurar o ambiente, clonar o repositório, criar os programas, executar os testes e disponibilizar o resultado no GitHub de cada aluno. Se quiser, você pode incluir um link para esse post, onde eu explico como instalar o Jupyter Lab e começar a programar em Python.
  • Faça vídeos sobre os exercícios e disponibilize no YouTube. Se você não quiser fazer isso, não tem problema. Faça uma curadoria de conteúdo relacionado a cada assunto. Por exemplo, se o exercício é sobre o laço for, inclua links para recursos que ensinam a usar esse laço, como vídeos, posts de blogs e código em outros repositórios no GitHub.
  • Divulgue a iniciativa para os outros alunos. Quanto mais alunos adotarem esse modo de aprender, mais os professores ficarão interessados em atualizar o conteúdo da disciplina.
  • Por último, descreva o seu caso de sucesso e apresente ao coordenador do seu curso. Não espere que ele resolva substituir o ensino do Portugol. Mas, pelo menos, o seu trabalho vai ficar conhecido na faculdade. Você pode até transformar isso no seu Trabalho de Conclusão do Curso. Na prática, você só precisa detalhar o que fez em cada um desses passos.

Para entender como fazer isso, veja um exemplo de um exercício escrito em um notebook Jupyter no meu perfil no GitHub.

Esse exemplo inclui um link para o Google Colab para escrever e executar o código, mas você também pode rodar o notebook na sua máquina.

E qual é a oportunidade?

Essa é uma experiência que vale a pena mencionar no seu currículo, mesmo que você nunca tenha trabalhado como programador.

Inclua uma descrição curta dessas atividades no seu currículo, na seção “Experiência”, de uma forma que chame a atenção. Por exemplo:

Reescrevi todo o conteúdo da disciplina de Algoritmos na linguagem de programação Python, usando notebooks Jupyter, testes unitários e as ferramentas GitHub e Google Colab, sem custo para a universidade.

Com isso você mostra que aprendeu a programar, que produziu resultados em uma linguagem de programação de verdade, que se preocupa com a qualidade do seu código, que sabe usar ferramentas de colaboração e que consegue aproveitar um stack pronto sem reinventar a roda com a criação e manutenção de uma plataforma de ensino dedicada.

Quando um recrutador vê algo assim em um currículo, no mínimo ele fica curioso e chama o candidato para uma entrevista.

E nessa entrevista você pode contar o seu caso de sucesso, falando das dificuldades que enfrentou e como resolveu cada uma delas.

Essa é a sua oportunidade de conseguir um estágio em uma empresa de destaque na área, ou até mesmo o seu primeiro emprego.

Como eu sei que isso funciona?

Porque funcionou para mim em uma situação bem parecida. Mas essa é uma história para um outro post…

Conclusão

Visto sob a perspectiva histórica, o Portugol teve seu papel na educação tecnológica brasileira, em uma época de atraso e de decisões ruins.

No entanto, dada a enorme quantidade de tecnologia disponível hoje em dia, insistir no seu uso para o ensino de programação seria continuar insistindo nesse atraso.

Portanto, procure um curso superior que valorize o seu investimento em educação, sem te fazer perder tempo à toa aprendendo uma pseudolinguagem que não tem aplicação prática.

Ou então, use essa experiência ruim a seu favor e transforme esse aprendizado desnecessário em um caso de sucesso pessoal.

O que você acha? Existe algum outro motivo para justificar o ensino do Portugol nos dias de hoje? Dê sua opinião nos comentários. Vamos manter uma discussão construtiva e de alto nível.

Guilherme Brügger D Amato - Audiência Pública na Comissão Senado do Futuro

Guilherme Brügger D’Amato é servidor concursado de TI na Câmara dos Deputados, onde ocupou o cargo de Diretor de Informática entre 2015 e 2016. Com mais de 25 anos de experiência como programador e executivo de TI, já desenvolveu sites e sistemas usados por dezenas de milhões de pessoas. Conecte-se com ele no LinkedIn.

Deixe um comentário