L'autore dell'articolo Douglas McIlroy è un matematico, ingegnere e programmatore americano. È noto per aver sviluppato il pipeline nel sistema operativo Unix, i principi della programmazione orientata ai componenti e diverse utilità originali: spell, diff, sort, join, speak, tr.
A volte ci si imbatte davvero in programmi eccezionali. Ripensando, ho stilato un elenco di autentiche gemme di Unix nel corso degli anni. Per lo più, si tratta di programmi piuttosto rari e non così necessari. Ma ciò che li contraddistingue è l’originalità. Non riesco nemmeno a immaginare di aver avuto l'idea di uno di essi.
Condividi quali programmi ti hanno colpito così tanto?
PDP-7 Unix
Per iniziare, il sistema PDP-7 Unix. La sua semplicità e potenza mi hanno fatto passare da un potente mainframe a una macchina minuscola. Qui si concentra l'essenza del file system gerarchico, una shell separata e la gestione dei processi a livello utente, il che Multics sui mainframe non è riuscito a realizzare dopo centinaia di uomini-anno di sviluppo. Anche i difetti di Unix (ad esempio, la struttura delle registrazioni nel file system) erano altrettanto istruttivi e liberatori quanto le sue innovazioni (ad esempio, il reindirizzamento dell'input-output nella shell).
dc
La libreria matematica per calcolatori desktop a precisione variabile di Robert Morris utilizzava un'analisi retrospettiva degli errori per determinare la precisione necessaria a ogni passo per raggiungere la precisione desiderata dall'utente. Durante la conferenza NATO sulla ingegneria del software del 1968, nella mia relazione sui componenti software, ho proposto procedure standard in grado di fornire un risultato con qualsiasi precisione desiderata, ma non sapevo come realizzarle nella pratica. dc rimane ancora l'unico programma che conosco capace di ciò.
typo
Typo organizza le parole nel testo in base alla loro somiglianza con il resto del contenuto. Errori come 'hte' tendono a trovarsi alla fine dell'elenco. Robert Morris era orgoglioso di affermare che il programma funzionerebbe bene in qualsiasi lingua. Anche se typo non aiuta a trovare errori fonetici, è diventato un vero e proprio punto di riferimento per chi digita testi e ha offerto un grande aiuto molto prima dell'arrivo di una correzione ortografica lessicale, molto meno interessante ma più precisa.
Typo è sorprendentemente strutturata all'interno tanto quanto all'esterno. L'algoritmo di misurazione della somiglianza si basa sulla frequenza di apparizione dei trigrammi, che vengono considerati in un array di 26×26×26. In una memoria minuscola c'era a malapena spazio per contatori a byte singolo, quindi è stato implementato un schema di compressione per convertire numeri grandi in contatori piccoli. Per evitare il sovraccarico, i contatori venivano aggiornati su base probabilistica, mantenendo una stima del valore del logaritmo del contatore.
eqn
Con l'arrivo del fotonotatore, è diventato possibile, ma incredibilmente faticoso, trascrivere la classica notazione matematica. Lorinda Cherry ha deciso di sviluppare un linguaggio di descrizione di livello superiore, e presto si unì a lei Brian Kernighan. Il loro brillante passo consisteva nell'esprimere la tradizione orale in forma scritta, quindi eqn si è rivelato sorprendentemente facile da imparare. Il primo preprocessore della lingua per descrivere espressioni matematiche, eqn da allora è stato quasi senza miglioramenti.
struct
Brenda Baker ha avviato lo sviluppo del suo convertitore da Fortan a Ratfor contro il consiglio del suo capo — me. Pensavo che questo potesse portare a un riordinamento speciale del testo sorgente. Sarà esente da numeri di operatore, ma per il resto non più leggibile di un codice Fortran ben strutturato. Brenda ha dimostrato che mi sbagliavo. Ha scoperto che ogni programma Fortran ha una forma canonica strutturata. I programmatori preferivano la forma canonica piuttosto che ciò che avevano scritto inizialmente.
pascal
La diagnostica della sintassi nel compilatore sviluppato dal gruppo di Sue Graham a Berkeley è stata la più utile di tutte quelle che abbia mai visto — ed è stata eseguita automaticamente. In caso di errore di sintassi, il compilatore propone di inserire un lessico per continuare l'analisi sintattica. Nessun tentativo di spiegare cosa non va. Con questo compilatore ho imparato Pascal in una sola serata, senza avere alcun manuale a disposizione.
parti
modulo nascosto all'interno del pacchetto WWB (Writer’s Workbench) parti Lorinda Cherry identifica le parti del discorso per le parole nel testo in inglese basandosi solo su un piccolo vocabolario, regole di ortografia e grammatica. Da questa annotazione, il programma WWB produce indicatori stilometrici del testo, come la prevalenza di aggettivi, frasi subordinate e frasi complesse. Quando Lorinda ha rilasciato un'intervista nel programma Today su NBC e ha parlato dell'innovativa verifica della grammatica nei testi di WWB, è stata la prima menzione di Unix in televisione.
egrep
Al Aho si aspettava che il suo riconoscitore di espressioni regolari deterministico superasse il riconoscitore non deterministico di Ken. Sfortunatamente, quest'ultimo aveva già completato l'analisi di espressioni regolari complesse mentre egrep costruiva il suo automa deterministico. Per vincere in questa corsa, Al Aho ha eluso la maledizione della crescita esponenziale della tabella degli stati dell'automa, inventando un modo per costruire al volo solo le voci della tabella che vengono effettivamente visitate durante il riconoscimento.
crabs
Il programma meta affascinante di Luca Cardelli per il sistema finestra Blit generava granchi virtuali che vagavano nello spazio vuoto dello schermo, mordendo sempre di più i bordi delle finestre attive.
Alcuni pensieri comuni
Anche se non è visibile dall'esterno, la teoria e gli algoritmi hanno svolto un ruolo cruciale nella creazione della maggior parte di questi programmi: typo, dc, struct, pascal, egrep. In effetti, ciò che sorprende di più è proprio l'applicazione inusuale della teoria.
Quasi metà della lista è stata scritta da autrici, come pascal, struct, parts, eqn, un dato che supera significativamente la percentuale di donne nel campo delle scienze informatiche.
Douglas McIlroy
Marzo 2020
Fonte: habr.com
