Os programas Unix mais maravilhosos

O autor do artigo, Douglas McIlroy, é um matemático, engenheiro e programador americano. Ele é mais conhecido por desenvolver um pipeline no sistema operacional Unix, princípios de programação orientada a componentes e vários utilitários originais: soletrar, diferenciar, classificar, ingressar, falar, tr.

Às vezes, você encontra programas realmente maravilhosos. Revirando minha memória, compilei uma lista de verdadeiras jóias do Unix por todos os anos. Basicamente, estes são programas bastante raros e não tão necessários. Mas o que os diferencia é a originalidade. Eu não consigo nem imaginar que eu mesmo tive a ideia de qualquer um deles.

Compartilhar, quais programas também atingiram você tanto?

PDP-7 Unix


Para iniciantes, o próprio sistema PDP-7 Unix. Sua simplicidade e poder me fizeram mudar de um mainframe poderoso para uma máquina minúscula. Aqui está a quintessência do sistema de arquivos hierárquico, um shell separado e um controle de processo no nível do usuário, que o Multics não pôde implementar nos mainframes após centenas de anos-homem de desenvolvimento. As desvantagens do Unix (por exemplo, a estrutura dos registros no sistema de arquivos) foram tão instrutivas e libertadoras quanto suas inovações (por exemplo, redirecionamento de entrada e saída no shell).

dc


A biblioteca de matemática de Robert Morris para uma calculadora de mesa de precisão variável usou a análise de erro reverso para determinar a precisão necessária em cada etapa para obter uma precisão especificada pelo usuário. Em uma conferência de engenharia de software da OTAN de 1968, em meu relatório sobre componentes de software, propus procedimentos de referência que podem produzir o resultado da precisão desejada, mas não sabia como colocá-los em prática. dc ainda é o único programa conhecido por mim que pode fazer isso.

erro de digitação


O erro de digitação organiza as palavras no texto de acordo com a semelhança com o restante do texto. Óculos como 'hte' tendem a estar no final da lista. Robert Morris disse orgulhosamente que o programa funcionaria igualmente bem para qualquer idioma. Embora o erro de digitação não ajude a encontrar erros fonéticos, tornou-se um achado real para qualquer um que digitasse, e fez muito bem antes de aparecer uma verificação ortográfica muito menos interessante, mas mais precisa no dicionário.

O erro de digitação é tão inesperadamente organizado dentro quanto fora. O algoritmo de medição de similaridade é baseado na frequência de ocorrência de trigramas, contados em uma matriz de 26 × 26 × 26. Em pouca memória, não havia espaço suficiente para contadores de byte único; portanto, foi implementado um esquema para compactar números grandes em contadores pequenos. Para evitar transbordamentos, os contadores foram atualizados de forma probabilística, apoiando a estimativa do logaritmo do valor do contador.

eqn


Com o advento da fotocomposição, tornou-se possível, mas terrivelmente cansativo derivar a notação matemática clássica. Lorinda Cherry decidiu desenvolver uma linguagem de descrição de nível superior e logo Brian Kernigan se juntou a ela. Sua brilhante jogada foi expressar a tradição oral por escrito, de modo que o eqn era surpreendentemente fácil de aprender. O primeiro de seu tipo pré-processador da linguagem para descrever expressões matemáticas, o eqn quase não melhorou desde então.

struct


Brenda Baker iniciou o desenvolvimento de seu conversor de Fortan para Ratfor, ao contrário do conselho de seu chefe - eu. Eu pensei que isso poderia levar a uma reordenação especial do texto fonte. Ele estará livre de números de operadores, mas, caso contrário, não será mais legível que o código bem estruturado do Fortran. Brenda provou que estou errado. Ela descobriu que todo programa Fortran tem uma forma canonicamente estruturada. Os programadores preferiram a forma canônica ao invés do que eles mesmos escreveram originalmente.

pascal


Os diagnósticos de sintaxe no compilador criados pelo grupo Sue Graham em Berkeley foram os mais úteis de todos os que eu já vi - e foram realizados automaticamente. Com um erro de sintaxe, o compilador sugere a inserção de um token para continuar analisando. Nenhuma tentativa de explicar o que está errado. Com este compilador, aprendi Pascal em uma noite, sem nenhuma orientação em mãos.

partes


Oculto dentro do partspacote WWB (Writer's Workbench) , o módulo de Lorinda Cherry define as partes do discurso para palavras em texto em inglês com base apenas em um pequeno dicionário, regras de ortografia e gramática. De acordo com esta anotação, o programa WWB exibe indicadores estilométricos do texto, como predominância de adjetivos, cláusulas subordinadas e frases complexas. Quando Lorinda foi entrevistada no canal Today da NBC e falou sobre a verificação gramatical inovadora nos textos da WWB, essa foi a primeira menção do Unix na televisão.

egrep


Al Aho esperava que seu resolvedor determinístico de expressões regulares superasse o resolvedor não determinístico clássico de Ken. Infelizmente, o último já estava concluindo uma aprovação em expressões regulares complexas enquanto egrepconstruía sua automação determinística. Para vencer esta corrida, Al Aho contornou a maldição do crescimento exponencial da tabela de estados do autômato, inventando uma maneira de construir em tempo real apenas os registros da tabela que são realmente visitados durante o reconhecimento.

caranguejos


O encantador metaprograma de Luca Cardelli para o sistema de janelas Blit produziu caranguejos virtuais que vagavam pelo espaço vazio da tela, cada vez mais cortando as bordas das janelas ativas.

Algumas reflexões gerais


Embora isso não seja visível de fora, a teoria e os algoritmos desempenharam um papel decisivo na criação da maioria desses programas: erro de digitação, CC, estrutura, pascal, egrep. De fato, o mais surpreendente é a aplicação incomum da teoria.

Os autores originais de quase metade da lista - pascal, struct, parts, eqn - eram mulheres, o que excede significativamente a parcela demográfica das mulheres no campo da ciência da computação.

Douglas McIlroy
março de 2020

All Articles