Ir para o conteúdo principal
BiografiaHistória da informáticaIniciante

Dennis Ritchie: a linguagem C no coração do Unix

Como Dennis Ritchie concebeu a linguagem C e contribuiu para o Unix, duas bases que tornaram o software de sistema mais portável.

Publicado 3 de agosto de 2026Leitura : 7 minPor Yann Bastien
Retrato de Dennis Ritchie, criador da linguagem C e coautor do Unix
Mostrar índice
  1. Procurar uma informática menos dependente das máquinas
  2. De BCPL e B à linguagem C
  3. Unix reescrito em C
  4. O compilador como instrumento de portabilidade
  5. Uma referência antes da norma
  6. Uma herança técnica com duas faces
  7. Ritchie, Thompson e a cultura Unix
  8. Porque Dennis Ritchie continua importante
  9. Cronologia
  10. Perguntas frequentes
  11. Dennis Ritchie criou o Unix?
  12. Porque criou Ritchie a linguagem C?
  13. C é uma linguagem de baixo nível?
  14. Porque foi importante reescrever Unix em C?
  15. Qual foi o papel de Brian Kernighan?
  16. Porque continua C a ser usado apesar dos riscos?

Dennis Ritchie concebeu uma linguagem deliberadamente compacta, suficientemente próxima da máquina para escrever um sistema operativo, mas suficientemente independente do hardware para transportar esse sistema para novos computadores. Esta combinação fez de C e Unix duas bases da informática moderna.

Falar de Ritchie exige, porém, distinguir as contribuições. É o principal criador de C. O Unix nasceu de um trabalho coletivo nos Bell Labs, iniciado por Ken Thompson e desenvolvido com Ritchie e outros engenheiros. A história comum mostra como uma linguagem e um sistema operativo podem transformar-se mutuamente.

Procurar uma informática menos dependente das máquinas

Dennis MacAlistair Ritchie nasceu em 1941 em Bronxville, no estado de Nova Iorque. Estudou física e matemática aplicada em Harvard, onde descobriu os computadores. Em 1967 entrou no centro de investigação informática dos Bell Labs.

O laboratório participava então no Multics, um ambicioso sistema de tempo partilhado. Quando os Bell Labs abandonaram o projeto em 1969, Ken Thompson experimentou um sistema mais pequeno num PDP-7. Com Ritchie e os colegas, esse trabalho tornou-se Unix.

As primeiras máquinas tinham pouca memória e o software de sistema era frequentemente escrito em assembly. Esta linguagem oferece controlo preciso, mas prende o programa a uma arquitetura. Mudar de computador obriga a reescrever uma parte importante do sistema.

De BCPL e B à linguagem C

Thompson adaptou primeiro ideias de BCPL numa linguagem chamada B. Servia para algumas tarefas, mas o seu modelo praticamente sem tipos ajustava-se mal ao PDP-11 e aos diferentes formatos de dados. Ritchie fez B evoluir, acrescentou tipos e criou o «New B», que se tornou C no início da década de 1970.

C manteve-se pequeno. As suas construções correspondem de forma bastante direta a operações que um processador executa, enquanto funções, estruturas, ponteiros e tipos permitem organizar um programa sem escrever cada instrução em assembly.

Um ponteiro representa um endereço de memória. Permite programas de sistema eficientes e estruturas de dados flexíveis, mas não protege automaticamente contra acessos fora dos limites, utilização de memória já libertada ou interpretação incorreta dos dados. A força e os riscos da linguagem resultam em parte da mesma escolha: confiar no programador.

Unix reescrito em C

Por volta de 1973, o kernel Unix foi em grande parte reescrito em C. Algumas partes dependentes do hardware continuaram em assembly, mas a maior parte do sistema podia agora ser compilada para uma nova máquina com um volume de adaptação reduzido.

O resultado é histórico não porque nenhuma linguagem de alto nível tivesse sido usada num sistema, mas porque o Unix demonstrou de forma convincente que um sistema operativo eficiente podia tornar-se portável. C beneficiou depois da difusão do Unix nas universidades; o Unix beneficiou da facilidade com que C permitia adaptá-lo.

Esta relação também moldou a linguagem. C não foi concebido abstratamente e depois aplicado ao sistema: tipos, operadores e biblioteca evoluíram em contacto com necessidades concretas. Muitas ferramentas Unix foram escritas na mesma linguagem que o kernel, simplificando a sua transferência entre máquinas.

