De beste Unix-programmene

Forfatteren av artikkelen, Douglas McIlroy, er en amerikansk matematiker, ingeniør og programmerer. Han er mest kjent for å utvikle pipelinen i Unix-operativsystemet, prinsippene for komponentorientert programmering og flere originale verktøy: spell, diff, sort, join, speak, tr.

Noen ganger kommer du over noen virkelig flotte programmer. Etter å ha gravd i minnet mitt, har jeg satt sammen en liste over noen av de sanne Unix-perlene gjennom årene. I utgangspunktet er dette ganske sjeldne og ikke så nødvendige programmer. Men det som skiller dem er deres originalitet. Jeg kan ikke engang forestille meg at jeg kom på ideen til noen av dem selv.

Del, hvilke programmer imponerte deg også så mye?

PDP-7 Unix

For det første, selve PDP-7 Unix-systemet. Dens enkelhet og kraft fikk meg til å bytte fra en kraftig stormaskin til en liten maskin. Det er det typiske hierarkiske filsystemet, det separate skallet og prosesskontrollen på brukernivå som Multics på stormaskiner ikke kunne implementere etter hundrevis av årsverk med utvikling. Unix sine mangler (som filsystemets rekordstruktur) var like lærerike og befriende som innovasjonene (som shell I/O-omdirigering).

dc

Robert Morris sitt matematiske bibliotek for skrivebordskalkulator med variabel presisjon brukte invers feilanalyse for å bestemme presisjonen som kreves ved hvert trinn for å oppnå et brukerspesifisert presisjonsresultat. På NATO Software Engineering Conference i 1968, i min artikkel om programvarekomponenter, foreslo jeg referanseprosedyrer som kunne gi resultater med hvilken som helst ønsket nøyaktighet, men jeg visste ikke hvordan jeg skulle implementere dem i praksis. dc er fortsatt det eneste programmet jeg vet om som kan gjøre dette.

typo

Skrivefeil sorterer ord i tekst basert på deres likhet med resten av teksten. Feilstavinger som 'hte' har en tendens til å havne på slutten av listen. Robert Morris sa stolt at programmet ville fungere like godt på alle språk. Selv om skrivefeil ikke hjelper deg med å finne fonetiske feil, var det en gave for alle settere og var veldig nyttig før den mye mindre interessante, men mer nøyaktige stavekontrollen i ordboken kom.

Skrivefeil er like uventet inni som den er utenfor. Likhetsmålingsalgoritmen er basert på frekvensen av forekomst av trigrammer, som telles i en 26x26x26 matrise. Det var knapt nok plass i det lille minnet for enkeltbyte-tellere, så et opplegg ble implementert for å komprimere store tall til små tellere. For å unngå overløp ble tellere oppdatert på en sannsynlighetsbasis, og opprettholdt et estimat av logaritmen til tellerverdien.

ligning

Med bruken av fotosetting ble det mulig, men fryktelig kjedelig, å produsere klassisk matematisk notasjon. Lorinda Cherry bestemte seg for å utvikle et beskrivelsesspråk på høyere nivå, og Brian Kernighan ble snart med henne. Deres strålende grep var å uttrykke muntlig tradisjon skriftlig, og det er grunnen til at eqn viste seg å være overraskende lett å lære. Den første matematiske uttrykksspråkforbehandleren av sitt slag, eqn har sett liten forbedring siden den gang.

struktur

Brenda Baker begynte å utvikle sin Fortan-til-Ratfor-konverter mot råd fra sjefen hennes, meg. Jeg trodde dette kunne resultere i en spesiell omorganisering av originalteksten. Den vil være fri for operatørnummer, men ellers ikke mer lesbar enn godt strukturert Fortran-kode. Brenda beviste at jeg tok feil. Hun oppdaget at hvert Fortran-program har en kanonisk strukturert form. Programmerere foretrakk den kanoniske formen fremfor det de selv opprinnelig skrev.

pascal

Syntaksdiagnostikken i kompilatoren bygget av Sue Grahams gruppe i Berkeley var den mest nyttige jeg noensinne har sett – og de var automatiske. Hvis det er en syntaksfeil, ber kompilatoren deg om å sette inn et token for å fortsette å analysere. Ingen forsøk på å forklare hva som er galt. Med denne kompilatoren lærte jeg Pascal på en kveld, uten noen manual for hånden.

deler

Modul skjult inne i WWB (Writer's Workbench)-pakken parts Lorinda Cherry bestemmer deler av tale for ord i engelsk tekst basert kun på en liten ordbok, stave- og grammatikkregler. Basert på denne merknaden, viser WWB-programmet stilometriske indikatorer for teksten, for eksempel utbredelsen av adjektiver, underordnede ledd og komplekse setninger. Da Lorinda ble intervjuet på NBCs Today-show og snakket om WWBs innovative grammatikkkontroll, var det den første omtalen av Unix på TV.

egrep

Al Aho håpet at hans deterministiske regulære uttrykksparser ville overgå Kens klassiske ikke-deterministiske parser. Dessverre var sistnevnte allerede i ferd med å fullføre en pass gjennom komplekse regulære uttrykk frem til egrep bygget sin egen deterministiske automatisering. For fortsatt å vinne dette løpet, omgikk Al Aho forbannelsen av eksponentiell vekst av automatens tilstandstabell ved å finne opp en måte å bygge på flue bare de bordoppføringene som faktisk ble besøkt under gjenkjennelsen.

krabber

Luca Cardellis sjarmerende metaprogram for Blit-vindussystemet ga ut virtuelle krabber som vandret rundt på det tomme skjermrommet, og bet av flere og flere av kantene på aktive vinduer.

Noen generelle tanker

Selv om det ikke er synlig fra utsiden, spilte teori og algoritmer en avgjørende rolle i opprettelsen av de fleste av disse programmene: skrivefeil, dc, struct, pascal, egrep. Faktisk er det den uvanlige anvendelsen av teorien som er mest overraskende.

De opprinnelige forfatterne av nesten halve listen – pascal, struct, deler, eqn – var kvinner, noe som i stor grad overstiger den demografiske andelen kvinner i informatikk.

Douglas McIlroy
Mars 2020


Kilde: www.habr.com

Legg til en kommentar