Artikli autor on Douglas McIlroy â Ameerika matemaatik, insener ja programmeerija. Tuntud peamiselt Unix-operatsioonisĂŒsteemis tööprotsessi arendamise, komponentidest koosneva programmeerimise pĂ”himĂ”tete ja mitme originaalse utiliidi, nagu spell, diff, sort, join, speak, tr, vĂ€ljatöötamise poolest.
MĂ”nikord leiad tĂ”eliselt hĂ€mmastavaid programme. MĂ€lu kaevates koostasin nimekirja tĂ”elistest Unix-i pĂ€rlitest lĂ€bi aastate. Enamasti on need ĂŒsna haruldased ja mitte nii hĂ€davajalikud programmid. Kuid nende eripĂ€ra on originaalsus. Ma ei suuda isegi ette kujutada, et ma ise oleksin mĂ”elnud mĂ”nele neist ideedest.
Jagage, millised programmid on teid samuti nii hÀmmastanud?
PDP-7 Unix
Esimesele kohaile, PDP-7 Unix sĂŒsteemile. Selle lihtsus ja jĂ”ud sundisid mind vahetama vĂ”imsa peamise raamatu vĂ€ikese masina vastu. Siin on hierarhilise failisĂŒsteemi kvintessents, eraldi kest ja protsesside juhtimine kasutaja tasemel, mida Multics peamistest raamist ei suutnud saavutada pĂ€rast sadu inimtunde arendust. Unix'i puudused (nĂ€iteks kirje struktuur failisĂŒsteemis) olid sama Ă”petlikud ja vabastavad kui selle uuendused (nĂ€iteks sisendi ja vĂ€ljundi suunamine kestades).
dc
Robert Morrise muutuva tĂ€psusega lauaarvutuskalkulaatori matemaatika teek kasutab vigade taganalyĂŒsi, et mÀÀrata vajalik tĂ€psus igal sammul, et saavutada kasutaja mÀÀratud tulemuse tĂ€psus. 1968. aasta NATO tarkvarainseneride konverentsil esitasin oma ettekandes tarkvarakomponentide kohta standardprotseduurid, mis vĂ”iksid anda tulemuse mis tahes soovitud tĂ€psusega, kuid ma ei teadnud, kuidas neid praktikas rakendada. dc on siiani ainus teadaolev programm, mis suudab seda teha.
typo
Typo jĂ€rjestab teksti sĂ”nu sarnasusest lĂ€htudes ĂŒlejÀÀnud tekstiga. Kirjavigade nagu 'hte' tĂ”enĂ€osus asuda on enamasti loendi lĂ”pus. Robert Morris rÀÀkis uhkusega, et programm töötab sama hĂ€sti iga keele jaoks. Kuigi typo ei aita leida foneetilisi vigu, on see leid vĂ€ga kasulik kĂ”igile, kes kirjutavad teksti, ning sellega on olnud palju kasu enne, kui ilmus palju vĂ€hem huvitav, kuid tĂ€psem Ă”igekirjakontroll sĂ”nastiku jĂ€rgi.
Typo on seestpoolt sama ĂŒllatav kui vĂ€ljaspool. Sarnasuse mÔÔtmise algoritm pĂ”hineb trigrammide esinemissagedusel, mis arvutatakse 26Ă26Ă26 massiivis. VĂ€ikeses mĂ€lus oli raske leida ruumi ĂŒhebaidistele loenduritele, seega rakendati suurte arvude kompressiooniskeemi vĂ€ikesteks loenduriĂŒksusteks. Ălevoolu vĂ€ltimiseks vĂ€rskendati loendureid tĂ”enĂ€osuslikult, sĂ€ilitades loenduri vÀÀrtuse logaritmi hinnangu.
eqn
Fototöötluse vĂ”imaldamisega muutus klassikalise matemaatika sĂŒmbolite vĂ€ljakirjutamine vĂ”imalikuks, kuid ÀÀrmiselt vĂ€sitavaks. Lorinda Cherry otsustas luua kĂ”rgema taseme kirjelduse keele, ja varsti liitus temaga Brian Kernighan. Nende geniaalne lĂ€henemine seisnes suulise traditsiooni kirjalikus vĂ€ljenduses, mistĂ”ttu osutus eqn ÀÀrmiselt lihtsaks Ă”ppimiseks. Esimene omataoline matemaatiliste avalduste kirjeldusprotsessor, eqn pole sellest ajast peaaegu ĂŒldse arenenud.
struktuur
Brenda Baker asus arendama oma Fortan-to-Ratfor konverterit vastupidiselt oma ĂŒlemuse soovitusele â mulle. Ma arvasin, et see vĂ”ib viia algteksti spetsiaalse ĂŒmberkorraldamiseni. See oleks vabastatud operaatorite numbritest, kuid muidu ei olnud see loetavam kui korrektselt strukureeritud Fortrani kood. Brenda tĂ”estas, et ma eksin. Ta avastas, et igal Fortrani programmil on kanoniliselt struktureeritud vorm. Programmi arendajad eelistasid kanonilist vormi ning mitte seda, mida nad algselt kirjutasid.
pascal
SĂŒviveeb, mille lĂ”i Sue Grahami grupp Berkeley ĂŒlikoolis, pakkus parimat sĂŒntaksi analĂŒĂŒsi, mida ma kunagi nĂ€inud olen â ja see toimus automaatselt. SĂŒntaksi veaga annab kompilaator soovituse lisada lexeme, et jĂ€tkata analĂŒĂŒsi. Ăkski katse ei selgita, mis on valesti. Selle kompilaatoriga Ă”ppisin ma Pascalit ĂŒhe Ă”htu jooksul ilma juhendita.
osad
WWB (Writerâs Workbench) paketi sees peidetud moodul osad Lorinda Cherry mÀÀratleb ingliskeelsete tekstide sĂ”nade osad vaid vĂ€ikese sĂ”nastiku, Ă”igekirja ja grammatika reeglite alusel. Selle annotatsiooni pĂ”hjal genereerib WWB tekstist stilomeetrilised nĂ€itajad, nagu omadussĂ”nade, aluslausete ja keerukate lausete osakaal. Kui Lorinda andis NBC Today saates intervjuu ning rÀÀkis WWB innovaatilisest grammatika kontrollist tekstides, oli see esimene Unix'i mainimine televisioonis.
egrep
Al Aho arvas, et tema deterministlik regulaaravaldiste tuvastaja ĂŒletab Keni klassikalist nondeterministlikku tuvastajat. Kahjuks lĂ”petas viimane juba keeruliste regulaaravaldiste töötlemise, samal ajal kui egrep ta ehitas oma deterministlikku automaatikat. Selle vĂ”iduks sellel vĂ”istlusel leidis Al Aho viisi, kuidas ĂŒle minna automaadi olekuteabe eksponentsiaalse kasvu needusest, leiutades meetodi, mis lubas reaalajas koostada ainult neid tabeli kirjendeid, mida tĂ”eliselt kĂŒlastatakse tuvastamise ajal.
krabid
Luca Cardelli vĂ”luv meta-programm Bliti aknasĂŒsteemile tootis virtuaalseid krabisid, mis rĂ€ndasid ekraani tĂŒhjas ruumis, jĂ€rjest rohkem hammustades aktiivsete akende servi.
MĂ”ned ĂŒldised mĂ”tted
Kuigi seda ei pruugi vĂ€ljastpoolt nĂ€ha, mĂ€ngisid teooria ja algoritmid mÀÀravat rolli enamikus neist programmidest: typo, dc, struct, pascal, egrep. TĂ”eliselt ĂŒllatav on just teooria ebatavaline kasutamine.
Peaaegu poole loendi originaalautoriteks olid naised â pascal, struct, parts, eqn â mis ealiselt ĂŒletab naiste demograafilist osakaalu arvutiteaduses.
Douglas McIlroy
MĂ€rts, 2020
Allikas: habr.com
