Najbolji Unix programi

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

Ponekad naiđete naista nevjerojatne programe. Pretražujući svoje uspomene, sastavio sam popis pravih dragulja Unixa kroz godine. Uglavnom, to su relativno rijetki i ne baš nužni programi. No ono što ih izdvaja je njihova originalnost. Čak ne mogu niti zamisliti da bih ja sam došao na ideju za neki od njih.

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

PDP-7 Unix

Za početak, sam sustav PDP-7 Unix. Njegova jednostavnost i moć natjerali su me da se prebacim s moćnog mainframea na malo računalo. Ovdje se može naći suština hijerarhijskog datotečnog sustava, odvojenog ljuska i upravljanja procesima na razini korisnika, što Multics na mainframe-u nije mogao implementirati nakon stotina čovjekogodina razvoja. Nedostaci Unixa (npr. struktura zapisa u datotečnom sustavu) bili su podjednako poučni i oslobađajući kao i njegove inovacije (npr. preusmjeravanje ulaza-izlaza u ljusci).

dc

Matematička biblioteka za stolni kalkulator s varijabilnom točnošću Roberta Morrisa koristila je obrnutu analizu grešaka za određivanje točnosti potrebne na svakom koraku kako bi se postigla korisnički određena točnost rezultata. Na NATO konferenciji o softverskom inženjerstvu 1968. godine, u svom izlaganju o softverskim komponentama, predložio sam referentne procedure koje mogu dati rezultat bilo koje željene točnosti, ali nisam znao kako ih praktično implementirati. dc ostaje jedini poznati program koji može to ostvariti.

typo

Typo organizira riječi u tekstu prema njihovoj sličnosti s ostatkom teksta. Greške poput 'hte' obično se nalaze na kraju popisa. Robert Morris s ponosom je govorio da će program jednako dobro raditi za svaki jezik. Iako typo ne pomaže u pronalaženju fonetskih grešaka, postala je pravi otkriće za sve koji unose tekst i donijela je mnogo koristi prije nego što je došla mnogo manje zanimljiva, ali preciznija pravopisna provjera prema rječniku.

Typo je unutra jednako iznenađujuće postavljen kao i vani. Algoritam za mjerenje sličnosti temelji se na učestalosti pojavljivanja trigramâ, koji se računaju u nizu 26×26×26. U sitnoj memoriji jedva da je bilo mjesta za jednonamjenske brojače, pa je implementirana shema za kompresiju velikih brojeva u male brojače. Da bi se izbjeglo preopterećenje, brojači su se ažurirali na vjerojatnosnoj osnovi, održavajući procjenu logaritma vrijednosti brojača.

eqn

S pojavom fotona seta postalo je moguće, ali užasno zamorno, ispisivati klasičnu matematičku notaciju. Lorinda Cherry odlučila je razviti jezik opisivanja višeg nivoa, a ubrzo joj se pridružio Brian Kernighan. Njihov briljantan potez bio je izraziti usmenu tradiciju u pisanoj formi, pa je eqn postao iznenađujuće jednostavan za učenje. Prvi takav preprocesor jezika za opisivanje matematičkih izraza, eqn od tada gotovo nije unaprijeđen.

struct

Brenda Baker pokrenula je razvoj svog konvertera Fortan-to-Ratfor unatoč savjetu svog šefa - mene. Pomislio sam da bi to moglo dovesti do posebnog reorganiziranja izvornog teksta. Bit će slobodan od oznaka operacija, ali inače nije mnogo čitljiviji od dobro strukturiranog Fortran koda. Brenda je dokazala da sam bio u krivu. Otkrit će da svaka Fortran program ima kanonički strukturiranu formu. Programeri su preferirali kanoničku formu, a ne ono što su prvotno napisali.

pascal

Sintaktička dijagnostika u kompajleru koji je razvio tim Sue Graham na Berkeleyju bila je najkorisnija od svih koje sam ikad vidio — i provodila se automatski. Kada dođe do sintaktičke greške, kompajler sugerira umetanje lekseme kako bi se nastavio sintaktički analizator. Nema pokušaja objašnjenja što nije u redu. S ovim kompajlerom naučio sam Pascal za jedan večer, nemajući pri ruci nikakvo uputstvo.

dijelovi

Skriveni unutar paketa WWB (Writer’s Workbench) modul dijelovi Lorinda Cherry definira dijelove govora za riječi u engleskom tekstu temeljeći se samo na malom rječniku, pravilima pravopisa i gramatike. Na temelju ove oznake program WWB generira stilometrijske pokazatelje teksta, kao što su prekomjernost pridjeva, zavisnih rečenica i složenih rečenica. Kada je Lorinda dala intervju u televizijskoj emisiji Today na NBC-u i govorila o inovativnoj provjeri gramatike u tekstovima WWB, to je bilo prvo spominjanje Unix-a na televiziji.

egrep

Al Aho se nadao da će njegov deterministički prepoznavač regularnih izraza nadmašiti klasični nedeterministički prepoznavač Kena. Nažalost, potonji je već završavao prolaz kroz složene regularne izraze dok egrep je gradio svoju determinističku automatiku. Kako bi ipak pobijedio u ovoj utrci, Al Aho je zaobišao prokletstvo eksponencijalnog rasta tablice stanja automata izumivši način za izradu u hodu samo onih unosa tablice koji se zapravo posjećuju tijekom prepoznavanja.

rakovi

Zanosni meta-program Luke Cardellija za prozorski sustav Blit ispuštao je virtualne rakove koji su tumarali praznim prostorom ekrana, sve više i više zalizujući rubove aktivnih prozora.

Nekoliko općih razmišljanja

Iako to nije vidljivo izvana, teorija i algoritmi odigrali su ključnu ulogu u razvoju većine ovih programa: typo, dc, struct, pascal, egrep. Uistinu, najviše iznenađuje neobična primjena teorije.

Originalni autori gotovo polovice popisa — pascal, struct, parts, eqn — bile su žene, što značajno nadmašuje demografsku zastupljenost žena u području računalnih znanosti.

Douglas McIlroy
Ožujak, 2020


Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster