Didžiausios Unix programos

Straipsnio autorius Douglas McIlroy yra amerikiečių matematikas, inžinierius ir programuotojas. Jis geriausiai žinomas dėl konvejerio kūrimo Unix operacinėje sistemoje, į komponentus orientuoto programavimo principų ir kelių originalių paslaugų: rašybos, diferencijavimo, rūšiavimo, prisijungimo, kalbėjimo, tr.

Kartais susiduri su tikrai nuostabiomis programomis. Pasiknisęs po atmintį, per daugelį metų sudariau tikrų Unix brangakmenių sąrašą. Iš esmės tai gana retos ir ne tokios reikalingos programos. Tačiau tai, kas juos išskiria, yra jų originalumas. Net neįsivaizduoju, kad aš pats sugalvojau kurį nors iš jų.

Pasidalinkite, kokios programos jus taip pat sužavėjo?

PDP-7 Unix

Pradedantiesiems pati PDP-7 Unix sistema. Jo paprastumas ir galia privertė mane iš galingo pagrindinio kompiuterio pereiti prie mažos mašinos. Tai esminė hierarchinė failų sistema, atskiras apvalkalas ir vartotojo lygio procesų valdymas, kurio „Multics“ pagrindiniame kompiuteryje nesugebėjo pasiekti po šimtų metų kūrimo. Unix trūkumai (pavyzdžiui, failų sistemos įrašų struktūra) buvo tokie pat pamokantys ir išlaisvinantys, kaip ir jos naujovės (pvz., apvalkalo I/O peradresavimas).

dc

Roberto Morriso kintamo tikslumo darbalaukio skaičiuoklės matematikos biblioteka naudojo atvirkštinę klaidų analizę, kad nustatytų tikslumą, reikalingą kiekviename žingsnyje, kad būtų pasiektas vartotojo nurodytas rezultato tikslumas. 1968 m. NATO programinės įrangos inžinerijos konferencijoje savo pranešime apie programinės įrangos komponentus pasiūliau pamatines procedūras, kurios galėtų duoti bet kokio norimo tikslumo rezultatus, bet nežinojau, kaip jas pritaikyti praktiškai. dc vis dar yra vienintelė mano žinoma programa, galinti tai padaryti.

klaidos

Rašybos klaida išdėsto žodžius tekste pagal jų panašumą į likusį tekstą. Rašybos klaidos, pvz., „hte“, dažniausiai būna sąrašo pabaigoje. Robertas Morrisas išdidžiai sakė, kad programa vienodai gerai veiks bet kuriai kalbai. Nors rašybos klaidos nepadeda rasti fonetinių klaidų, tai buvo tikra palaima visiems spausdinimo mašinoms ir padarė daug naudos, kol pasirodė daug mažiau įdomi, bet tikslesnė žodyno rašybos tikrinimo priemonė.

Rašybos klaida yra tokia pat netikėta tiek viduje, tiek išorėje. Panašumo matavimo algoritmas pagrįstas trigramų, kurios skaičiuojamos 26×26×26 masyve, atsiradimo dažniu. Mažoje atmintyje vos užteko vietos vieno baito skaitikliams, todėl buvo įdiegta schema, skirta suspausti didelius skaičius į mažus skaitiklius. Siekiant išvengti perpildymo, skaitikliai buvo atnaujinti tikimybiniu pagrindu, išlaikant skaitiklio reikšmės logaritmo įvertį.

eqn

Atsiradus fototipui, tapo įmanoma, bet siaubingai nuobodu, spausdinti klasikinį matematinį užrašą. Lorinda Cherry nusprendė sukurti aukštesnio lygio aprašymo kalbą, o netrukus prie jos prisijungė Brianas Kerniganas. Puikus jų žingsnis buvo žodinės tradicijos pritaikymas rašymui, todėl eqn buvo nepaprastai lengva išmokti. Pirmasis tokio tipo matematinių reiškinių kalbos pirminis procesorius eqn nuo to laiko nebuvo daug patobulintas.

strukt

Brenda Baker pradėjo kurti savo „Fortan-to-Ratfor“ keitiklį nepaisydama savo viršininko manęs patarimo. Maniau, kad dėl to gali būti pakeistas originalaus teksto išdėstymas. Jame nebus teiginių numerių, bet kitaip jis nebus skaitomas geriau nei geros struktūros Fortran kodas. Brenda įrodė, kad klydau. Ji atrado, kad kiekviena Fortran programa turi kanoninę struktūrą. Programuotojai pirmenybę teikė kanoninei formai, o ne tai, ką jie patys iš pradžių parašė.

Pascal

Sintaksės diagnostika kompiliatoriuje, kurį sukūrė Sue Graham grupė Berklyje, buvo naudingiausia, kokią aš kada nors mačiau – ir ji buvo atlikta automatiškai. Įvykus sintaksės klaidai, kompiliatorius ragina įterpti prieigos raktą, kad būtų galima tęsti analizavimą. Nebandykite paaiškinti, kas negerai. Su šiuo kompiliatoriumi aš išmokau Pascal per vieną vakarą be jokio vadovo.

dalys

Paslėptas WWB (Rašytojo darbo stalo) modulyje parts Lorinda Cherry nustato žodžių dalis angliškame tekste, remdamasi tik nedideliu žodynu, rašybos ir gramatikos taisyklėmis. Remiantis šia anotacija, WWB programa rodo stiliometrinius teksto rodiklius, tokius kaip būdvardžių, šalutinių sakinių ir sudėtingų sakinių paplitimas. Kai Lorinda buvo interviu per NBC „Today“ ir kalbėjo apie naujovišką gramatikos tikrinimą WWB tekstuose, tai buvo pirmasis „Unix“ paminėjimas televizijoje.

egrep

Al Aho tikėjosi, kad jo deterministinis reguliariųjų reiškinių sprendėjas aplenks klasikinį Keno nedeterministinį sprendiklį. Deja, pastarasis jau baigė pereiti per sudėtingas reguliariąsias išraiškas egrep sukūrė savo deterministinę automatiką. Norėdamas vis tiek laimėti šias lenktynes, Al Aho išvengė eksponentinio automato būsenų lentelės augimo prakeiksmo, išradęs būdą, kaip greitai sudaryti tik tuos lentelės įrašus, kurie iš tikrųjų aplankomi atpažinimo metu.

Krabai

Žavioji Luca Cardelli metaprograma, skirta Blit langų sistemai, išleido virtualius krabus, kurie klajojo tuščioje ekrano erdvėje, vis labiau nugrauždami aktyvių langų kraštus.

Kai kurios bendros mintys

Nors iš išorės to nematyti, teorija ir algoritmai suvaidino lemiamą vaidmenį kuriant daugumą šių programų: typo, dc, struct, pascal, egrep. Tiesą sakant, labiausiai stebina neįprastas teorijos pritaikymas.

Beveik pusę sąrašo – pascal, struct, dalys, eqn – iš pradžių parašė moterys, o tai gerokai viršijo kompiuterių mokslo moterų demografiją.

Douglasas Makilrojus
2020 m. Kovo mėn


Šaltinis: www.habr.com

Добавить комментарий