De bästa Unix-programmen

Författaren till artikeln, Douglas McIlroy, är en amerikansk matematiker, ingenjör och programmerare. Han är mest känd för att utveckla pipelinen i Unix-operativsystemet, principerna för komponentorienterad programmering och flera ursprungliga verktyg: stava, diff, sortera, join, speak, tr.

Ibland stöter man på riktigt underbara program. Efter att ha rotat igenom mitt minne sammanställde jag en lista över riktiga Unix-pärlor genom åren. I grund och botten är dessa ganska sällsynta och inte så nödvändiga program. Men det som får dem att sticka ut är deras originalitet. Jag kan inte ens föreställa mig att jag själv kom på idén om någon av dem.

Dela vilka program du också är så imponerad?

PDP-7 Unix

Till att börja med, själva PDP-7 Unix-systemet. Dess enkelhet och kraft fick mig att gå från en kraftfull stordator till en liten maskin. Det är det typiska hierarkiska filsystemet, det separata skalet och processkontrollen på användarnivå som Multics på stordatorn inte har kunnat uppnå efter hundratals manår av utveckling. Unix brister (som filsystemets journalstruktur) var lika lärorika och befriande som dess innovationer (som shell I/O-omdirigering).

dc

Robert Morris Variable Precision Desktop Calculator Math Library använde omvänd felanalys för att bestämma den precision som krävs vid varje steg för att uppnå en användarspecificerad resultatprecision. Vid NATOs programvaruteknikkonferens 1968, i min rapport om mjukvarukomponenter, föreslog jag referensprocedurer som kunde producera vilken precision som helst, men jag visste inte hur jag skulle omsätta dem i praktiken. dc är fortfarande det enda programmet jag känner till som kan göra detta.

typo

Skrivfel ordnar ord i texten efter deras likhet med resten av texten. Felstavningar som "hte" brukar vara i slutet av listan. Robert Morris sa stolt att programmet skulle fungera lika bra för alla språk. Även om stavfel inte hjälper dig att hitta fonetiska fel, var det en riktig välsignelse för alla typsättare, och det gjorde mycket nytta innan den mycket mindre intressanta men mer exakta ordbokstavningskontrollen kom.

Skrivfel är lika oväntat på insidan som det är på utsidan. Algoritmen för likhetsmätning är baserad på frekvensen av förekomst av trigram, som räknas i en 26×26×26-matris. Det lilla minnet hade knappt tillräckligt med utrymme för en-byte-räknare, så ett schema implementerades för att komprimera stora tal till små räknare. För att undvika översvämning uppdaterades räknarna på en probabilistisk basis, och bibehöll en uppskattning av logaritmen för räknarvärdet.

ekv

Med fotosättningens tillkomst blev det möjligt, men fruktansvärt tråkigt, att skriva ut klassisk matematisk notskrift. Lorinda Cherry bestämde sig för att utveckla ett beskrivningsspråk på högre nivå, och snart anslöt sig Brian Kernigan till henne. Deras lysande drag var att skriva den muntliga traditionen, så eqn var anmärkningsvärt lätt att lära sig. Den första språkförberedaren för matematiska uttryck i sitt slag, eqn har inte förbättrats mycket sedan dess.

struktur

Brenda Baker började utveckla sin Fortan-till-Ratfor-omvandlare mot råd från hennes chef, mig. Jag tänkte att detta kunde leda till en speciell omordning av originaltexten. Den kommer att vara fri från påståendenummer, men i övrigt inte mer läsbar än välstrukturerad Fortran-kod. Brenda visade att jag hade fel. Hon upptäckte att varje Fortran-program har en kanonstrukturerad form. Programmerarna föredrog den kanoniska formen, snarare än vad de själva ursprungligen skrev.

pascal

Syntaxdiagnostiken i kompilatorn skapad av Sue Grahams grupp i Berkeley var den mest användbara jag någonsin sett – och den gjordes automatiskt. Vid ett syntaxfel uppmanar kompilatorn dig att infoga en token för att fortsätta tolka. Inget försök att förklara vad som är fel. Med den här kompilatorn lärde jag mig Pascal på en kväll utan någon manual till hands.

reservdelar till din klassiker

Gömd inuti WWB-modulen (Writer's Workbench). parts Lorinda Cherry bestämmer delar av tal för ord i en engelsk text baserat på endast en liten ordbok, stavning och grammatikregler. Baserat på denna annotering visar WWB-programmet stilometriska indikatorer för texten, såsom förekomsten av adjektiv, bisatser och komplexa meningar. När Lorinda intervjuades på NBC:s Today och pratade om den innovativa grammatikkontrollen i WWB-texter, var det det första omnämnandet av Unix på tv.

egrep

Al Aho förväntade sig att hans deterministiska resolver för reguljära uttryck skulle gå om Kens klassiska icke-deterministiska resolver. Tyvärr slutförde den senare redan ett pass genom komplexa reguljära uttryck, medan egrep byggde sin egen deterministiska automatisering. För att ändå vinna det här loppet kom Al Aho runt förbannelsen av den exponentiella tillväxten av automatens tillståndstabell genom att uppfinna ett sätt att bygga i farten endast de poster i tabellen som faktiskt besöks under igenkänning.

krabbor

Luca Cardellis charmiga metaprogram för Blit-fönstersystemet släppte virtuella krabbor som strövade på det tomma skärmutrymmet och biter av kanterna på aktiva fönster mer och mer.

Några allmänna tankar

Även om det inte är synligt från utsidan, spelade teori och algoritmer en avgörande roll i skapandet av de flesta av dessa program: stavfel, dc, struct, pascal, egrep. I själva verket är det den ovanliga tillämpningen av teorin som är mest överraskande.

Nästan hälften av listan – pascal, struct, parts, eqn – skrevs ursprungligen av kvinnor, vilket vida överträffar demografin för kvinnor inom datavetenskap.

Douglas McIlroy
Mars 2020


Källa: will.com

Lägg en kommentar