Los mejores programas de Unix

El autor del artículo, Douglas McIlroy, es un matemático, ingeniero y programador estadounidense. Es mejor conocido por desarrollar la canalización en el sistema operativo Unix, los principios de la programación orientada a componentes y varias utilidades originales: deletrear, diferenciar, clasificar, unir, hablar, tr.

A veces te encuentras con programas realmente maravillosos. Después de hurgar en mi memoria, compilé una lista de verdaderas gemas de Unix a lo largo de los años. Básicamente, estos son programas bastante raros y no tan necesarios. Pero lo que los hace destacar es su originalidad. Ni siquiera puedo imaginar que a mí mismo se me ocurrió la idea de alguno de ellos.

Comparta qué programas también está tan impresionado?

PDP-7Unix

Para empezar, el propio sistema Unix PDP-7. Su sencillez y potencia me hicieron pasar de un mainframe potente a una máquina diminuta. Es el sistema de archivos jerárquico por excelencia, el shell separado y el control de procesos a nivel de usuario que Multics en el mainframe no ha podido lograr después de cientos de años-hombre de desarrollo. Las deficiencias de Unix (como la estructura de registro del sistema de archivos) fueron tan instructivas y liberadoras como sus innovaciones (como la redirección de E/S de shell).

dc

La biblioteca matemática de la calculadora de escritorio de precisión variable de Robert Morris utilizó un análisis de error inverso para determinar la precisión requerida en cada paso para lograr una precisión de resultado especificada por el usuario. En la Conferencia de Ingeniería de Software de la OTAN de 1968, en mi informe sobre componentes de software, propuse procedimientos de referencia que podrían producir cualquier precisión deseada, pero no sabía cómo ponerlos en práctica. dc sigue siendo el único programa que conozco que puede hacer esto.

error de tipografía

Typo organiza las palabras en el texto según su similitud con el resto del texto. Las faltas de ortografía como 'hte' tienden a estar al final de la lista. Robert Morris dijo con orgullo que el programa funcionaría igual de bien para cualquier idioma. Aunque los errores tipográficos no ayudan a encontrar errores fonéticos, fueron una gran ayuda para todos los tipógrafos, e hicieron mucho bien antes de que apareciera el corrector ortográfico del diccionario, mucho menos interesante pero más preciso.

El error tipográfico es tan inesperado por dentro como por fuera. El algoritmo de medición de similitud se basa en la frecuencia de aparición de los trigramas, que se cuentan en una matriz de 26×26×26. La diminuta memoria apenas tenía espacio suficiente para contadores de un byte, por lo que se implementó un esquema para comprimir números grandes en pequeños contadores. Para evitar el desbordamiento, los contadores se actualizaron de forma probabilística, manteniendo una estimación del logaritmo del valor del contador.

eqn

Con el advenimiento de la fotocomposición, se hizo posible, pero terriblemente tedioso, imprimir la notación matemática clásica. Lorinda Cherry decidió desarrollar un lenguaje de descripción de alto nivel y pronto Brian Kernigan se unió a ella. Su movimiento brillante fue poner la tradición oral por escrito, por lo que eqn fue notablemente fácil de aprender. El primer preprocesador de lenguaje de expresión matemática de su tipo, eqn no ha mejorado mucho desde entonces.

struct

Brenda Baker comenzó a desarrollar su convertidor de Fortan a Ratfor en contra del consejo de su jefe, yo. Pensé que esto podría conducir a un reordenamiento especial del texto original. Estará libre de números de declaración, pero por lo demás no será más legible que el código Fortran bien estructurado. Brenda me demostró que estaba equivocado. Descubrió que cada programa Fortran tiene una forma estructurada canónicamente. Los programadores prefirieron la forma canónica, en lugar de lo que ellos mismos escribieron originalmente.

pascal

El diagnóstico de sintaxis en el compilador creado por el grupo de Sue Graham en Berkeley fue el más útil que he visto nunca, y se hizo automáticamente. En un error de sintaxis, el compilador le solicita que inserte un token para continuar con el análisis. Ningún intento de explicar lo que está mal. Con este compilador, aprendí Pascal en una tarde sin ningún manual a mano.

partes

Oculto dentro del módulo WWB (Writer's Workbench) parts Lorinda Cherry determina las partes del discurso de las palabras en un texto en inglés basándose solo en un pequeño diccionario, ortografía y reglas gramaticales. Con base en esta anotación, el programa WWB muestra indicadores estilométricos del texto, como la prevalencia de adjetivos, oraciones subordinadas y oraciones complejas. Cuando Lorinda fue entrevistada en el programa Today de NBC y habló sobre la revisión gramatical innovadora en los textos de WWB, fue la primera mención de Unix en la televisión.

egrep

Al Aho esperaba que su solucionador de expresiones regulares determinista superara al clásico solucionador no determinista de Ken. Desafortunadamente, este último ya estaba completando un paso a través de expresiones regulares complejas, mientras que egrep construyó su propia automatización determinista. Para seguir ganando esta carrera, Al Aho sorteó la maldición del crecimiento exponencial de la tabla de estados del autómata al inventar una forma de construir sobre la marcha solo aquellas entradas en la tabla que realmente se visitan durante el reconocimiento.

Cangrejos

El encantador metaprograma de Luca Cardelli para el sistema de ventanas Blit liberaba cangrejos virtuales que deambulaban por el espacio vacío de la pantalla, mordiendo cada vez más los bordes de las ventanas activas.

Algunos pensamientos generales

Aunque no es visible desde el exterior, la teoría y los algoritmos jugaron un papel decisivo en la creación de la mayoría de estos programas: typo, dc, struct, pascal, egrep. De hecho, es la aplicación inusual de la teoría lo que más sorprende.

Casi la mitad de la lista (pascal, struct, parts, eqn) fueron escritas originalmente por mujeres, superando con creces el número demográfico de mujeres en informática.

Douglas McIlroy
Marzo, 2020


Fuente: habr.com

Añadir un comentario