O compilador como instrumento de portabilidade

A portabilidade não vem apenas do texto da linguagem. Depende de um compilador capaz de traduzir as mesmas construções para diferentes conjuntos de instruções e de uma biblioteca que isole parte dos serviços do sistema.

Nos Bell Labs, C evoluiu com os seus compiladores. A linguagem tinha de permanecer simples o suficiente para ser implementada nas máquinas disponíveis e, ao mesmo tempo, dar acesso às características úteis dessas máquinas. Por isso, arrays e ponteiros estão estreitamente ligados, as estruturas descrevem a organização dos dados em memória e os operadores correspondem muitas vezes a instruções pouco dispendiosas.

O resultado não é independência total do hardware. O tamanho dos tipos, a ordem dos bytes e certos comportamentos podem variar. Um programa portável deve respeitar as garantias da linguagem em vez de pressupor detalhes de uma máquina específica. A distinção entre o que a norma promete e o que uma implementação escolhe tornou-se central em toda a história de C.

A difusão universitária do Unix acelerou um círculo virtuoso. Os estudantes tinham o sistema, o código e a linguagem principal; criavam ferramentas, transportavam Unix para outras máquinas e levavam depois estas práticas para a indústria. C não se impôs apenas pelas suas qualidades abstratas: viajou com um ambiente completo de programação.

Uma referência antes da norma

Em 1978, Brian Kernighan e Dennis Ritchie publicaram The C Programming Language. O livro, conhecido como K&R, combina uma apresentação concisa, exemplos e uma descrição que durante muito tempo serviu de referência de facto.

A multiplicação dos compiladores tornou necessária uma norma formal. O comité ANSI X3J11 iniciou os trabalhos em 1983; a norma americana foi publicada em 1989 e tornou-se ISO em 1990. Precisou a linguagem e a biblioteca, procurando preservar os programas existentes.

Ritchie não controlou sozinho a evolução de C. Depois da sua criação, a linguagem tornou-se infraestrutura partilhada, regida por normas e implementada numa enorme variedade de processadores.

Uma herança técnica com duas faces

C influenciou diretamente C++ e Objective-C. A sua sintaxe marcou também Java, JavaScript, C#, Go e muitas outras linguagens, mesmo quando a gestão de memória ou o modelo de execução são profundamente diferentes.

A sua marca mais importante permanece nas camadas baixas: kernels, controladores, bibliotecas de sistema, microcontroladores, bases de dados e compiladores. Uma interface definida em C serve frequentemente de linguagem comum entre componentes escritos com tecnologias diferentes.

Esta presença não faz de C a melhor escolha universal. As suas garantias reduzidas facilitam vulnerabilidades como buffer overflows e erros de tempo de vida. Ferramentas de análise, regras de codificação e linguagens mais seguras procuram reduzir estes riscos. Compreender a influência de Ritchie é também compreender por que razão a indústria protege hoje mais algumas operações que C expõe diretamente.

Ritchie, Thompson e a cultura Unix

Ritchie contribuiu para Unix como criador e programador, mas atribuir o sistema a uma só pessoa apagaria o contexto dos Bell Labs. Ken Thompson desempenhou um papel inicial decisivo; Brian Kernighan, Douglas McIlroy e outros participaram nas ferramentas, ideias e difusão.

Ritchie e Thompson receberam juntos o Prémio Turing em 1983 pelo desenvolvimento da teoria geral dos sistemas operativos e, em particular, pela implementação do Unix. A distinção conjunta associa justamente as suas contribuições.

Ritchie prosseguiu a carreira nos Bell Labs e trabalhou depois nos sistemas Plan 9 e Inferno. Morreu em 2011. O seu estilo público discreto contrasta com a dimensão da sua herança.

Porque Dennis Ritchie continua importante

Ritchie ajudou a deslocar uma fronteira: o software de sistema deixou de ter de ficar quase totalmente preso ao assembly e a uma máquina. C forneceu um nível de abstração modesto mas decisivo, transparente para o hardware e estável para a portabilidade.

A lição continua atual. Entre desempenho e proteção, controlo e abstração, compatibilidade e progresso, cada linguagem de sistemas reformula os compromissos aos quais C deu uma resposta duradoura.

