Avtor članka Douglas McIlroy je ameriški matematik, inženir in programer. Najbolj znan je po razvoju cevovodnega sistema v operacijskem sistemu Unix, načel komponente usmerjenega programiranja in številnih originalnih pripomočkov: spell, diff, sort, join, speak, tr.
Občasno naletite na res izjemne programe. Po pregledu spomina sem sestavil seznam pravih dragocin Unix skozi vsa leta. Večinoma gre za precej redke in ne tako nujne programe. A kar jih izstopa, je njihova izvirnost. Ne morem si predstavljati, da bi sam kdaj imel idejo za katerega od njih.
Delite, kateri programi so vas prav tako tako presenetili?
PDP-7 Unix
Za začetek, sama sistem PDP-7 Unix. Njena preprostost in moč sta me prisilila, da sem prešel z zmogljivega glavnega računalnika na majhno napravo. Tukaj je kvintesenca hierarhičnega datotečnega sistema, ločena lupina in upravljanje s procesi na ravni uporabnika, kar Multics na glavnih računalnikih ni mogel uresničiti po več sto letih razvoja. Pomanjkljivosti Unix (na primer struktura zapisov v datotečnem sistemu) so bile prav tako poučne in osvobajajoče, kot so bile njene novosti (na primer preusmerjanje vhodno-izhodnih operacij v lupini).
dc
Matematična knjižnica za namizni kalkulator z spremenljivo natančnostjo Roberta Morrisa je uporabljala obratno analizo napak za določitev natančnosti, potrebne na vsakem koraku, da bi dosegla želeno natančnost rezultata. Na konferenci NATO o inženiringu programske opreme leta 1968 sem v svojem poročilu o programskih komponentah predlagal referenčne postopke, ki lahko dajo rezultat katerekoli želeno natančnost, vendar nisem vedel, kako jih uresničiti v praksi. dc je še vedno edini znani program, ki to zmore.
typo
Typo ureduje riječi u tekstu prema njihovoj sličnosti s ostalim tekstom. Tipfeleri poput 'hte' obično se nalaze na kraju popisa. Robert Morris je ponosno govorio da će program jednako dobro raditi na bilo kojem jeziku. Iako typo ne pomaže u pronalaženju fonetskih pogrešaka, postala je pravi pronalazak za sve koji kucaju tekst, donoseći veliku korist prije nego što se pojavila mnogo manje zanimljiva, ali preciznija provjera pravopisa putem rječnika.
Typo je iznutra jednako neočekivano postavljen kao i izvana. Algoritam za mjerenje sličnosti temelji se na učestalosti trigramâ, koji se računaju u nizu 26×26×26. U sićušnoj memoriji jedva je bilo mjesta za jednosmjerne brojače, stoga je implementiran sustav kompresije velikih brojeva u male brojače. Kako bi se izbjeglo prelivanje, brojači su se ažurirali na probabilističkoj osnovi, održavajući procjenu logaritamske vrijednosti brojača.
eqn
S pojavom fotonabava postalo je moguće, ali izuzetno iscrpljujuće ispisivati klasičnu matematičku notaciju. Lorinda Cherry odlučila je razviti jezik višeg opisa, a ubrzo joj se pridružio Brian Kernighan. Njihov briljantni potez bio je izraziti usmenu tradiciju na pisani način, tako da je eqn bio izuzetno jednostavan za učenje. Prvi jezik za preprocesiranje matematičkih izraza, eqn od tada se gotovo nije poboljšavao.
struct
Brenda Baker je započela razvoj svog konvertera Fortan-to-Ratfor unatoč savjetu svog šefa — mene. Pomislio sam da bi to moglo dovesti do posebnog preuređenja izvornih tekstova. Bit će slobodan od brojeva operatora, ali u ostalom ne više čitljiv od dobro strukturiranog Fortran koda. Brenda je dokazala da sam bio u krivu. Otkrila je da svaka Fortran programa ima kanonički strukturiranu formu. Programerima je bila draža kanonička forma od onoga što su prvotno napisali.
pascal
Diagnostika sintakse u kompajleru koji je stvorila grupa Su Grehem u Berkliju bila je najkorisnija od svih što sam ikada vidio – a obavljala se automatski. Kada dođe do sintaktičke greške, kompajler predlaže umetanje lekseme kako bi se nastavila sintaktička analiza. Nema pokušaja objašnjenja što nije u redu. S ovim kompajlerom naučio sam Pascal za jednu večer, nemajući pri ruci nikakvo uputstvo.
delovi
Skriveni unutar paketa WWB (Writer’s Workbench) modul delovi Lorinda Čeri određuje delove govora za reči u tekstu na engleskom jeziku koristeći samo mali rečnik, pravila pravopisa i gramatike. Na osnovu ove anotacije, program WWB generiše stilometrijske pokazatelje teksta, kao što su preovlađivanje prideva, zavisnih rečenica i složenih rečenica. Kada je Lorinda dala intervju u televizijskoj emisiji Today na NBC-u i govorila o inovativnoj proveri gramatike u tekstovima WWB, to je bilo prvo pominjanje Unix-a na televiziji.
egrep
Al Aho je očekivao da će njegov deterministički prepoznavač regularnih izraza preteći klasični nedeterministički prepoznavač Kena. Nažalost, poslednji je već završavao prolazak kroz složene regularne izraze, dok egrep je gradio svoju determinističku automatiku. Da bi ipak pobedio u ovoj trci, Al Aho je zaobišao prokletstvo eksponencijalnog rasta tabele stanja automata, izumivši način izgradnje u hodu samo onih zapisa tabele koji se zaista posećuju tokom prepoznavanja.
rakovi
Šarmantna meta-programa Luke Kardelija za prozorski sistem Blit ispuštala je virtualne rakove koji su se kretali po praznom prostoru ekrana, sve više i više grickajući ivice aktivnih prozora.
Neke opšte misli
Iako to nije vidljivo spolja, teorija i algoritmi su igrali ključnu ulogu u stvaranju većine ovih programa: typo, dc, struct, pascal, egrep. U stvarnosti, najveće iznenađenje je upravo neobična primena teorije.
Originalni autori skoro polovine liste – pascal, struct, delovi, eqn – bile su žene, što znatno premašuje demografski udeo žena u oblasti računarskih nauka.
Daglas Makilroj
Mart, 2020
Izvor: habr.com
