I migliori programmi Unix

L'autore dell'articolo, Douglas McIlroy, è un matematico, ingegnere e programmatore americano. È meglio conosciuto per aver sviluppato la pipeline nel sistema operativo Unix, i principi della programmazione orientata ai componenti e diverse utilità originali: spell, diff, sort, join, speak, tr.

A volte ti imbatti in programmi davvero meravigliosi. Dopo aver rovistato nella mia memoria, ho compilato un elenco di vere gemme Unix nel corso degli anni. Fondamentalmente, questi sono programmi piuttosto rari e non così necessari. Ma ciò che li distingue è la loro originalità. Non riesco nemmeno a immaginare di aver avuto io stesso l'idea di nessuno di loro.

Condividi quali programmi sei anche così colpito?

Unix PDP-7

Per cominciare, il sistema Unix PDP-7 stesso. La sua semplicità e potenza mi hanno fatto passare da un potente mainframe a una minuscola macchina. È la quintessenza del file system gerarchico, della shell separata e del controllo dei processi a livello di utente che Multics sul mainframe non è stato in grado di ottenere dopo centinaia di anni-uomo di sviluppo. I difetti di Unix (come la struttura dei record del file system) erano altrettanto istruttivi e liberatori delle sue innovazioni (come il reindirizzamento I/O della shell).

dc

La libreria matematica della calcolatrice desktop a precisione variabile di Robert Morris ha utilizzato l'analisi dell'errore inverso per determinare la precisione richiesta in ogni fase per ottenere una precisione del risultato specificata dall'utente. Alla NATO Software Engineering Conference del 1968, nel mio rapporto sui componenti software, ho proposto procedure di riferimento che potevano produrre l'accuratezza desiderata, ma non sapevo come metterle in pratica. dc è ancora l'unico programma che conosco che può farlo.

errore di battitura

Typo dispone le parole nel testo in base alla loro somiglianza con il resto del testo. Gli errori di ortografia come "hte" tendono ad essere alla fine dell'elenco. Robert Morris ha affermato con orgoglio che il programma avrebbe funzionato ugualmente bene per qualsiasi lingua. Sebbene la digitazione non ti aiuti a trovare errori fonetici, è stato un vero vantaggio per tutti i tipografi e ha fatto molto bene prima che arrivasse il correttore ortografico del dizionario molto meno interessante ma più accurato.

L'errore di battitura è tanto inaspettato all'interno quanto all'esterno. L'algoritmo di misurazione della somiglianza si basa sulla frequenza di occorrenza dei trigrammi, che vengono contati in un array 26×26×26. La minuscola memoria aveva a malapena spazio sufficiente per contatori da un byte, quindi è stato implementato uno schema per comprimere grandi numeri in piccoli contatori. Per evitare overflow, i contatori sono stati aggiornati su base probabilistica, mantenendo una stima del logaritmo del valore del contatore.

eq

Con l'avvento della fotocomposizione, è diventato possibile, ma terribilmente noioso, stampare la notazione matematica classica. Lorinda Cherry ha deciso di sviluppare un linguaggio descrittivo di livello superiore e presto Brian Kernigan si è unito a lei. La loro mossa geniale è stata quella di mettere per iscritto la tradizione orale, quindi eqn è stato straordinariamente facile da imparare. Il primo preprocessore del linguaggio di espressione matematica del suo genere, eqn non è stato migliorato molto da allora.

struct

Brenda Baker ha iniziato a sviluppare il suo convertitore da Fortan a Ratfor contro il consiglio del suo capo, io. Ho pensato che questo potesse portare a uno speciale riordino del testo originale. Sarà privo di numeri di istruzione, ma per il resto non più leggibile del codice Fortran ben strutturato. Brenda mi ha dimostrato che mi sbagliavo. Ha scoperto che ogni programma Fortran ha una forma strutturata in modo canonico. I programmatori preferivano la forma canonica, piuttosto che quella che loro stessi avevano originariamente scritto.

pascal

La diagnostica della sintassi nel compilatore creato dal gruppo di Sue Graham a Berkeley è stata la più utile che abbia mai visto, ed è stata eseguita automaticamente. In caso di errore di sintassi, il compilatore richiede di inserire un token per continuare l'analisi. Nessun tentativo di spiegare cosa c'è che non va. Con questo compilatore ho imparato Pascal in una sera senza alcun manuale a portata di mano.

Ricambi

Nascosto all'interno del modulo WWB (Writer's Workbench). parts Lorinda Cherry determina le parti del discorso per le parole in un testo inglese basandosi solo su un piccolo dizionario, regole ortografiche e grammaticali. Sulla base di questa annotazione, il programma WWB visualizza indicatori stilometrici del testo, come la prevalenza di aggettivi, proposizioni subordinate e frasi complesse. Quando Lorinda è stata intervistata su Today della NBC e ha parlato dell'innovativo controllo grammaticale nei testi della WWB, è stata la prima menzione di Unix in televisione.

egrep

Al Aho si aspettava che il suo risolutore di espressioni regolari deterministico superasse il classico risolutore non deterministico di Ken. Sfortunatamente, quest'ultimo stava già completando un passaggio attraverso espressioni regolari complesse, mentre egrep ha costruito la propria automazione deterministica. Per vincere ancora questa corsa, Al Aho ha aggirato la maledizione della crescita esponenziale della tabella di stato dell'automa inventando un modo per costruire al volo solo quelle voci nella tabella che vengono effettivamente visitate durante il riconoscimento.

Granchi

L'affascinante meta-programma di Luca Cardelli per il sistema di finestre Blit ha rilasciato granchi virtuali che vagavano per lo spazio vuoto dello schermo, mordendo sempre di più i bordi delle finestre attive.

Alcune considerazioni generali

Sebbene non sia visibile dall'esterno, la teoria e gli algoritmi hanno giocato un ruolo decisivo nella creazione della maggior parte di questi programmi: typo, dc, struct, pascal, egrep. In effetti, è l'insolita applicazione della teoria che è più sorprendente.

Quasi la metà dell'elenco - pascal, struct, parts, eqn - è stata originariamente scritta da donne, superando di gran lunga la demografia delle donne nell'informatica.

Douglas McIlroy
Marzo, 2020


Fonte: habr.com

Aggiungi un commento