Brian Kernighan ocupa um lugar singular na história das linguagens. Não criou Unix nem C: esses contributos pertencem sobretudo a Ken Thompson e Dennis Ritchie. A sua influência vem de ter construído ferramentas em torno de Unix, cocriado linguagens especializadas e tornado as ideias dos Bell Labs compreensíveis e transmissíveis.
O seu nome está ligado a AWK, criado com Alfred Aho e Peter Weinberger, e a The C Programming Language, escrito com Ritchie. Ratfor, eqn, pic, AMPL e décadas de ensino mostram a mesma ideia: uma boa ferramenta faz poucas coisas com clareza e combina-se com outras.
De Toronto aos Bell Labs
Brian Wilson Kernighan nasceu em 1942 em Toronto. Estudou física de engenharia na Universidade de Toronto e concluiu em 1969 um doutoramento em engenharia elétrica em Princeton sobre particionamento de grafos. Nesse mesmo ano entrou nos Bell Laboratories.
Unix começava a surgir em torno de Ken Thompson e Dennis Ritchie. Kernighan participou nesse ambiente, testou ferramentas, escreveu programas e documentação e ajudou a transformar um protótipo local num ambiente utilizável. É também geralmente creditado pelo nome “Unix”, um jogo de palavras com Multics.
Unix como oficina de pequenas ferramentas
A força de Unix não está apenas no kernel, mas também em pequenos programas que leem e escrevem fluxos simples e se ligam por pipelines. Com Lorinda Cherry, Kernighan desenvolveu eqn para fórmulas matemáticas e trabalhou em pic para diagramas e em ferramentas relacionadas com troff.
Estes programas mostram que uma notação especializada pode ser mais expressiva do que uma ferramenta geral. Os ficheiros de texto permanecem legíveis, versionáveis e combináveis com outros comandos, antecipando práticas modernas de documentação como código.
Ratfor: melhorar a expressão sem substituir a infraestrutura
As versões antigas de FORTRAN eram muito difundidas mas pouco estruturadas. Kernighan criou Ratfor, Rational Fortran, oferecendo blocos, ciclos e condições mais modernos e traduzindo depois o programa para Fortran aceite pelos compiladores existentes.
A estratégia é pragmática: acrescentar uma camada leve em vez de substituir toda a infraestrutura. Software Tools, com P. J. Plauger, difundiu esta abordagem.
Em 1977, Alfred Aho, Peter Weinberger e Brian Kernighan conceberam AWK, cujo nome reúne as iniciais dos apelidos. O modelo é compacto:
condition { action }
AWK lê registos, divide automaticamente cada linha em campos, testa padrões e executa ações. Somar a segunda coluna exige apenas:
{ total += $2 }
END { print total }
A concisão resulta de a linguagem tratar o enquadramento repetitivo. AWK situa-se entre um filtro e uma linguagem geral e permite extração, agregação, conversão e relatórios sem compilar um programa completo em C.
K&R: o livro que tornou C acessível
Dennis Ritchie criou C no início dos anos 1970. Para o difundir para além dos Bell Labs, Kernighan escreveu com ele The C Programming Language, publicado em 1978 e conhecido como K&R.
O livro combina o conhecimento do criador com a experiência pedagógica de Kernighan. A primeira edição tornou-se referência de facto do C anterior à normalização; a segunda, de 1988, acompanhou ANSI C. Kernighan não inventou C: ajudou decisivamente a formulá-lo para quem não trabalhava ao lado de Ritchie.
Explicar a filosofia Unix pela prática
Com Rob Pike, Kernighan publicou em 1984 The Unix Programming Environment. O livro ensina a pensar com shell, filtros, ficheiros de texto e programas combináveis, mostrando como decompor progressivamente uma tarefa.
Os pipelines textuais têm limites: podem perder estrutura e tornar-se difíceis de manter. A lição duradoura não é que tudo deva ser texto, mas que interfaces simples e composição explícita reduzem o custo de integração.
Pequenas linguagens para problemas precisos
Com Robert Fourer e David Gay, Kernighan desenvolveu AMPL para modelação matemática. O utilizador descreve variáveis, restrições e objetivo, enquanto o solver trata do algoritmo numérico.
Tal como eqn e AWK, AMPL aproxima o código do problema. A ideia de pequenas linguagens especializadas continua hoje nas linguagens de consulta, configuração, sistemas de build e notações de visualização.
Prática da programação e ensino
The Elements of Programming Style, com P. J. Plauger, e The Practice of Programming, com Rob Pike, abordam legibilidade, desenho, depuração, testes, desempenho, portabilidade e interfaces. O estilo não é decorativo: código legível expõe pressupostos e interfaces reduzidas limitam dependências.
Em 2000, após trinta anos nos Bell Labs, Kernighan entrou em Princeton, onde passou a ensinar informática e também as consequências sociais dos sistemas digitais.
Porque Brian Kernighan continua importante
O seu legado une ferramentas, linguagens e explicação. Kernighan mostrou que uma pequena ferramenta pode ter grande impacto se a interface for clara e que uma ideia técnica só ganha alcance quando é bem documentada e ensinada.
Cronologia
- 1942: nascimento em Toronto.
- 1969: doutoramento em Princeton e entrada nos Bell Labs.
- Anos 1970: ferramentas Unix, Ratfor,
eqn e pic.
- 1977: criação de AWK com Aho e Weinberger.
- 1978: primeira edição de The C Programming Language com Ritchie.
- 1984: The Unix Programming Environment com Rob Pike.
- 1988: segunda edição de K&R para ANSI C.
- 2000: entrada em Princeton.
Perguntas frequentes
Brian Kernighan inventou C?
Não. Dennis Ritchie foi o principal criador de C. Kernighan teve um papel decisivo na documentação, ensino e difusão da linguagem.
Quem criou AWK?
Alfred Aho, Peter Weinberger e Brian Kernighan conceberam-no em conjunto; o nome vem das iniciais dos seus apelidos.
Porque é K&R tão importante?
Deu a C uma descrição precisa, baseada em exemplos e amplamente disponível antes da normalização oficial, difundindo também um estilo de programação claro.
Qual é a ideia central das ferramentas de Kernighan?
Decompor problemas complexos em partes compreensíveis, usar interfaces simples e combinar ferramentas especializadas.
AWK ainda é utilizado?
Sim. Continua muito útil em sistemas Unix para processamento rápido de texto, relatórios, extração de dados e automação.