Labākās Unix programmas

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

Pievieno komentāru