Cronologia

  • 1941: nascimento em Bronxville, Nova Iorque.
  • 1963: diploma de física em Harvard.
  • 1967: entrada nos Bell Labs.
  • 1969: primeiros trabalhos em Unix com Ken Thompson e a equipa dos Bell Labs.
  • 1971: Unix é transportado para o PDP-11.
  • 1972: C assume uma forma reconhecível a partir de B.
  • 1973: o kernel Unix é reescrito em grande parte em C.
  • 1978: publicação de The C Programming Language com Brian Kernighan.
  • 1983: Ritchie e Thompson recebem o Prémio Turing.
  • 1989: publicação da norma ANSI C.
  • 1990: C torna-se norma internacional ISO.
  • 2011: morte de Dennis Ritchie.

Perguntas frequentes

Dennis Ritchie criou o Unix?

Foi um dos principais programadores, mas Unix é uma obra coletiva iniciada por Ken Thompson nos Bell Labs. Ritchie teve um papel fundamental no desenvolvimento e na reescrita em C.

Porque criou Ritchie a linguagem C?

As linguagens disponíveis respondiam mal às necessidades do Unix no PDP-11. C devia oferecer tipos e eficiência próximos do hardware, permitindo ao mesmo tempo transportar código entre arquiteturas.

C é uma linguagem de baixo nível?

É frequentemente descrita como uma linguagem de nível intermédio. Oferece estruturas de alto nível, como funções e tipos, mas expõe diretamente endereços de memória e representação de dados.

Porque foi importante reescrever Unix em C?

Reduziu a dependência do assembly específico de uma máquina. Unix tornou-se mais fácil de transportar, favorecendo a sua difusão e demonstrando a viabilidade de sistemas portáveis.

Qual foi o papel de Brian Kernighan?

Kernighan não concebeu C, mas contribuiu para a documentação e difusão. O livro escrito com Ritchie serviu de referência antes da normalização.

Porque continua C a ser usado apesar dos riscos?

Produz código previsível, funciona em quase todas as arquiteturas e integra-se em inúmeros sistemas existentes. Estas vantagens implicam maior responsabilidade na gestão da memória e da segurança.

Este artigo foi útil?

Fontes e referências

  1. 1.Dennis Ritchie - The Development of the C Language
  2. 2.Dennis Ritchie e Ken Thompson - The UNIX Time-Sharing System
  3. 3.ACM - Dennis Ritchie, Prémio Turing 1983
  4. 4.Computer History Museum - Dennis Ritchie

Coleção

Linguagens de programação

3 / 26

  1. 01Grace Hopper: dos primeiros compiladores ao COBOL
  2. 02John Backus: FORTRAN, a notação BNF e a recusa do código de máquina
  3. 03Dennis Ritchie: a linguagem C no coração do Unix
  4. 04FORTRAN: provar que um compilador pode competir com assembly
  5. 05A linguagem C: tornar os sistemas portáteis sem esconder a máquina
  6. 06Niklaus Wirth: de Pascal a Oberon, conceber pela simplicidade
  7. 07Bjarne Stroustrup: conceber C++ sem abdicar do desempenho
  8. 08Pascal: aprender a programar tornando a estrutura visível
  9. 09C++: de C with Classes ao C++ moderno
  10. 10Programação orientada a objetos: objetos, mensagens e abstrações reutilizáveis
  11. 11Guido van Rossum: criar Python para tornar o código legível
  12. 12Brendan Eich: JavaScript, do protótipo da Netscape ao padrão da Web
  13. 13James Gosling: o engenheiro na origem de Java
  14. 14Python: legibilidade, baterias incluídas e um ecossistema global
  15. 15Java: escrever uma vez, executar em qualquer lugar
  16. 16JavaScript: a linguagem que tornou a Web interativa
  17. 17Ken Thompson: de Unix a Go, a simplicidade como método
  18. 18John McCarthy: Lisp e a ideia de programar com símbolos
  19. 19Alan Kay: Smalltalk e o computador como meio pessoal
  20. 20Barbara Liskov: a abstração que tornou o software modular
  21. 21Robin Milner: ML, prova assistida e linguagens da interação
  22. 22Brian Kernighan: AWK, Unix e a arte de explicar código
  23. 23Anders Hejlsberg: de Turbo Pascal a C# e TypeScript
  24. 24Larry Wall: Perl, a linguagem que ligou as ferramentas da Internet
  25. 25Yukihiro Matsumoto: Ruby e a felicidade do programador
  26. 26Rasmus Lerdorf: PHP e a democratização da Web dinâmica