Raksta autors Duglass Makilrojs ir amerikÄÅu matemÄtiÄ·is, inženieris un programmÄtÄjs. ViÅÅ” ir vislabÄk pazÄ«stams ar konveijera izstrÄdi Unix operÄtÄjsistÄmÄ, uz komponentiem orientÄtas programmÄÅ”anas principiem un vairÄkÄm oriÄ£inÄlÄm utilÄ«tprogrammÄm: spell, diff, sort, join, speak, tr.
Dažreiz jÅ«s saskaraties ar patieÅ”Äm brÄ«niŔķīgÄm programmÄm. PÄc rakÅÄÅ”anÄs pa atmiÅÄm es sastÄdÄ«ju sarakstu ar Ä«stÄm Unix dÄrgakmeÅiem gadu gaitÄ. BÅ«tÄ«bÄ tÄs ir diezgan retas un ne tik nepiecieÅ”amas programmas. Bet tas, kas tos izceļ, ir to oriÄ£inalitÄte. Es pat nevaru iedomÄties, ka es pats izdomÄju kÄdu no tiem.
PastÄstiet, kuras programmas jÅ«s arÄ« esat tik pÄrsteigts?
PDP-7 Unix
IesÄkumam pati PDP-7 Unix sistÄma. TÄ vienkÄrŔība un jauda lika man pÄriet no jaudÄ«ga lieldatora uz niecÄ«gu maŔīnu. TÄ ir galvenÄ hierarhiskÄ failu sistÄma, atseviŔķs apvalks un lietotÄja lÄ«meÅa procesa vadÄ«ba, ko Multics lieldatorÄ nav spÄjis sasniegt pÄc simtiem cilvÄku gadu ilgas izstrÄdes. Unix trÅ«kumi (piemÄram, failu sistÄmas ierakstu struktÅ«ra) bija tikpat pamÄcoÅ”i un atbrÄ«vojoÅ”i kÄ tÄ jauninÄjumi (piemÄram, Äaulas I/O novirzÄ«Å”ana).
dc
Roberta Morisa mainÄ«gÄs precizitÄtes darbvirsmas kalkulatora matemÄtikas bibliotÄka izmantoja apgriezto kļūdu analÄ«zi, lai noteiktu precizitÄti, kas nepiecieÅ”ama katrÄ solÄ«, lai sasniegtu lietotÄja norÄdÄ«tu rezultÄtu precizitÄti. 1968. gada NATO programmatÅ«ras inženierijas konferencÄ savÄ ziÅojumÄ par programmatÅ«ras komponentiem es ierosinÄju atsauces procedÅ«ras, kas varÄtu nodroÅ”inÄt jebkuru vÄlamo precizitÄti, taÄu es nezinÄju, kÄ tÄs pielietot praksÄ. dc joprojÄm ir vienÄ«gÄ programma, par kuru es zinu, kas to var izdarÄ«t.
typo
Drukas kļūda sakÄrto vÄrdus tekstÄ atbilstoÅ”i to lÄ«dzÄ«bai ar pÄrÄjo tekstu. PareizrakstÄ«bas kļūdas, piemÄram, āhteā, parasti atrodas saraksta beigÄs. Roberts Moriss ar lepnumu teica, ka programma vienlÄ«dz labi darbosies jebkurÄ valodÄ. Lai gan drukas kļūdas nepalÄ«dz atrast fonÄtiskÄs kļūdas, tÄ bija Ä«sts labums visiem burtu saliktÄjiem, un tas deva daudz labuma, pirms parÄdÄ«jÄs daudz mazÄk interesants, bet precÄ«zÄks vÄrdnÄ«cas pareizrakstÄ«bas pÄrbaudÄ«tÄjs.
Drukas kļūda ir tikpat negaidÄ«ta gan iekÅ”pusÄ, gan ÄrpusÄ. LÄ«dzÄ«bas mÄrÄ«Å”anas algoritms ir balstÄ«ts uz trigrammu sastopamÄ«bas biežumu, kas tiek skaitÄ«tas 26 Ć 26 Ć 26 masÄ«vÄ. MazajÄ atmiÅÄ tik tikko pietika vietas viena baita skaitÄ«tÄjiem, tÄpÄc tika ieviesta shÄma lielu skaitļu saspieÅ”anai mazos skaitÄ«tÄjos. Lai izvairÄ«tos no pÄrpildes, skaitÄ«tÄji tika atjauninÄti, pamatojoties uz varbÅ«tÄ«bas principu, saglabÄjot skaitÄ«tÄja vÄrtÄ«bas logaritma novÄrtÄjumu.
eqn
LÄ«dz ar fotodrukÄÅ”anas parÄdÄ«Å”anos kļuva iespÄjams, bet Å”ausmÄ«gi nogurdinoÅ”i, drukÄt klasisko matemÄtisko apzÄ«mÄjumu. Lorinda Cherry nolÄma izstrÄdÄt augstÄka lÄ«meÅa apraksta valodu, un drÄ«z viÅai pievienojÄs Braiens Kernigans. ViÅu izcilais solis bija mutisko tradÄ«ciju iedzÄ«vinÄÅ”ana rakstiski, tÄpÄc eqn bija ÄrkÄrtÄ«gi viegli iemÄcÄ«ties. Pirmais Å”Äda veida matemÄtiskÄs izteiksmes valodas priekÅ”procesors eqn kopÅ” tÄ laika nav daudz uzlabots.
struktur
Brenda Beikere sÄka izstrÄdÄt savu Fortan-to-Ratfor pÄrveidotÄju, neievÄrojot sava priekÅ”nieka manis padomu. Es domÄju, ka tas varÄtu novest pie Ä«paÅ”as oriÄ£inÄlÄ teksta pÄrkÄrtoÅ”anas. TajÄ nebÅ«s paziÅojumu numuriem, taÄu citÄdi tas nebÅ«s lasÄmÄks par labi strukturÄtu Fortran kodu. Brenda pierÄdÄ«ja, ka es kļūdos. ViÅa atklÄja, ka katrai Fortran programmai ir kanoniski strukturÄta forma. ProgrammÄtÄji deva priekÅ”roku kanoniskajai formai, nevis tam, ko viÅi paÅ”i sÄkotnÄji rakstÄ«ja.
pascal
Sintakses diagnostika kompilatorÄ, ko izveidoja SjÅ« Grehema grupa BÄrklijÄ, bija visnoderÄ«gÄkÄ, ko jebkad esmu redzÄjis, un tÄ tika veikta automÄtiski. Sintakses kļūdas gadÄ«jumÄ kompilators aicina ievietot marÄ·ieri, lai turpinÄtu parsÄÅ”anu. Nav mÄÄ£inÄjumu izskaidrot, kas ir nepareizi. Izmantojot Å”o kompilatoru, es vienÄ vakarÄ apguvu PaskÄlu bez rokasgrÄmatas.
daļas
PaslÄpts WWB (Writer's Workbench) modulÄ« parts
Lorinda Cherry nosaka runas daļas vÄrdiem angļu valodas tekstÄ, pamatojoties tikai uz nelielu vÄrdnÄ«cu, pareizrakstÄ«bas un gramatikas likumiem. Pamatojoties uz Å”o anotÄciju, WWB programma parÄda teksta stiliometriskos rÄdÄ«tÄjus, piemÄram, Ä«paŔības vÄrdu, pakÄrtoto teikumu un sarežģītu teikumu izplatÄ«bu. Kad Lorinda tika intervÄta NBC raidÄ«jumÄ Today un runÄja par novatorisku gramatikas pÄrbaudi WWB tekstos, tÄ bija pirmÄ Unix pieminÄÅ”ana televÄ«zijÄ.
egreps
Al Aho gaidÄ«ja, ka viÅa deterministiskais regulÄro izteiksmju atrisinÄtÄjs apsteigs Kena klasisko nedeterministisko izteicÄju. DiemžÄl pÄdÄjais jau pabeidza sarežģītu regulÄro izteiksmju izeju, kamÄr egrep
izveidoja savu deterministisko automatizÄciju. Lai tomÄr uzvarÄtu Å”ajÄs sacÄ«kstÄs, Al Aho pÄrvarÄja automÄta stÄvokļu tabulas eksponenciÄlÄs pieauguma lÄstu, izgudrojot veidu, kÄ lidojumÄ veidot tikai tos tabulas ierakstus, kas faktiski tiek apmeklÄti atpazÄ«Å”anas laikÄ.
krabji
Luca Cardelli burvÄ«gÄ metaprogramma Blit logu sistÄmai atbrÄ«voja virtuÄlos krabjus, kas klaiÅoja pa tukÅ”o ekrÄna vietu, arvien vairÄk nograužot aktÄ«vo logu malas.
Dažas vispÄrÄ«gas domas
Lai gan tas nav redzams no Ärpuses, teorijai un algoritmiem bija izŔķiroÅ”a loma lielÄko daļu Å”o programmu izveidÄ: typo, dc, struct, pascal, egrep. PatiesÄ«bÄ visvairÄk pÄrsteidz neparastais teorijas pielietojums.
GandrÄ«z pusi no saraksta ā pascal, struct, parts, eqn ā sÄkotnÄji bija uzrakstÄ«juÅ”as sievietes, kas ievÄrojami pÄrsniedz sievieÅ”u demogrÄfisko rÄdÄ«tÄju datorzinÄtnÄs.
Duglass Makilrojs
2020. gada marts
Avots: www.habr.com