Como tenho por costume diário, no dia 2 de janeiro visitei o Hacker News (também conhecido por seus críticos como o site laranja) logo cedo e vi no topo dos tópicos postados uma notícia triste: Niklaus Wirth, um dos pioneiros da ciência da computação, havia falecido. Wirth nascera em 1934, já estava com idade avançada, mas ainda estava ativo em seu projeto Oberon. Se entrarmos em seu sítio pessoal, ainda hospedado no domínio da Escola Técnica de Zurique, onde lecionou até 1999, veremos uma atualização do dia 6 de março de 2020, Wirth tinha então acabado de completar 86 anos. Não sei ao certo como eram suas condições de saúde às vésperas de sua morte, mas que estivesse trabalhando ainda num projeto dessa magnitude (um sistema operacional próprio com sua própria linguagem de programação e interface gráfica) era excepcional.
Mas esse não é o projeto pelo qual Wirth é mais reconhecido, apesar ser o que mais me faz admirá-lo. Nos anos 1970, o engenheiro suíço inventou a linguagem de programação Pascal, que rapidamente tomou as universidades da época e serviu para treinar toda uma geração de programadores. Naquela época havia muito debate sobre como treinar novos programadores, uma profissão cada vez mais requisitada — imaginem só! —, e Wirth resolveu aplicar seus conhecimentos tentando desenvolver a linguagem de programação Algol numa nova ferramenta que fosse mais expressiva, mas que limitasse os erros que poderiam ser cometidos por seus usuários. Wirth era, em grande medida, influenciado pelo debate levado adiante por Edsger Dijkstra, outra figura ímpar para a Ciência da Computação. Para o desespero de Dijkstra, o goto teve que ser incluído no Pascal; Wirth julgou ser muito cedo para tirá-lo de circulação.
A partir daí, Wirth procurou refinar sua invenção, nas linguagens de programação Modula e Oberon, está última que leva o nome de seu último grande projeto. Entre essas iterações houve muitos outros experimentos: Wirth queria criar uma linguagem que fosse ao mesmo tempo o mais poderosa (ou expressiva) possível e o mais simples possível. Seu trabalho influenciou muitas das linguagens mais utilizadas atualmente, incluindo a linguagem de programação Go.
Desde os anos 1970, Wirth estava preocupado com a qualidade do software que viria a ser desenvolvido pelo exército de programadores que estava se formando. Tenho um de seus livros traduzidos para o português, que peguei numa leva de doações que um de meus professores fez no laboratório onde fiz iniciação científica e nunca me esqueço da surpresa que foi ver um livro tão antigo falando em testagem de programas. Se pensarmos um pouco sobre o assunto, é óbvio que testagem automática de programas é uma ideia tão antiga quanto os próprios programas de computador, finalmente como saberemos se eles funcionam em todas as situações? Mas achei interessante porque quando estava me formando, a preocupação com testes tinha se desenvolvido numa série de metodologias e coisas que mais parecem crenças religiosas do que algo que busca resolver um problema prático.
A explicação no antigo livro de Wirth, Programação Sistemática em Pascal, era simples e objetiva, como deve ser qualquer explicação de um engenheiro.
Sua preocupação com qualidade e manutenibilidade de software finalmente confirmou-se no cenário em que vivemos. Em frase atribuída a Wirth, mas que ele atribui a Martin Reiser, Wirth cravou que os programas se tornaram mais lentos do que a capacidade do hardware de se tornar mais veloz. Essa conjectura é popularmente conhecida no meio da computação como a Lei de Wirth.
Já criticamos muitas vezes neste espaço a atual conjuntura da ciência da computação. Nunca a crítica de Wirth foi tão necessária. Construímos sistemas cada vez mais complexos, complexidade essa que muitas vezes não é um requisito de engenharia, mas um problema autoimposto, muitas vezes por razões meramente estéticas.
Até hoje programadores frustrados procuram inventar novas linguagens de programação, buscando eliminar as mazelas do dia-a-dia. Acho que nunca ouvi tanto falar em novas linguagens; parece que surge uma nova a cada mês. Com a partida de Wirth, acho que é um bom momento para revisitar uma pessoa de grande estatura que já pensou sobre o problema. Na era da aprendizagem de máquina, da geração de código automática, da “solução” de problemas por força bruta, uma visita às origens da Ciência da Computação pode ser um ótimo refresco.