Los programas más maravillosos de Unix

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

A veces te encuentras con programas realmente maravillosos. Hurgando en mi memoria, he compilado una lista de las perlas reales de Unix para todos los años. Básicamente, estos son programas bastante raros y no tan necesarios. Pero lo que los distingue es la originalidad. Ni siquiera puedo imaginar que se me ocurrió la idea de ninguno de ellos.

Comparte, ¿qué programas también te han afectado tanto?

PDP-7 Unix


Para empezar, el propio sistema PDP-7 Unix. Su simplicidad y potencia me hicieron cambiar de una poderosa unidad central a una máquina pequeña. Aquí está la quintaesencia del sistema de archivos jerárquico, un control de proceso de nivel de usuario y shell separado, que Multics no pudo implementar en mainframes después de cientos de años de desarrollo. Las desventajas de Unix (por ejemplo, la estructura de registros en el sistema de archivos) fueron tan instructivas y liberadoras como sus innovaciones (por ejemplo, la redirección de entrada-salida en el shell).

corriente continua


La biblioteca matemática de Robert Morris para una calculadora de escritorio de precisión variable utilizó análisis de error inverso para determinar la precisión necesaria en cada paso para lograr una precisión especificada por el usuario. En una conferencia de ingeniería de software de la OTAN de 1968, en mi informe sobre componentes de software, propuse procedimientos de referencia que pueden producir el resultado de 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 de acuerdo con su similitud con el resto del texto. Los anteojos como 'hte' tienden a estar al final de la lista. Robert Morris dijo con orgullo que el programa funcionaría igualmente bien para cualquier idioma. Aunque el error tipográfico no ayuda a encontrar errores fonéticos, se convirtió en un verdadero hallazgo para cualquiera que escriba, e hizo mucho bien antes de que apareciera un corrector ortográfico mucho menos interesante, pero más preciso.

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

eqn


Con el advenimiento de la fotocomposición, se hizo posible, pero terriblemente agotador, derivar la notación matemática clásica. Lorinda Cherry decidió desarrollar un lenguaje de descripción de nivel superior, y pronto Brian Kernigan se unió a ella. Su brillante movimiento fue expresar la tradición oral por escrito, por lo que eqn fue sorprendentemente fácil de aprender. El primer preprocesador de su tipo del lenguaje para describir expresiones matemáticas, eqn apenas ha mejorado desde entonces.

estructura


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

pascal


Los diagnósticos de sintaxis en el compilador creado por el grupo Sue Graham en Berkeley fueron los más útiles de todos los que he visto, y se llevaron a cabo automáticamente. Con un error de sintaxis, el compilador sugiere insertar un token para continuar el análisis. Ningún intento de explicar lo que está mal. Con este compilador, aprendí a Pascal en una noche, sin ninguna guía a la mano.

partes


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

egrep


Al Aho esperaba que su resolutor determinista de expresión regular superara al clásico resolutor no determinista de Ken. Desafortunadamente, este último ya estaba completando un paso en expresiones regulares complejas mientras egrepconstruía su automatización determinista. Para ganar esta carrera, Al Aho eludió la maldición del crecimiento exponencial de la tabla de estado del autómata, inventando una forma de construir sobre la marcha solo aquellos registros de la tabla que realmente se visitan durante el reconocimiento.

cangrejos


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

Algunos pensamientos generales


Aunque esto 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, lo más sorprendente es la aplicación inusual de la teoría.

Los autores originales de casi la mitad de la lista (pascal, struct, parts, eqn) fueron mujeres, lo que excede significativamente la participación demográfica de las mujeres en el campo de la informática.

Douglas McIlroy
Marzo, 2020

All Articles