06.10.2026 · Signal Titans Editorial
Linhas do PDP-7: A Jornada de Meio Século do Utilitário cat do Unix
Como o utilitário cat do Unix, criado por Ken Thompson em 1969, evoluiu do assembly e C até as reescritas no BSD para equipar sistemas operacionais modernos.

Em 1969, Ken Thompson usou um computador PDP-7 da Digital Equipment Corporation para escrever a versão original do utilitário cat do Unix. Como a linguagem de programação C ainda não existia, Thompson desenvolveu a ferramenta em assembly do PDP-7, utilizando um montador próprio que ele mesmo criou. Seu montador expandia as instruções padrão ao permitir que ponto e vírgula separassem múltiplas instruções na mesma linha e ao introduzir rótulos numéricos temporários de 0 a 9 para simplificar desvios locais. De acordo com a documentação histórica do código-fonte, essa implementação inicial em assembly de 1969 já contava com versões primitivas com buffer das rotinas getc e putc para manipular operações de entrada e saída.
Fundamentos em Assembly no PDP-7
As extensões personalizadas do montador projetadas por Thompson para o PDP-7 permitiram que os primeiros programas do Unix permanecessem compactos enquanto gerenciavam rotinas de hardware de baixo nível. Os rótulos temporários de 0 a 9 reduziram a sobrecarga na tabela de símbolos do montador, permitindo que Thompson reutilizasse alvos numéricos de desvio ao longo do arquivo sem precisar inventar nomes exclusivos para cada pequena ramificação.
Aprimoramento no PDP-11 e a Transição para o C
Quando o Unix foi portado para o PDP-11 da Digital Equipment Corporation, o cat foi reescrito para o conjunto de instruções do novo sistema. A versão para PDP-11 aprimorou o comportamento do utilitário para que, se invocado sem argumentos de arquivo ou com um único hífen, ele lesse diretamente da entrada padrão. Uma mudança estrutural importante ocorreu com a Seventh Edition do Unix, que introduziu a primeira implementação do cat escrita na linguagem C. Centrada em um laço clássico de leitura de duas linhas que processava caracteres até atingir o sinal de fim de arquivo, essa versão da Seventh Edition reconhecia apenas uma opção de linha de comando: a flag -u, que desativava o buffer de bloco padrão de 512 bytes.
As Opções do 4BSD e a Reescrita do Net/2 por Kevin Fall
À medida que o software Unix evoluía em ambientes acadêmicos, a quarta versão do Berkeley Software Distribution — conhecida como 4BSD — expandiu a interface de linha de comando do utilitário em 1980. Essa versão introduziu flags como -n, -b, -v, -s, -e e -t para controlar a numeração de linhas e a exibição de caracteres. Em 1989, o cientista da computação Kevin Fall assumiu a reinterpretação completa do cat para o BSD Net/2, um projeto idealizado para eliminar o código-fonte proprietário do Unix da AT&T da distribuição. Fall reorganizou a ferramenta separando sua execução em um modo raw para cópia simples de caracteres e um modo cooked para gerenciar opções de formatação da linha de comando.
Sistemas Operacionais Modernos e a Durabilidade do Código
A reescrita arquitetônica de Fall provou ser notavelmente durável ao longo de décadas de lançamentos de sistemas operacionais. Em 2007, a Apple importou uma implementação do cat do FreeBSD de 2005 — que mantinha a estrutura central de Fall — para o Mac OS X 10.5 Leopard. Embora as bibliotecas de software ao redor tenham evoluído, a estrutura subjacente da base de código de Fall de 1989 permaneceu intacta nas ferramentas de linha de comando do sistema. Hoje, inspecionar o código-fonte do cat em uma instalação moderna do macOS revela o nome de Kevin Fall preservado logo no topo do cabeçalho do arquivo.
O funcionamento contínuo da estrutura de código de 1989 de Fall em milhões de notebooks contemporâneos demonstra como artefatos de software fundamentais persistem através de décadas de transformações na computação. Enquanto interfaces de usuário e frameworks de aplicação de alto nível passam por reformulações constantes, utilitários centrais como o cat sobrevivem porque sua mecânica subjacente resolve tarefas fundamentais de manipulação de dados de maneira confiável. Códigos escritos há trinta ou cinquenta anos continuam ativos e em uso sob a superfície dos sistemas operacionais modernos.
Ilustração editorial gerada por IA; não é uma fotografia documental.