Največji programi Unix

Avtor članka, Douglas McIlroy, je ameriški matematik, inženir in programer. Najbolj znan je po razvoju cevovoda v operacijskem sistemu Unix, načelih komponentno usmerjenega programiranja in več izvirnih pripomočkih: spell, diff, sort, join, speak, tr.

Včasih naletite na res odlične programe. Po brskanju po spominu sem sestavil seznam nekaterih resničnih biserov Unixa v preteklih letih. V bistvu so to precej redki in ne tako potrebni programi. Toda tisto, kar jih loči, je njihova izvirnost. Sploh si ne morem predstavljati, da sem idejo za katerega izmed njih prišla sama.

Delite, kateri programi so tudi vas tako navdušili?

PDP-7 Unix

Za začetek sam sistem PDP-7 Unix. Zaradi njegove preprostosti in moči sem z zmogljivega glavnega računalnika zamenjal majhen stroj. To je najpomembnejši hierarhični datotečni sistem, ločena lupina in nadzor nad procesom na ravni uporabnika, ki ga Multics na velikih računalnikih ni mogel implementirati po več sto letih razvoja. Pomanjkljivosti Unixa (kot je zapisna struktura datotečnega sistema) so bile tako poučne in osvobajajoče kot njegove inovacije (kot je preusmeritev V/I lupine).

dc

Matematična knjižnica namiznega kalkulatorja Roberta Morrisa s spremenljivo natančnostjo je uporabila inverzno analizo napak za določitev natančnosti, ki je potrebna pri vsakem koraku, da se doseže rezultat natančnosti, ki ga določi uporabnik. Na Natovi konferenci o programskem inženiringu leta 1968 sem v svojem prispevku o komponentah programske opreme predlagal referenčne postopke, ki bi lahko dali želene točne rezultate, vendar nisem vedel, kako jih izvesti v praksi. dc je še vedno edini program, za katerega vem, da zmore to.

tipkarska napaka

Tipkarska napaka razvrsti besede v besedilu glede na njihovo podobnost s preostalim besedilom. Napačno črkovane besede, kot je 'hte', se običajno znajdejo na koncu seznama. Robert Morris je ponosno dejal, da bo program deloval enako dobro v katerem koli jeziku. Čeprav ti tipkarska napaka ne pomaga pri iskanju fonetičnih napak, je bil božji dar za vse pisalce in je bil zelo uporaben, preden se je pojavilo veliko manj zanimivo, a natančnejše preverjanje črkovanja v slovarju.

Tipkarska napaka je znotraj tako nepričakovana kot zunaj. Algoritem merjenja podobnosti temelji na pogostosti pojavljanja trigramov, ki se štejejo v nizu 26x26x26. V majhnem pomnilniku je bilo komaj dovolj prostora za enobajtne števce, zato je bila uvedena shema za stiskanje velikih števil v majhne števce. Da bi se izognili prelivanju, so bili števci posodobljeni na podlagi verjetnosti, pri čemer se je ohranila ocena logaritma vrednosti števca.

enač

S pojavom fototipkanja je postalo možno, a strašno dolgočasno, izdelati klasičen matematični zapis. Lorinda Cherry se je odločila razviti opisni jezik višje ravni in kmalu se ji je pridružil Brian Kernighan. Njihova briljantna poteza je bila, da so ustno izročilo izrazili v pisni obliki, zato se je izkazalo, da se je eqn presenetljivo lahko naučiti. Prvi tovrstni predprocesor jezika matematičnih izrazov, eqn, je od takrat doživel malo izboljšav.

strukt

Brenda Baker je proti nasvetu svojega šefa, mene, začela razvijati svoj pretvornik Fortan v Ratfor. Mislil sem, da bi to lahko povzročilo posebno preureditev izvirnega besedila. Ne bo vseboval operaterskih številk, sicer pa nič bolj berljiv kot dobro strukturirana fortranska koda. Brenda mi je dokazala, da se motim. Odkrila je, da ima vsak Fortran program kanonično strukturirano obliko. Programerji so imeli raje kanonično obliko kot tisto, kar so sami prvotno napisali.

pascal

Diagnostika sintakse v prevajalniku, ki ga je zgradila skupina Sue Graham na Berkeleyju, je bila najbolj uporabna, kar sem jih kdaj videl – in bila je samodejna. Če pride do sintaksne napake, vas prevajalnik pozove, da vstavite žeton za nadaljevanje razčlenjevanja. Brez poskusov razlage, kaj je narobe. S tem prevajalnikom sem se Pascala naučil v enem večeru, brez priročnika pri roki.

deli

Modul, skrit znotraj paketa WWB (Writer's Workbench). parts Lorinda Cherry določa dele govora za besede v angleškem besedilu samo na podlagi majhnega slovarja, črkovalnih in slovničnih pravil. Na podlagi te opombe program WWB prikaže stilometrične kazalnike besedila, kot so razširjenost pridevnikov, podrednih stavkov in zapletenih stavkov. Ko je bila Lorinda intervjuvana v oddaji Today na NBC in je govorila o inovativnem preverjanju slovnice WWB, je bila to prva omemba Unixa na televiziji.

egrep

Al Aho je upal, da bo njegov deterministični razčlenjevalec regularnih izrazov presegel Kenov klasični nedeterministični razčlenjevalnik. Na žalost je slednji že dokončal prehod skozi kompleksne regularne izraze do egrep zgradil lastno deterministično avtomatizacijo. Da bi vseeno zmagal v tej dirki, je Al Aho zaobšel prekletstvo eksponentne rasti tabele stanj avtomata tako, da je izumil način, kako sproti graditi samo tiste vnose v tabelo, ki so bili dejansko obiskani med prepoznavanjem.

raki

Očarljivi metaprogram Luce Cardellija za okenski sistem Blit je sprostil navidezne rakce, ki so se sprehajali po praznem prostoru zaslona in odgrizli vedno več robov aktivnih oken.

Nekaj ​​splošnih misli

Čeprav navzven ni vidno, so imeli teorija in algoritmi odločilno vlogo pri nastanku večine teh programov: typo, dc, struct, pascal, egrep. Pravzaprav je najbolj presenetljiva nenavadna uporaba teorije.

Prvotni avtorji skoraj polovice seznama – pascal, struct, parts, eqn – so bile ženske, kar močno presega demografski delež žensk v računalništvu.

Douglas McIlroy
Marec, 2020


Vir: www.habr.com

Dodaj komentar