Najbolji Unix programi

Autor članka, Douglas McIlroy, američki je matematičar, inženjer i programer. Najpoznatiji je po razvoju cjevovoda u operativnom sustavu Unix, principima programiranja orijentiranog na komponente i nekoliko originalnih pomoćnih programa: spell, diff, sort, join, speak, tr.

Ponekad naiđete na stvarno sjajne programe. Nakon kopanja po sjećanju, sastavio sam popis nekih od pravih Unix dragulja tijekom godina. Uglavnom, to su dosta rijetki i ne toliko potrebni programi. Ali ono što ih izdvaja je njihova originalnost. Ne mogu ni zamisliti da sam sam došao na ideju za bilo koji od njih.

Podijelite, koji su vas se programi također toliko dojmili?

PDP-7 Unix

Za početak, sam PDP-7 Unix sustav. Njegova jednostavnost i snaga natjerali su me da se prebacim s moćnog glavnog računala na maleni stroj. To je suštinski hijerarhijski datotečni sustav, odvojena ljuska i kontrola procesa na korisničkoj razini koju Multics na glavnim računalima nije mogao implementirati nakon stotina godina razvoja. Unixovi nedostaci (kao što je struktura zapisa datotečnog sustava) bili su jednako poučni i oslobađajući kao i njegove inovacije (kao što je I/O preusmjeravanje ljuske).

dc

Matematička knjižnica stolnog kalkulatora promjenjive preciznosti Roberta Morrisa koristila je inverznu analizu pogrešaka za određivanje preciznosti koja je potrebna u svakom koraku kako bi se postigao rezultat preciznosti koji odredi korisnik. Na konferenciji o softverskom inženjerstvu NATO-a 1968. godine, u svom radu o komponentama softvera, predložio sam referentne postupke koji bi mogli dati rezultate bilo koje željene točnosti, ali nisam znao kako ih implementirati u praksi. dc je još uvijek jedini program za koji znam da to može.

slovoslagač

Tipkarska pogreška raspoređuje riječi u tekstu na temelju njihove sličnosti s ostatkom teksta. Pravopisne pogreške poput 'hte' obično završe na kraju popisa. Robert Morris je ponosno rekao da će program raditi jednako dobro na bilo kojem jeziku. Iako vam pogreška pri upisu ne pomaže u pronalaženju fonetskih pogrešaka, bila je božji dar za sve slovoslagače i bila je vrlo korisna prije nego što se pojavila mnogo manje zanimljiva, ali točnija provjera pravopisa u rječniku.

Tipkarska je pogreška jednako neočekivana iznutra kao i izvana. Algoritam mjerenja sličnosti temelji se na učestalosti pojavljivanja trigrama, koji se broje u nizu 26x26x26. Bilo je jedva dovoljno prostora u sićušnoj memoriji za jednobajtne brojače, pa je implementirana shema za komprimiranje velikih brojeva u male brojače. Kako bi se izbjeglo prelijevanje, brojači su ažurirani na bazi vjerojatnosti, održavajući procjenu logaritma vrijednosti brojača.

jednadžba

S pojavom fotoslaganja, postalo je moguće, ali užasno zamorno, proizvesti klasičnu matematičku notaciju. Lorinda Cherry odlučila je razviti opisni jezik više razine, a ubrzo joj se pridružio i Brian Kernighan. Njihov briljantan potez bio je izražavanje usmene tradicije u pisanom obliku, zbog čega se eqn pokazao iznenađujuće lakim za naučiti. Prvi pretprocesor jezika matematičkih izraza te vrste, eqn, od tada je doživio malo poboljšanja.

strukt

Brenda Baker počela je razvijati svoj pretvarač Fortan-u-Ratfor protivno savjetu svog šefa, mene. Mislio sam da bi to moglo rezultirati posebnim preuređivanjem izvornog teksta. Bit će bez brojeva operatera, ali inače neće biti čitljiviji od dobro strukturiranog Fortran koda. Brenda mi je dokazala da nisam u pravu. Otkrila je da svaki Fortran program ima kanonski strukturiran oblik. Programeri su više voljeli kanonski oblik nego ono što su sami izvorno napisali.

paskal

Dijagnostika sintakse u prevoditelju koju je napravila grupa Sue Graham na Berkeleyju bila je najkorisnija koju sam ikada vidio—i bila je automatska. Ako postoji sintaktička pogreška, kompajler će vas upitati da umetnete token za nastavak raščlanjivanja. Nema pokušaja da se objasni što nije u redu. Uz ovaj kompilator naučio sam Pascal za jednu večer, bez ikakvog priručnika pri ruci.

dijelovi

Modul skriven unutar paketa WWB (Writer's Workbench). parts Lorinda Cherry određuje dijelove govora za riječi u engleskom tekstu samo na temelju malog rječnika, pravopisnih i gramatičkih pravila. Na temelju ove napomene program WWB prikazuje stilometrijske pokazatelje teksta, kao što su zastupljenost pridjeva, podređenih rečenica i složenih rečenica. Kada je Lorinda intervjuirana u NBC-jevoj emisiji 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ć dovršavao prolaz kroz složene regularne izraze sve do egrep izgradio vlastitu determinističku automatizaciju. Kako bi ipak pobijedio u ovoj utrci, Al Aho je zaobišao prokletstvo eksponencijalnog rasta tablice stanja automata tako što je izmislio način da u hodu izgradi samo one unose u tablici koji su stvarno posjećeni tijekom prepoznavanja.

rakovi

Šarmantni meta-program Luce Cardellija za prozorski sustav Blit pustio je virtualne rakove koji su lutali po praznom prostoru ekrana, grizući sve više rubova aktivnih prozora.

Neka opća razmišljanja

Iako se to izvana ne vidi, teorija i algoritmi odigrali su odlučujuću ulogu u nastanku većine ovih programa: typo, dc, struct, pascal, egrep. Zapravo, neobična primjena teorije je ono što najviše iznenađuje.

Izvorni autori gotovo polovice popisa — pascal, struct, parts, eqn — bile su žene, što uvelike premašuje demografski udio žena u informatici.

Douglas McIlroy
Ožujka, 2020


Izvor: www.habr.com

Dodajte komentar