INESC TEC & Faculdade de Engenharia da Universidade do Porto
Ao longo dos últimos quatro anos, vários eventos retiraram o mundo da relativa tranquilidade do período pós Segunda Guerra. No final de 2019, surgiu uma pandemia, algo apenas comparável com o surto de gripe de 1918. Em 2022 e 2023, tiveram início duas guerras às portas da Europa; e, no último dia de novembro de 2022, chegou-nos a notícia de que certos softwares de Inteligência Artificial (IA) eram capazes de realizar, automaticamente, tarefas que até aí eram consideradas privilégio do intelecto humano (e.g., escrever prosa, compor poesia ou programar computadores) - estando disponíveis online.
Por norma, diz-se que tudo muda após uma guerra ou uma pandemia. Neste caso, a COVID-19 teve um impacto profundo na educação - demonstrando, para grande consternação de alguns, que o ensino presencial tradicional estava a tornar-se obsoleto. Afinal, era possível trabalhar online, economizando tempo e recursos, e aprendendo diretamente com materiais didáticos (cada vez mais sofisticados) disponibilizados por professores e YouTubers.
Como se isso não bastasse, o aparecimento do ChatGPT foi mais um elemento disruptivo para professores, académicos e outros profissionais. Obviamente, os avanços científicos que tornaram possível o desenvolvimento de modelos de linguagem de grande escala (Large Language Models - LLMs) como o ChatGPT, já eram do conhecimento de especialistas, investigadores e laboratórios - sobretudo de quem os desenvolvia. A utilização de ferramentas como o Google Translate e semelhantes para rever traduções ou mesmo traduzir textos automaticamente, era também uma prática comum. Além disso, as pessoas estavam já habituadas a interagir com bots disponibilizados por serviços online. No entanto, o mais impressionante foi o vasto conhecimento que o ChatGPT parecia conter, e quão fluente era em termos de conversação. Assim, os taxistas e os bancários não eram os únicos cujos trabalhos estavam em risco: o futuro profissional de docentes e investigadores estava ameaçado.
Muitos assumiram uma posição proibicionista. Outros ignoraram estas ferramentas, dada a falta de confiabilidade. De facto, em abril de 2023, recebi uma mensagem de um colega irlandês, referindo que o ChatGPT disse que o mesmo tinha morrido em 2019. Muitos comentários humorísticos circularam (e continuam a circular) nas redes sociais, para o deleite de todos aqueles que ridicularizam estas ferramentas imperfeitas, que tentam substituir as pessoas. Num registo totalmente diferente, Noam Chomsky e outros linguistas escreveram o ensaio “The False Promise of ChatGPT”, publicado pelo New York Times (8 de março de 2023), um texto bastante claro sobre a essência dos LLMs, e do facto de não possuírem inteligência genuína1. Além disso, a possibilidade de plágio relacionado com alta tecnologia de grande escala - impulsionada pelos LLMs - tornou-se uma preocupação, levando à criação da Lei 2024/1689 da UE, que estabelecia regras harmonizadas para a utilização de IA.
Em dezembro de 2022, começaram a circular e-mails de pessoas surpreendidas com a capacidade de certos LLMs no que toca a programação. De forma a desafiar o ChatGPT, apresentei um problema relacionado com uma questão simples, abordada nas aulas introdutórias de um curso: “Para cada lista de chamadas guardada em certo dispositivo (e.g., chamadas efetuadas, mensagens, chamadas perdidas), a loja deve agir de determinada forma - a) a chamada mais recente deverá tornar-se mais acessível; b) nenhum contacto deve aparecer em duplicado; c) apenas as 10 entradas mais recentes ficam guardadas.
O ChatGPT foi capaz de gerar um programa Python que, apesar de conter alguns erros, era bastante aceitável e não muito diferente do que um aluno de primeiro ano seria capaz de programar. Curiosamente, continha alguns aspetos desnecessários de implementação, como registar a hora exata de cada chamada - precisamente o mesmo tipo de erro que alguns alunos tendem a cometer durante os exercícios de programação (muitas vezes “enviesados”). Sendo que uma vertente do curso passa por desenvolver programas genéricos com recurso a programação funcional, o próximo passo foi colocar o mesmo desafio, mas introduzir outra linguagem: Haskell (também ela lecionada no curso). Apesar de ser menos popular do que Python, o ChatGPT conseguiu desenvolver um programa em Haskell capaz de recorrer a bibliotecas existentes, ainda que de forma bastante rudimentar.
Impressionado com os resultados, respondi com uma solicitação incomum: sendo que o curso aborda um estilo de programação conciso - que dispensa variáveis do programa para garantir a correção por construção -, foi solicitada uma solução “point-free”. O resultado foi surpreendente (consultar a figura abaixo); bastante surpreendente, aliás - no desafio para o qual foi talvez menos treinada, a máquina apresentou a melhor solução: uma proposta com um pipeline de três etapas, uma por cada parágrafo do problema, na ordem correta, e com apenas um erro em uma das etapas.
Percebendo como este erro continha uma nuance técnica que foi estudada no curso, optou-se por utilizar o exemplo num teste2: os alunos tinham de analisar a solução proposta pelo ChatGPT e identificar o erro. Os resultados foram tudo menos encorajadores, pois nessa questão, a maioria dos alunos apresentou respostas erradas - por uma razão bastante simples: os estudantes não foram treinados para analisar código escrito por outrem, e não possuem grande capacidade de produção escrita. Ainda pior: perante uma questão como este, a maioria decidiu nem responder.
Em retrospetiva, este comportamento é apenas parte de um problema muito mais profundo em termos de comportamento social, que influencia negativamente a educação: a falta de pensamento crítico, causada pela atual “overdose” de comunicação nas redes sociais, com base em mensagens quase “telegramas”, que são “disparadas” sem qualquer tipo de avaliação crítica. E é nesta “mistura” que se “cozinham” as notícias falsas.
Consciente da necessidade urgente de preparar os estudantes de ciência da computação para uma melhor utilização de ferramentas baseadas em LLMs, adotei um estilo de ensino segundo o qual, ao formular um novo problema, o resultado de uma solução LLM (por norma, ChatGPT) é prontamente tomado como ponto de partida e analisado pelos alunos. Esta abordagem junto de alunos de mestrado, mais concretamente no que toca a modelos de Alloy gerados a partir de requisitos de problemas, tem sido bastante pedagógica. Continua a ser gerada uma grande quantidade de “lixo”, mas os estudos aprendem com isso, e começam a perceber que uma melhor “prosa” contribui para modelos melhores.
É importante referir que estes testes foram realizados de forma preliminar, e não sistematicamente. No entanto, uma lição que podemos retirar é a existência de uma espécie de “vingança das Artes”. Porquê vingança? E em que sentido? Muitos estudantes procuraram as áreas STEM para evitar determinadas áreas, como a literatura, a poesia ou as artes em geral. Como resultado, nota-se uma clara falta de domínio da escrita, e falhas graves no que toca a articular o discurso. Sendo que os LLMs necessitam de requisitos bem redigidos para gerar menos “lixo”, quão preparados estarão os estudantes para formular corretamente os pedidos? Será que, ter “sobrevivido” à experiência de ler romances volumosos, como “Anna Karenina”, de Tolstoy, é um trunfo importante nesta era dos LLMs? Aqui está uma pergunta provocatória, e que merece alguma reflexão. Vivemos na génese da “grande divisão” entre artes e ciências, em nome da especialização e da produtividade. Além disso, é já conhecida a propensão para a tecnologia entre os mais jovens. No entanto, poderá ser importante restringir esta divisão, algo proposto por quem defende a integração da letra “A” (artes), passando de STEM para STEAM.
Vivemos tempos estranhos, sobretudo para quem, tal como eu, considera a programação como um exercício de cálculo através do qual deve ser gerado um programa totalmente funcional. A clareza e a aplicação adequada de conhecimento em exercícios como estes são importantíssimas, pois também são aspetos importantes para a programação efetuada por LLMs. Não devemos descartar qualquer tecnologia que nos permita produzir bons softwares, seja por meio de IA, matemática ou ambos. Mas uma coisa é certa: no futuro, quem irá atrever-se a entrar num avião cujo software - gerado por LLMs - não tenha sido verificado e sinalizado como 100% correto? Mesmo que chegue o dia em que o desenvolvimento de programas através deste método seja definitivamente eficaz, será sempre necessária uma verificação (formal). E é nesta área que os empregos na área da computação irão proliferar.
These are odd times for anyone who, like the author, still regards programming as a calculational exercise out of which a correct computer program should emerge. Clarity and economy of thought are essential to such exercises, as coincidentally LLM-generated programming seems to require too. We should not rule out any technology enabling us to produce good software, be it through AI, mathematics or both. One thing can be taken for granted: who in the future will fly in a plane whose LLM-generated software has not been verified 100% correct? On the day direct generation of programs from requirements proves to be definitively effective, the need for (formal) verification will remain. And this is where jobs in the future of computing are likely to be found.
1Noam Chomsky: The False Promise of ChatGPT. New York Times
Nota: Este texto reflete a opinião pessoal do autor e é uma reflexão sobre o impacto da inteligência artificial na educação e na programação.