Por: ABMES
Aprender a programar vai além de programar

<p style="text-align: justify;"><em>Por: Ronaldo Mota*</em></p>
<p style="text-align: justify;">Associamos cognição ao processo de aprendizagem de determinado conteúdo, bem como dos procedimentos e técnicas a ele relacionados. Metacognição, por sua vez, trata da reflexão acerca do que foi aprendido e de como se aprende. Grosso modo, cognição tem a ver, mais diretamente, com “aprender”; enquanto metacognição com o “aprender a aprender” ou com a reflexão acerca do processo, ampliando o nível de consciência do educando sobre sua própria aprendizagem.</p>
<p style="text-align: justify;">Dominar uma linguagem de programação é estar apto a estabelecer um sistema de comunicação que permite aos desenvolvedores de software dar instruções às máquinas. Via instruções escritas, seguindo a lógica de uma linguagem previamente estabelecida, ordens precisas são emitidas aos computadores e outras máquinas para obter um determinado resultado. Seja ela uma operação matemática, a criação de um documento ou um determinado movimento, entre outras inúmeras simples ou complexas ações.</p>
<p style="text-align: justify;">Tal como ocorre com os idiomas em geral, algumas linguagens de programação podem compartilhar vocábulos ou estruturas de frases e outras podem ser completamente distintas. De qualquer forma, tal qual idiomas, cada linguagem de programação tem seus vocábulos e sua própria sintaxe e regras semânticas, os quais, no conjunto, a caracterizam.</p>
<p style="text-align: justify;">Não há e não haverá uma receita única para ensinar programação. Tampouco há uma linguagem totalmente dominante e que atenda a todos os propósitos. Na prática, cada uma delas se mostra mais apropriada para determinada circunstância. De acordo com pesquisa recente (maio 2021) da Plataforma <em>StackOverflow</em>, contemplando consulta a mais de 80 mil desenvolvedores no mundo, as mais populares são as seguintes linguagens, na ordem: JavaScript, HTML/CSS, Python, SQL e Java. São também positivamente citadas: Rust, Clojure, TypeScript, Elixir e Julia.</p>
<p style="text-align: justify;">Além disso, ao contrário do passado quando o primeiro passo era a definição da linguagem de programação, atualmente, a etapa inicial é a elaboração do projeto do serviço a ser realizado, o que inclui estreita colaboração com o usuário ou demandante. O projeto é que determina qual a linguagem a ser adotada, levando em conta variáveis tais como a base instalada na empresa. Portanto, um futuro profissional deve estar preparado para qualquer cenário, onde o ponto em comum é a multiplicidade de possibilidades entre usuários e máquinas.</p>
<p style="text-align: justify;">Um bom programador deve estar preparado para pensar em sistemas e em designs, instanciar a implementação e a linguagem que for a mais apropriada e, fundamentalmente, estar preparado para aprender novas linguagens e trabalhar em equipes híbridas, ressaltando os aspectos colaborativos entre todos os atores envolvidos no projeto.</p>
<p style="text-align: justify;">Para alguém como eu, educado em Fortran, é mais fácil perceber a evidente impermanência das linguagens de programação ao longo do tempo, bem como sua grande diversidade em qualquer tempo. Porém, algo parecer ser perene na aprendizagem de qualquer linguagem, tal que o domínio de qualquer uma delas, quando bem desenvolvida, contribui, e muito, com aprender as próximas.</p>
<p style="text-align: justify;">Em suma, a mais adequada abordagem educacional no contexto atual parece ser aquela que entende ser mais relevante aprender a aprender linguagens computacionais, em geral, evitando a tentação de ficar restrito a uma particular linguagem, circunstancialmente na moda. Nesse sentido, associamos, em geral, a aprendizagem de uma particular linguagem aos processos cognitivos mais simples. Por sua vez, a metacognição, que vai além da cognição, diz respeito à capacidade de ampliar a consciência do aluno acerca de como ele aprende, preparando-o para as próximas aprendizagens. </p>
<p style="text-align: justify;">Ou seja, ao ensinarmos o estudante a dominar qualquer linguagem, há que se explorar, simultaneamente, a reflexão acerca de sua própria aprendizagem, preparando-o a conjugar a habilidade do domínio de linguagens à atitude de não temer novos desafios no mundo da programação, sejam eles quais forem.</p>
<p style="text-align: justify;">Em outras palavras, também na área da aprendizagem de linguagens de programação, mais importante do que o que foi aprendido, relativo à cognição, é termos estimulado no educando a prática de aprender a aprender, continuamente e ao longo de toda a vida, a chamada metacognição. Trata-se de aprender programação, não somente uma linguagem específica para fazer um determinado programa.</p>
<p style="text-align: justify;">Em suma, linguagens são apenas ferramentas e o principal objetivo educacional deve ser promover a devida maturidade do futuro profissional, permitindo que ele tenha uma boa visão do potencial de várias linguagens de programação. Dentro do referencial cognitivo, a preocupação central é ensinar uma determinada linguagem (ou um software específico), enquanto na perspectiva metacognitiva o mais relevante é capacitar o educando a aprender linguagens novas, sejam elas quais forem incluindo aquelas que nem sequer foram ainda desenvolvidas.</p>
<p style="text-align: justify;">_____________</p>
<p style="text-align: justify;"><em>*Ronaldo Mota é Diretor acadêmico do IPD/ITuring e diretor científico da Digital Pages</em></p>
<p style="text-align: justify;">Associamos cognição ao processo de aprendizagem de determinado conteúdo, bem como dos procedimentos e técnicas a ele relacionados. Metacognição, por sua vez, trata da reflexão acerca do que foi aprendido e de como se aprende. Grosso modo, cognição tem a ver, mais diretamente, com “aprender”; enquanto metacognição com o “aprender a aprender” ou com a reflexão acerca do processo, ampliando o nível de consciência do educando sobre sua própria aprendizagem.</p>
<p style="text-align: justify;">Dominar uma linguagem de programação é estar apto a estabelecer um sistema de comunicação que permite aos desenvolvedores de software dar instruções às máquinas. Via instruções escritas, seguindo a lógica de uma linguagem previamente estabelecida, ordens precisas são emitidas aos computadores e outras máquinas para obter um determinado resultado. Seja ela uma operação matemática, a criação de um documento ou um determinado movimento, entre outras inúmeras simples ou complexas ações.</p>
<p style="text-align: justify;">Tal como ocorre com os idiomas em geral, algumas linguagens de programação podem compartilhar vocábulos ou estruturas de frases e outras podem ser completamente distintas. De qualquer forma, tal qual idiomas, cada linguagem de programação tem seus vocábulos e sua própria sintaxe e regras semânticas, os quais, no conjunto, a caracterizam.</p>
<p style="text-align: justify;">Não há e não haverá uma receita única para ensinar programação. Tampouco há uma linguagem totalmente dominante e que atenda a todos os propósitos. Na prática, cada uma delas se mostra mais apropriada para determinada circunstância. De acordo com pesquisa recente (maio 2021) da Plataforma <em>StackOverflow</em>, contemplando consulta a mais de 80 mil desenvolvedores no mundo, as mais populares são as seguintes linguagens, na ordem: JavaScript, HTML/CSS, Python, SQL e Java. São também positivamente citadas: Rust, Clojure, TypeScript, Elixir e Julia.</p>
<p style="text-align: justify;">Além disso, ao contrário do passado quando o primeiro passo era a definição da linguagem de programação, atualmente, a etapa inicial é a elaboração do projeto do serviço a ser realizado, o que inclui estreita colaboração com o usuário ou demandante. O projeto é que determina qual a linguagem a ser adotada, levando em conta variáveis tais como a base instalada na empresa. Portanto, um futuro profissional deve estar preparado para qualquer cenário, onde o ponto em comum é a multiplicidade de possibilidades entre usuários e máquinas.</p>
<p style="text-align: justify;">Um bom programador deve estar preparado para pensar em sistemas e em designs, instanciar a implementação e a linguagem que for a mais apropriada e, fundamentalmente, estar preparado para aprender novas linguagens e trabalhar em equipes híbridas, ressaltando os aspectos colaborativos entre todos os atores envolvidos no projeto.</p>
<p style="text-align: justify;">Para alguém como eu, educado em Fortran, é mais fácil perceber a evidente impermanência das linguagens de programação ao longo do tempo, bem como sua grande diversidade em qualquer tempo. Porém, algo parecer ser perene na aprendizagem de qualquer linguagem, tal que o domínio de qualquer uma delas, quando bem desenvolvida, contribui, e muito, com aprender as próximas.</p>
<p style="text-align: justify;">Em suma, a mais adequada abordagem educacional no contexto atual parece ser aquela que entende ser mais relevante aprender a aprender linguagens computacionais, em geral, evitando a tentação de ficar restrito a uma particular linguagem, circunstancialmente na moda. Nesse sentido, associamos, em geral, a aprendizagem de uma particular linguagem aos processos cognitivos mais simples. Por sua vez, a metacognição, que vai além da cognição, diz respeito à capacidade de ampliar a consciência do aluno acerca de como ele aprende, preparando-o para as próximas aprendizagens. </p>
<p style="text-align: justify;">Ou seja, ao ensinarmos o estudante a dominar qualquer linguagem, há que se explorar, simultaneamente, a reflexão acerca de sua própria aprendizagem, preparando-o a conjugar a habilidade do domínio de linguagens à atitude de não temer novos desafios no mundo da programação, sejam eles quais forem.</p>
<p style="text-align: justify;">Em outras palavras, também na área da aprendizagem de linguagens de programação, mais importante do que o que foi aprendido, relativo à cognição, é termos estimulado no educando a prática de aprender a aprender, continuamente e ao longo de toda a vida, a chamada metacognição. Trata-se de aprender programação, não somente uma linguagem específica para fazer um determinado programa.</p>
<p style="text-align: justify;">Em suma, linguagens são apenas ferramentas e o principal objetivo educacional deve ser promover a devida maturidade do futuro profissional, permitindo que ele tenha uma boa visão do potencial de várias linguagens de programação. Dentro do referencial cognitivo, a preocupação central é ensinar uma determinada linguagem (ou um software específico), enquanto na perspectiva metacognitiva o mais relevante é capacitar o educando a aprender linguagens novas, sejam elas quais forem incluindo aquelas que nem sequer foram ainda desenvolvidas.</p>
<p style="text-align: justify;">_____________</p>
<p style="text-align: justify;"><em>*Ronaldo Mota é Diretor acadêmico do IPD/ITuring e diretor científico da Digital Pages</em></p>
Quer saber como a ABMES pode atender as demandas específicas da sua IES?
Nossos consultores estão prontos para apresentar todos os benefícios, serviços inclusos e condições exclusivas de filiação para o perfil da sua instituição.