Najbolji Unix programi

Autor članka, Douglas McIlroy, američki je matematičar, inženjer i programer. Najpoznatiji je po razvoju cevovoda u Unix operativnom sistemu, principima komponentno orijentisanog programiranja i nekoliko originalnih uslužnih programa: spell, diff, sort, join, speak, tr.

Ponekad naiđete na neke zaista sjajne programe. Nakon što sam kopao po svom sjećanju, sastavio sam listu nekih pravih Unix dragulja tokom godina. U osnovi, ovo su prilično rijetki i ne toliko potrebni programi. Ali ono što ih izdvaja je njihova originalnost. Ne mogu ni da zamislim da sam lično došao na ideju za bilo koju od njih.

Podijelite, koji programi su vas također toliko impresionirali?

PDP-7 Unix

Za početak, sam PDP-7 Unix sistem. Njegova jednostavnost i snaga natjerali su me da se prebacim sa moćnog glavnog računala na malu mašinu. To je suštinski hijerarhijski sistem datoteka, odvojena školjka i kontrola procesa na nivou korisnika koju Multics na mainframe nije mogao implementirati nakon stotina čovjek-godina razvoja. Nedostaci Unixa (kao što je struktura zapisa sistema datoteka) bili su poučni i oslobađajući kao i njegove inovacije (kao što je shell I/O preusmeravanje).

dc

Matematička biblioteka stolnog kalkulatora Roberta Morrisa s varijabilnom preciznošću koristila je inverznu analizu grešaka kako bi odredila preciznost potrebnu u svakom koraku da bi se postigao rezultat preciznosti koji je odredio korisnik. Na NATO konferenciji o softverskom inženjerstvu 1968. godine, u svom radu o softverskim komponentama, predložio sam referentne procedure koje bi mogle proizvesti rezultate bilo koje željene tačnosti, ali nisam znao kako da ih implementiram u praksi. dc je još uvijek jedini program za koji znam da to može učiniti.

greška u kucanju

Greška u tekstu ređa reči u tekstu na osnovu njihove sličnosti sa ostatkom teksta. Pravopisne greške poput 'hte' obično završe na kraju liste. Robert Morris je ponosno rekao da će program jednako dobro funkcionisati na bilo kom jeziku. Iako vam greške u kucanju ne pomažu da pronađete fonetske greške, to je bio dar za sve slagače i bio je vrlo koristan prije nego što se pojavila mnogo manje zanimljiva, ali preciznija provjera pravopisa u rječniku.

Greška u kucanju je neočekivana iznutra kao i spolja. Algoritam mjerenja sličnosti zasniva se na učestalosti pojavljivanja trigrama, koji se broje u nizu 26x26x26. U maloj memoriji je bilo jedva dovoljno prostora za jednobajtne brojače, pa je implementirana šema za komprimiranje velikih brojeva u male brojače. Da bi se izbjeglo prelivanje, brojači su ažurirani na bazi vjerojatnosti, održavajući procjenu logaritma vrijednosti brojača.

ekv

Sa pojavom fototipizacije, postalo je moguće, ali užasno zamorno, proizvesti klasičnu matematičku notaciju. Lorinda Cherry odlučila je razviti jezik opisa višeg nivoa, a Brian Kernighan joj se ubrzo pridružio. Njihov briljantan potez bio je da pismeno izraze usmenu tradiciju, zbog čega se pokazalo da je eqn iznenađujuće lak za učenje. Prvi pretprocesor jezika matematičkih izraza te vrste, eqn je od tada doživio malo poboljšanja.

struktura

Brenda Baker je počela da razvija svoj konverter Fortan-to-Ratfor protivno savetu svog šefa, mene. Mislio sam da bi to moglo rezultirati posebnim preuređenjem originalnog teksta. Biće bez brojeva operatora, ali inače neće biti čitljiviji od dobro strukturiranog Fortran koda. Brenda je dokazala da nisam u pravu. Otkrila je da svaki Fortran program ima kanonski strukturiran oblik. Programeri su preferirali kanonsku formu, a ne ono što su sami prvobitno napisali.

paskal

Dijagnostika sintakse u kompajleru koji je napravila grupa Sue Graham na Berkeleyu bila je najkorisnija koju sam ikada vidio — i bila je automatska. Ako postoji sintaksička greška, kompajler od vas traži da umetnete token da biste nastavili raščlanjivanje. Bez pokušaja da se objasni šta nije u redu. Sa ovim kompajlerom naučio sam Pascal za jedno veče, bez ikakvog priručnika pri ruci.

dijelove

Modul skriven unutar WWB (Writer's Workbench) paketa parts Lorinda Cherry određuje dijelove govora za riječi u engleskom tekstu samo na osnovu malog rječnika, pravopisnih i gramatičkih pravila. Na osnovu ove napomene, program WWB prikazuje stilometrijske indikatore teksta, kao što su zastupljenost prideva, podređenih rečenica i složenih rečenica. Kada je Lorinda bila intervjuisana u emisiji NBC Today i govorila o WWB-ovoj inovativnoj provjeri gramatike, to je bilo prvo spominjanje Unixa na televiziji.

egrep

Al Aho se nadao da će njegov deterministički parser regularnih izraza nadmašiti Kenov klasični nedeterministički parser. Nažalost, potonji je već završavao prolaz kroz složene regularne izraze do egrep izgradio vlastitu determinističku automatizaciju. Da bi ipak pobijedio u ovoj utrci, Al Aho je zaobišao prokletstvo eksponencijalnog rasta tabele stanja automata tako što je izmislio način da u hodu izgradi samo one unose u tabeli koji su bili posjećeni tokom prepoznavanja.

rakovi

Šarmantni meta-program Luce Cardellija za Blit prozorski sistem pustio je virtuelne rakove koji su lutali po praznom prostoru ekrana, odgrizajući sve više ivica aktivnih prozora.

Neka opšta razmišljanja

Iako to nije vidljivo spolja, teorija i algoritmi su odigrali odlučujuću ulogu u kreiranju većine ovih programa: typo, dc, struct, pascal, egrep. U stvari, neobična primjena teorije je ono što najviše iznenađuje.

Prvobitni autori skoro polovine liste — pascal, struct, parts, eqn — bile su žene, što uveliko premašuje demografski udio žena u informatici.

Douglas McIlroy
Mart, 2020


izvor: www.habr.com

Dodajte komentar