Grande parte da informática moderna assenta numa ideia que Ken Thompson pôs em prática no final dos anos 1960: um sistema poderoso não precisa de ser complicado se os seus elementos mais simples souberem trabalhar em conjunto. A ideia estrutura Unix, atravessa a linguagem B, prepara C e reaparece décadas depois em Go.
Thompson não seguiu um único programa teórico. Construiu ferramentas para resolver problemas concretos: utilizar interativamente um pequeno computador, escrever um sistema com pouca memória, processar texto ou compilar rapidamente software de grande dimensão. A continuidade está no método: mecanismos reduzidos, compreensíveis e combináveis.
De Multics a Unix
Kenneth Lane Thompson nasceu em 1943 em Nova Orleães. Estudou na University of California, Berkeley, e entrou nos Bell Labs em 1966, participando em Multics.
Multics pretendia oferecer um ambiente interativo a muitos utilizadores, mas tornou-se complexo e dispendioso. Quando Bell Labs abandonou o projeto em 1969, Thompson quis preservar as melhores características da interação numa máquina muito menor.
Num PDP-7, desenvolveu em 1969 um sistema de ficheiros, uma shell e as primeiras funções do que se tornaria Unix. Dennis Ritchie juntou-se rapidamente ao trabalho.
Quando as limitações favorecem a simplicidade
O PDP-7 tinha pouca memória. Cada abstração precisava de justificar o custo. Thompson preferiu pequenos programas especializados e a possibilidade de usar a saída de um como entrada de outro.
Doug McIlroy tinha defendido a ideia dos fluxos; Thompson implementou os pipes em Unix em 1973. O carácter | permitiu ligar comandos e construir pequenos programas a partir de elementos reutilizáveis. O princípio continua presente em sistemas Unix e pipelines de dados.
De B ao nascimento de C
As primeiras versões de Unix eram escritas em assembly e dependiam do processador. Thompson criou B, uma adaptação de BCPL suficientemente pequena para as máquinas disponíveis.
B mostrou limitações no PDP-11. Dennis Ritchie acrescentou tipos e melhorou o modelo de dados, chegando a C no início dos anos 1970. Thompson criou B e o contexto técnico; Ritchie foi o principal projetista de C.
A colaboração permitiu reescrever grande parte de Unix em C, tornando o sistema muito mais portátil. A biografia de Dennis Ritchie e a história de C aprofundam esta evolução.
Expressões regulares, Plan 9 e UTF-8
Thompson desenvolveu também o editor ed e ajudou a difundir as expressões regulares como notação prática para padrões de texto.
Mais tarde trabalhou em Plan 9, sistema distribuído experimental dos Bell Labs. Em 1992 concebeu com Rob Pike UTF-8, codificação Unicode compatível com ASCII que se tornaria dominante na Web.
Estes contributos respondem à mesma pergunta: como definir uma representação suficientemente simples para ser usada em todo o lado, sem impedir a sua extensão?
«Reflections on Trusting Trust»
Em 1983 Thompson e Ritchie receberam o Prémio Turing. Na conferência Reflections on Trusting Trust, Thompson descreveu um compilador modificado capaz de inserir secretamente uma backdoor num programa de login e reproduzir a alteração nas futuras versões do próprio compilador.
A demonstração revela um limite profundo da confiança em software: verificar o código-fonte não basta se a cadeia de ferramentas que o transforma estiver comprometida. Builds reproduzíveis e segurança da cadeia de fornecimento prolongam hoje esse problema.
Thompson entrou na Google em 2006 e encontrou outro problema de escala: repositórios enormes, compilações demoradas e concorrência difícil de dominar.
Em 2007, Thompson, Rob Pike e Robert Griesemer começaram a definir Go. A linguagem procura compilações rápidas, formatação padrão, gestão automática de memória e mecanismos integrados de concorrência. A sintaxe permanece deliberadamente reduzida para manter legível o código de grandes equipas.
Go não copia C nem substitui Unix. Transfere um método para outro contexto. Publicado como open source em 2009, tornou-se importante em serviços de rede, infraestrutura e sistemas distribuídos.
Um legado baseado nas relações entre ferramentas
Unix continua em Linux, macOS, BSD, Android e infraestruturas de servidores. C permanece essencial nos sistemas. UTF-8 permite trocar texto globalmente. Go equipa software de rede e cloud.
O elo comum não é uma lista de invenções, mas uma maneira de construir: componentes que fazem poucas coisas, permanecem compreensíveis e podem ser combinados através de interfaces claras.
Cronologia
- 1943: nascimento de Kenneth Lane Thompson em Nova Orleães.
- 1966: entrada nos Bell Labs e participação em Multics.
- 1969: primeira versão de Unix no PDP-7.
- 1969–1970: desenvolvimento de B a partir de BCPL.
- 1973: pipes em Unix e reescrita do sistema em C com Dennis Ritchie.
- 1983: Prémio Turing com Ritchie e Reflections on Trusting Trust.
- 1992: criação de UTF-8 com Rob Pike.
- 2006: entrada na Google.
- 2007: início de Go com Robert Griesemer e Rob Pike.
- 2009: publicação de Go como projeto open source.
Perguntas frequentes
Ken Thompson criou Unix sozinho?
Escreveu a primeira versão em 1969 e foi o principal impulsionador inicial. Dennis Ritchie e outros investigadores dos Bell Labs contribuíram depois para uma obra coletiva.
Qual a diferença entre as contribuições de Thompson e Ritchie?
Thompson criou Unix e B; Ritchie foi o principal projetista de C e teve papel central na reescrita de Unix em C.
A linguagem B ainda é utilizada?
Não de forma corrente. A sua importância é histórica como predecessora direta de C.
Thompson inventou os pipes Unix?
Doug McIlroy formulou e promoveu a ideia; Thompson implementou-a em Unix em 1973.
Qual é a ligação entre Unix e Go?
Não existe uma descendência técnica direta. Ambos refletem, porém, a preferência de Thompson por conceitos simples e combináveis.