Cele mai remarcabile programe Unix

Autorul articolului, Douglas MacIlroy, este un matematician, inginer și programator american. Este cel mai cunoscut pentru dezvoltarea pipeline-ului în sistemul de operare Unix, principiile programării orientate pe componente și pentru câteva utilitare originale: spell, diff, sort, join, speak, tr.

Uneori, întâlnești cu adevărat programe remarcabile. După ce m-am scufundat în memorie, am compilat o listă cu adevărate bijuterii Unix de-a lungul anilor. În principal, acestea sunt programe destul de rare și nu atât de necesare. Dar ceea ce le face să iasă în evidență este originalitatea. Nu-mi pot imagina cum mi-ar fi venit singur ideea uneia dintre ele.

Împărtășiți, ce programe v-au impresionat și pe voi atât de mult?

PDP-7 Unix

Pentru început, sistemul PDP-7 Unix. Simplitatea și puterea sa m-au determinat să trec de la un mainframe puternic la o mașină mică. Aici se află esența sistemului ierarhic de fișiere, un shell separat și gestionarea proceselor la nivel de utilizator, ceea ce Multics pe mainframe-uri nu a reușit să realizeze după sute de ani de dezvoltare. Deficiențele Unix (de exemplu, structura înregistrărilor în sistemul de fișiere) au fost la fel de instructive și eliberatoare ca și noutățile sale (de exemplu, redirecționarea intrării și ieșirii în shell).

dc

Biblioteca matematică pentru calculatorul de birou cu precizie variabilă a lui Robert Morris a folosit analiza inversă a erorilor pentru a determina precizia necesară la fiecare pas pentru a atinge precizia dorită de utilizator. La conferința NATO de inginerie software din 1968, în prezentarea mea despre componentele software, am propus proceduri standard care pot oferi un rezultat cu orice precizie dorită, dar nu știam cum să le implementez în practică. dc rămâne singurul program pe care îl cunosc capabil de așa ceva.

typo

Typo organizează cuvintele din text în funcție de similaritatea lor cu restul textului. Greșelile precum 'hte' tind să se regăsească la sfârșitul listei. Robert Morris spunea cu mândrie că programul va funcționa la fel de bine pentru orice limbă. Deși typo nu ajută la găsirea greșelilor fonetice, s-a dovedit a fi o adevărată descoperire pentru toți cei care tastează text și a adus multe beneficii înainte ca verficarea ortografică bazată pe dicționar să devină mult mai prevalentă, dar mai puțin interesantă.

Typo este la fel de neașteptată în interior pe cât este în exterior. Algoritmul de măsurare a similarității se bazează pe frecvența de apariție a trigramelor, care sunt considerate într-un aranjament de 26×26×26. Într-o memorie minusculă abia exista loc pentru contoare pe un byte, astfel că a fost implementat un mecanism de comprimare a numerelor mari în contoare mici. Pentru a evita depășirea capacității, contoarele erau actualizate pe o bază probabilistică, menținând o estimare a logaritmului valorii contorului.

eqn

Odată cu introducerea fotonabărului, a devenit posibil, dar extrem de obositor să se genereze notația matematică clasică. Lorinda Cherry a decis să dezvolte un limbaj de descriere de nivel mai înalt, iar curând i s-a alăturat Brian Kernighan. Marea lor mutare a fost să exprime tradiția orală în format scris, astfel încât eqn s-a dovedit a fi surprinzător de ușor de învățat. Primul său tip de preprocesor pentru limbajul de descriere a expresiilor matematice, eqn nu a fost îmbunătățit semnificativ de atunci.

struct

Brenda Baker a început dezvoltarea convertorului său Fortan-to-Ratfor în ciuda sfatului meu — al șefului său. M-am gândit că acest lucru ar putea duce la o reorganizare specială a codului sursă. Acesta ar fi lipsit de numerele operatorilor, dar în rest nu ar fi fost mai lizibil decât un cod Fortran bine structurat. Brenda a demonstrat că m-am înșelat. Ea a descoperit că fiecare program Fortran are o formă canonica structurată. Programatorii preferau forma canonică, mai degrabă decât ceea ce au scris inițial.

pascal

Diagnosticul sintaxei într-un compilator creat de grupul lui Sue Graham la Berkeley a fost cel mai util dintre toate pe care le-am văzut vreodată - și a fost realizat automat. La o eroare de sintaxă, compilatorul propune inserarea unei lexeme pentru a continua analiza sintactică. Niciun efort de a explica ce nu este în regulă. Cu acest compilator, am învățat Pascal în unei singure serii, fără a avea vreo resursă la îndemână.

părți

Modulul ascuns în pachetul WWB (Writer’s Workbench) părți Lorinda Cherry definește părțile de vorbire pentru cuvintele din textul în limba engleză pe baza doar a unui vocabular limitat, regulilor de ortografie și gramatică. Această anotare permite programului WWB să genereze indicatori stilometrici ai textului, cum ar fi prevalența adjectivelor, propozițiilor subordonate și a propozițiilor complexe. Când Lorinda a fost intervievată în emisiunea Today de la NBC și a vorbit despre verificarea inovatoare a gramaticii în textele WWB, aceasta a fost prima mențiune a Unix la televizor.

egrep

Al Aho a estimat că recunoașterea sa deterministă a expresiilor regulate va depăși recunoașterea clasică nedeterministă a lui Ken. Din păcate, acesta din urmă finalizase deja procesarea unor expresii regulate complicate în timp ce egrep își construiam automatul determinist. Pentru a câștiga această întrecere, Al Aho a evitat blestemul creșterii exponențiale a tabelului de stări al automatelor, inventând o metodă de a construi în timp real doar acele înregistrări din tabelă care sunt efectiv vizitate în timpul recunoașterii.

crabi

Meta-programul fascinant al lui Luca Cardelli pentru sistemul feronerie Blit genera crabi virtuali care umblau prin spațiul gol al ecranului, tăind din ce în ce mai mult marginile feroneriilor active.

Câteva gânduri generale

Deși nu este vizibil din exterior, teoria și algoritmii au jucat un rol crucial în elaborarea majorității acestor programe: typo, dc, struct, pascal, egrep. Într-adevăr, cel mai surprinzător este tocmai aplicarea neobișnuită a teoriei.

Autorii originali ai aproape jumătate din lista — pascal, struct, părți, eqn — au fost femei, ceea ce depășește semnificativ partea demografică a femeilor în domeniul științelor computerizate.

Douglas McIlroy
Martie, 2020


Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster