Os mellores programas de Unix

O autor do artigo, Douglas McIlroy, é un matemático, enxeñeiro e programador estadounidense. É máis coñecido por desenvolver o pipeline no sistema operativo Unix, os principios da programación orientada a compoñentes e varias utilidades orixinais: spell, diff, sort, join, speak, tr.

Ás veces te atopas con programas realmente marabillosos. Despois de remexer na miña memoria, compilei unha lista de auténticas xoias de Unix ao longo dos anos. Basicamente, estes son programas bastante raros e non tan necesarios. Pero o que os fai destacar é a súa orixinalidade. Nin sequera podo imaxinar que eu mesmo se me ocorrese a idea de ningún deles.

Comparte que programas tamén estás tan impresionado?

PDP-7 Unix

Para comezar, o propio sistema Unix PDP-7. A súa sinxeleza e potencia fixéronme pasar dun poderoso mainframe a unha pequena máquina. É o sistema de ficheiros xerárquico por excelencia, o shell separado e o control de procesos a nivel de usuario que Multics no mainframe non puido acadar despois de centos de anos de desenvolvemento. As deficiencias de Unix (como a estrutura de rexistros do sistema de ficheiros) foron tan instrutivas e liberadoras como as súas innovacións (como a redirección de E/S de shell).

dc

A biblioteca matemática de calculadoras de escritorio de precisión variable de Robert Morris utilizou a análise de erros inversos para determinar a precisión necesaria en cada paso para conseguir unha precisión de resultado especificada polo usuario. Na Conferencia de Enxeñaría de Software da OTAN de 1968, no meu informe sobre compoñentes de software, propuxen procedementos de referencia que podían producir a precisión desexada, pero non sabía como poñelos en práctica. dc aínda é o único programa que sei que pode facelo.

erro de ortografía

Typo ordena as palabras no texto segundo a súa semellanza co resto do texto. Os erros ortográficos como "hte" adoitan estar ao final da lista. Robert Morris dixo con orgullo que o programa funcionaría igual de ben para calquera idioma. Aínda que os erros ortográficos non che axudan a atopar erros fonéticos, foi unha auténtica bendición para todos os tipógrafos e fixo moito ben antes de que chegase o corrector ortográfico do dicionario, moito menos interesante pero máis preciso.

A errata é tan inesperada por dentro como por fóra. O algoritmo de medición de semellanza baséase na frecuencia de aparición de trigramas, que se contan nunha matriz de 26×26×26. A pequena memoria apenas tiña espazo suficiente para contadores dun byte, polo que se implementou un esquema para comprimir grandes números en contadores pequenos. Para evitar desbordamentos, os contadores foron actualizados de forma probabilística, mantendo unha estimación do logaritmo do valor do contador.

eqn

Coa chegada da fotocomposición, fíxose posible, pero terriblemente tedioso, imprimir a notación matemática clásica. Lorinda Cherry decidiu desenvolver unha linguaxe de descrición de nivel superior, e pronto Brian Kernigan uniuse a ela. O seu movemento xenial foi poñer a tradición oral por escrito, polo que eqn era notablemente fácil de aprender. O primeiro preprocesador de linguaxe de expresións matemáticas deste tipo, eqn non se mellorou moito desde entón.

estrutura

Brenda Baker comezou a desenvolver o seu conversor Fortan-to-Ratfor contra o consello do seu xefe, eu. Pensei que isto podería levar a unha reordenación especial do texto orixinal. Estará libre de números de declaración, pero doutro xeito non será máis lexible que o código Fortran ben estruturado. Brenda demostrou que estaba equivocado. Ela descubriu que cada programa Fortran ten unha forma estruturada canónicamente. Os programadores preferiron a forma canónica, en lugar do que eles mesmos escribiron orixinalmente.

pascal

O diagnóstico de sintaxe no compilador creado polo grupo de Sue Graham en Berkeley foi o máis útil que vin, e fíxose automaticamente. En caso de erro de sintaxe, o compilador pídelle que insira un token para continuar coa análise. Non hai intento de explicar o que está mal. Con este compilador, aprendín Pascal nunha noite sen ningún manual a man.

pezas

Oculto dentro do módulo WWB (Writer's Workbench). parts Lorinda Cherry determina as partes do discurso para as palabras nun texto en inglés baseándose só nun pequeno dicionario, regras ortográficas e gramaticais. A partir desta anotación, o programa WWB mostra indicadores estilométricos do texto, como a prevalencia de adxectivos, oracións subordinadas e oracións complexas. Cando Lorinda foi entrevistada no Today da NBC e falou sobre a innovadora comprobación gramatical dos textos de WWB, foi a primeira mención de Unix na televisión.

egrep

Al Aho esperaba que o seu resolvedor de expresións regulares determinista superara ao clásico resolvedor non determinista de Ken. Desafortunadamente, este último xa estaba a completar un paso por expresións regulares complexas, mentres egrep construíu a súa propia automatización determinista. Para gañar aínda esta carreira, Al Aho sorteou a maldición do crecemento exponencial da táboa estatal do autómata inventando un xeito de construír sobre a marcha só aquelas entradas da táboa que realmente se visitan durante o recoñecemento.

cangrexos

O encantador metaprograma de Luca Cardelli para o sistema de fiestras Blit lanzou cangrexos virtuais que vagaban polo espazo baleiro da pantalla, mordendo cada vez máis os bordos das fiestras activas.

Algunhas reflexións xerais

Aínda que non é visible desde o exterior, a teoría e os algoritmos xogaron un papel decisivo na creación da maioría destes programas: typo, dc, struct, pascal, egrep. De feito, é a aplicación inusual da teoría o que máis sorprende.

Case a metade da lista (pascal, struct, parts, eqn) foron escritas orixinalmente por mulleres, superando con moito o número demográfico das mulleres en informática.

Douglas McIlroy
Marzo de 2020


Fonte: www.habr.com

Engadir un comentario