Raksts autors Duglass Makilrojs ir amerikāņu matemātiķis, inženieris un programmētājs. Viņš vislabāk pazīstams ar konveijera izstrādi Unix operētājsistēmā, komponentu orientētās programmēšanas principiem un vairākiem oriģināliem rīkiem: spell, diff, sort, join, speak, tr.
Dažreiz jūs sastopaties ar patiešām brīnišķīgām programmām. Pārcilājot atmiņu, es izveidoju sarakstu ar patiesām Unix pērlēm no visiem gadiem. Galvenokārt tas ir diezgan retas un ne tik nepieciešamas programmas. Bet tas, kas viņas izceļ, ir originalitāte. Pat iedomāties nevaru, ka man pašam varētu ienākt prātā kāda no tām idejām.
Lūdzu, dalieties, kādas programmas jūs arī tik ļoti pārsteigušas?
(janvāris 1970), ne
Vispirms, pati PDP-7 Unix sistēma. Tās vienkāršība un jauda likās man pāriet no spēcīga galddatora uz sīku mašīnu. Šeit ir kvintesence hierarhiskajai failu sistēmai, atsevišķa saskarne un procesu vadība lietotāja līmenī, ko Multics uz galddatoriem nevarēja realizēt pēc simtiem cilvēku-gadu izstrādes. Unix trūkumi (piemēram, ierakstu struktūra failu sistēmā) bija tikpat izglītojoši un atslogojoši, kā tās jaunievedumi (piemēram, ievades-izvades pāradresācija saskarnē).
dc
Matemātiskā bibliotēka galda kalkulatoram ar mainīgu precizitāti, ko izstrādājis Robērt Moriss, izmantoja atpakaļanalīzi kļūdu noteikšanai, lai noteiktu nepieciešamo precizitāti katrā solī, lai sasniegtu lietotāja noteikto rezultātu precizitāti. NATO 1968. gada programmatūras inženierijas konferencē savā ziņojumā par programmatūras komponentēm es ieteicu standarta procedūras, kas var sniegt jebkuras vēlētas precizitātes rezultātu, bet es nezināju, kā tās īstenot praksē. dc joprojām ir vienīgā zināmā programma, kas spēj to izdarīt.
typo
Typo kārto vārdus tekstā pēc to līdzības ar pārējo tekstu. Pārrakstīšanās kļūdas, piemēram, ‘hte’, parasti parādās saraksta beigās. Robērt Moriss lepni apgalvoja, ka programma darbosies tikpat labi jebkurā valodā. Lai gan typo nepalīdz atrast fonētiskās kļūdas, tā ir bijusi īsta atraduma priekš tiem, kas raksta tekstus, un sniegusi daudz labumu pirms parādījās daudz mazāk interesanta, bet precīzāka vārdnīcas spell-check.
Typo ir tikpat negaidīti struktūrēta iekšēji, kā arī ārēji. Līdzības mērīšanas algoritms balstās uz trigrammas biežuma rādītājiem, kas tiek aprēķināti 26×26×26 masīvā. Mazā atmiņā grūti pietika vietas vienbaitu skaitītājiem, tādēļ tika īstenota liela skaitļa saspiešanas shēma mazos skaitītājos. Lai izvairītos no pārpildīšanas, skaitītāji tika atjaunoti probabilitātes pamatā, saglabājot skaitītāja vērtības logaritma novērtējumu.
eqn
Ar fotonieku parādīšanos bija iespējams, taču briesmīgi nogurdinoši uzrakstīt klasisko matemātisko notāciju. Lorinda Čeri izlēma izstrādāt augsta līmeņa apraksta valodu, un drīz pievienojās Braians Kernigans. Viņu spožā gājiens bija izteikt mutisko tradīciju rakstveidā, tāpēc eqn izrādījās pārsteidzoši viegli apgūstams. Pirmais sava veida matemātisko izteiksmju apraksta valodas priekšapstrādātājs, eqn kopš tā laika ir gandrīz nemainīts.
struct
Brenda Beikere uzsāka savas Fortan-to-Ratfor pārveidotāja izstrādi pretēji sava priekšnieka - manis - ieteikumam. Es domāju, ka tas varētu novest pie īpašas avota koda pārrakstīšanas. Tas būtu brīvs no operatoru numuriem, bet citādi ne lasāmāks kā pareizi strukturēts Fortran kods. Brenda pierādīja, ka es kļūdījos. Viņa atklāja, ka katrai Fortran programmai ir kanoniski strukturēta forma. Programmētāji dod priekšroku kanoniskajai formai, nevis tam, ko viņi paši sākotnēji uzrakstījuši.
pascal
Sintakses diagnostika kompilatorā, ko izstrādāja Sju Grehema grupa Berklijā, bija visnoderīgākā, kādu es jebkad esmu redzējis - un tā tika veikta automātiski. Sintakses kļūdas gadījumā kompilators piedāvā ievietot leksēmu, lai turpinātu sintaktisko analīzi. Nekādas mēģinājuma izskaidrot, kas nav kārtībā. Ar šo kompilatoru es iemācījos Paskeļu vienā vakarā, neizmantojot nevienu rokasgrāmatu.
parts
Paketē WWB (Writer’s Workbench) paslēpts modulis parts Lorindas Čeri definē vārda daļas angļu valodas tekstā, pamatojoties tikai uz nelielu vārdu krājumu, ortogrāfijas un gramatikas noteikumiem. Saskaņā ar šo piezīmi programma WWB izvada stilometriskos rādītājus tekstā, piemēram, biežuma attiecības starp lietvārdiem, apakšteikumiem un sarežģītiem teikumiem. Kad Lorinda sniedza interviju televīzijas raidījumā Today NBC kanālā un stāstīja par inovatīvo gramatikas pārbaudi tekstos WWB, tas bija pirmais Unix pieminējums televīzijā.
egrep
Al Aho cerēja, ka viņa deterministiskais regulāro izteiksmi atpazītājs apsteigs Kena klasisko nedeterministisko atpazītāju. Diemžēl pēdējais jau pabeidza pāreju cauri sarežģītām regulārām izteiksmēm, kamēr egrep viņš būvēja savu deterministisko automātu. Lai tomēr uzvarētu šajā sacensībā, Al Aho apiet eksponenciālā pieauguma automāta stāvokļu tabulas lāstu, izdomājot veidu, kā izveidot uzreiz tikai tās tabulas ierakstus, kurus tiešām apmeklē atpazīšanas laikā.
krabji
Lukas Kardelli apburošā meta-programma logu sistēmai Blit ģenerēja virtuālus krabjus, kas klīda pa tukšo ekrāna laukumu, aizvien vairāk norijot aktīvo logu malas.
Dažas kopīgas domas
Lai gan tas nav redzams no ārpuses, teorija un algoritmi spēlēja izšķirošu lomu vairuma šo programmu radīšanā: typo, dc, struct, pascal, egrep. Patiesībā visvairāk pārsteidz tieši neparasta teorijas pielietojuma izmantošana.
Daudzu oriģinālo autoru, kuri izveidoja gandrīz pusi no saraksta - pascal, struct, parts, eqn - bija sievietes, kas ievērojami pārsniedz sieviešu demogrāfisko īpatsvaru datorzinātņu jomā.
Daglass Makilrojs
2020. gada marts
Avots: habr.com
