Os melhores programas Unix

O autor do artigo, Douglas McIlroy, é um matemático, engenheiro e programador americano. Ele é mais conhecido por desenvolver o pipeline no sistema operacional Unix, os princípios da programação orientada a componentes e vários utilitários originais: spell, diff, sort, join, speak, tr.

Às vezes você encontra programas realmente maravilhosos. Depois de vasculhar minha memória, compilei uma lista de joias reais do Unix ao longo dos anos. Basicamente, estes são programas bastante raros e não tão necessários. Mas o que os distingue é a sua originalidade. Não consigo nem imaginar que eu mesmo tive a ideia de algum deles.

Compartilhe quais programas você também está tão impressionado?

PDP-7 Unix

Para começar, o próprio sistema PDP-7 Unix. Sua simplicidade e poder me fizeram passar de um mainframe poderoso para uma máquina minúscula. É o sistema de arquivo hierárquico quintessencial, shell separado e controle de processo no nível do usuário que o Multics no mainframe não conseguiu alcançar após centenas de anos de desenvolvimento. As deficiências do Unix (como a estrutura de registro do sistema de arquivos) eram tão instrutivas e libertadoras quanto suas inovações (como o redirecionamento de E/S do shell).

dc

A Biblioteca Matemática da Calculadora de Mesa de Precisão Variável de Robert Morris usou a análise de erro inversa para determinar a precisão necessária em cada etapa para obter uma precisão de resultado especificada pelo usuário. Na Conferência de Engenharia de Software da OTAN de 1968, em meu relatório sobre componentes de software, propus procedimentos de referência que poderiam produzir qualquer precisão desejada, mas não sabia como colocá-los em prática. dc ainda é o único programa que conheço que pode fazer isso.

erro de datilografia

O erro de digitação organiza as palavras no texto de acordo com sua semelhança com o restante do texto. Erros ortográficos como 'hte' tendem a estar no final da lista. Robert Morris disse com orgulho que o programa funcionaria igualmente bem para qualquer idioma. Embora o erro de digitação não o ajude a encontrar erros fonéticos, foi um verdadeiro benefício para todos os tipógrafos e fez muito bem antes que o verificador ortográfico do dicionário, muito menos interessante, mas mais preciso, aparecesse.

O erro de digitação é tão inesperado por dentro quanto por fora. O algoritmo de medição de similaridade é baseado na frequência de ocorrência dos trigramas, que são contados em uma matriz 26×26×26. A pequena memória mal tinha espaço suficiente para contadores de um byte, então um esquema foi implementado para comprimir grandes números em pequenos contadores. Para evitar estouro, os contadores foram atualizados de forma probabilística, mantendo uma estimativa do logaritmo do valor do contador.

eqn

Com o advento da fotocomposição, tornou-se possível, mas terrivelmente tedioso, imprimir a notação matemática clássica. Lorinda Cherry decidiu desenvolver uma linguagem de descrição de alto nível e logo Brian Kernigan se juntou a ela. Sua jogada brilhante foi colocar a tradição oral na escrita, de modo que o eqn era extraordinariamente fácil de aprender. O primeiro pré-processador de linguagem de expressão matemática de seu tipo, eqn, não foi muito aprimorado desde então.

struct

Brenda Baker começou a desenvolver seu conversor Fortan-to-Ratfor contra o conselho de seu chefe, eu. Achei que isso poderia levar a uma reordenação especial do texto original. Ele estará livre de números de instrução, mas não será mais legível do que um código Fortran bem estruturado. Brenda provou que eu estava 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

O diagnóstico de sintaxe no compilador criado pelo grupo de Sue Graham em Berkeley foi o mais útil que já vi — e foi feito automaticamente. Em um erro de sintaxe, o compilador solicita que você insira um token para continuar a análise. Nenhuma tentativa de explicar o que está errado. Com este compilador, aprendi Pascal em uma noite sem nenhum manual em mãos.

peças

Escondido dentro do módulo WWB (Writer's Workbench) parts Lorinda Cherry determina partes do discurso para palavras em um texto em inglês com base apenas em um pequeno dicionário, ortografia e regras gramaticais. Com base nessa anotação, o programa WWB exibe indicadores estilométricos do texto, como prevalência de adjetivos, orações subordinadas e frases complexas. Quando Lorinda foi entrevistada no NBC's Today e falou sobre a verificação gramatical inovadora em textos WWB, foi a primeira menção do Unix na televisão.

egrep

Al Aho esperava que seu resolvedor de expressão regular determinístico superasse o resolvedor não determinístico clássico de Ken. Infelizmente, este último já estava completando uma passagem por expressões regulares complexas, enquanto egrep construiu sua própria automação determinística. Para ainda vencer esta corrida, Al Aho contornou a maldição do crescimento exponencial da tabela de estado do autômato, inventando uma maneira de construir na hora apenas as entradas na tabela que são realmente visitadas durante o reconhecimento.

Caranguejos

O charmoso metaprograma de Luca Cardelli para o sistema de janelas Blit liberou caranguejos virtuais que percorriam o espaço vazio da tela, mordendo cada vez mais as bordas das janelas ativas.

Alguns pensamentos gerais

Embora não seja visível de fora, a teoria e os algoritmos tiveram um papel decisivo na criação da maioria desses programas: typo, dc, struct, pascal, egrep. Na verdade, é a aplicação incomum da teoria que é mais surpreendente.

Quase metade da lista - pascal, struct, parts, eqn - foi originalmente escrita por mulheres, superando em muito o número demográfico de mulheres na ciência da computação.

Douglas McIlroy
Março, 2020


Fonte: habr.com

Adicionar um comentário