De mest fantastiska Unix-programmen

Artikelförfattaren Douglas McIlroy Àr en amerikansk matematiker, ingenjör och programmerare. Han Àr mest kÀnd för utvecklingen av rörledningen i operativsystemet Unix, principerna för komponentorienterad programmering samt flera originella verktyg: spell, diff, sort, join, speak, tr.

Ibland stöter man pÄ verkligt fantastiska program. Efter att ha grÀvt i minnet har jag samlat en lista över verkliga juveler i Unix genom Ären. För det mesta Àr det ganska sÀllsynta och inte nödvÀndiga program. Men vad som utmÀrker dem Àr deras originalitet. Jag kan knappt förestÀlla mig att jag skulle ha kommit pÄ nÄgon av dem sjÀlv.

Dela gÀrna med dig av vilka program som ocksÄ har imponerat pÄ dig sÄ mycket.

PDP-7 Unix

För att börja med, sjÀlva systemet PDP-7 Unix. Dess enkelhet och kraft fick mig att överge en kraftfull mainframe för en liten maskin. HÀr finns essensen av det hierarkiska filsystemet, en separat skal och processhantering pÄ anvÀndarnivÄ, nÄgot som Multics pÄ mainframes inte lyckades realisera efter hundratals mÀnskliga Är av utveckling. Nackdelarna med Unix (som till exempel registreringsstrukturen i filsystemet) var lika lÀrorika och befriande som dess nyheter (som till exempel omdirigering av in- och utdata i skalet).

dc

Matematikbiblioteket för skrivbordskalkylatorn med variabel precision av Robert Morris anvÀnde backanalys av fel för att bestÀmma den precision som krÀvdes vid varje steg för att nÄ den precision som anvÀndaren angivit. PÄ NATO:s konferens om mjukvaruteknik 1968 föreslog jag referensprocedurer som kan ge resultat av vilken önskad precision som helst, men jag visste inte hur man skulle implementera dem i praktiken. dc Àr fortfarande det enda programmet jag kÀnner till som kan göra sÄdant.

typo

Typo sorterar ord i texten efter deras likhet med resten av texten. Felstavningar som ’hte’ tenderar att hamna i slutet av listan. Robert Morris sa stolt att programmet skulle fungera lika bra för vilket sprĂ„k som helst. Även om typo inte hjĂ€lper till att hitta fonetiska fel, blev det en verklig upptĂ€ckte för alla som skriver text och har varit mycket anvĂ€ndbart innan den betydligt mindre intressanta men mer precisa stavningskontrollen genom ordboken kom.

Typo Ă€r lika ovĂ€ntat utformat inuti som det Ă€r utanpĂ„. LikhetsmĂ€tningens algoritm baseras pĂ„ frekvensen av trigram som rĂ€knas i en matris 26×26×26. I ett litet minne fanns knappt plats för enbytesrĂ€knare, sĂ„ en komprimeringsschema för stora siffror till smĂ„ rĂ€knare implementerades. För att undvika överflödighet uppdaterades rĂ€knarna pĂ„ probabilistisk grund, vilket upprĂ€tthöll en uppskattning av rĂ€knarens logaritmvĂ€rde.

eqn

Med introduktionen av fotonoteringar blev det möjligt, men fruktansvÀrt trÄkigt att Äterge klassisk matematisk notation. Lorinda Cherry beslutade sig för att utveckla ett högre beskrivande sprÄk, och snart anslöt sig Brian Kernighan till henne. Deras geniala drag var att uttrycka den muntliga traditionen i skriftlig form, vilket gjorde eqn oerhört enkelt att lÀra sig. Den första preprocessorn för sprÄket för matematiska uttryck, eqn har sedan dess nÀstan inte förbÀttrats.

struct

Brenda Baker inledde utvecklingen av sin konverterare Fortan-till-Ratfor trots rĂ„det frĂ„n sin chef – mig. Jag trodde att detta kunde leda till en speciell omordning av kĂ€lltexten. Den skulle vara fri frĂ„n operatornummer, men i övrigt inte mer lĂ€sbar Ă€n vĂ€lstrukturerad Fortran-kod. Brenda bevisade att jag hade fel. Hon upptĂ€ckte att varje Fortran-program har en kanonisk strukturerad form. Programmerare föredrog den kanoniska formen framför det de ursprungligen hade skrivit.

pascal

Syntaxdiagnostik i kompilatorn, skapad av Sue Grahams grupp i Berkeley, var den mest hjĂ€lpsamma av alla jag nĂ„gonsin har sett – och den utfördes automatiskt. Vid en syntaktisk felaktighet föreslĂ„r kompilatorn att infoga en lexem för att fortsĂ€tta den syntaktiska analysen. Inga försök att förklara vad som var fel. Med denna kompilator lĂ€rde jag mig Pascal pĂ„ en kvĂ€ll, utan att ha nĂ„gon handbok tillgĂ€nglig.

parts

Modulen som Ă€r gömd inne i paketet WWB (Writer’s Workbench) parts Lorinda Cherry definierar ordklasser för ord i engelska texter baserat pĂ„ endast en liten ordbok, stavnings- och grammatikregler. UtifrĂ„n denna annotation presenterar programmet WWB stilometriska mĂ„tt för texten, som övervikten av adjektiv, bisatser och komplexa satser. NĂ€r Lorinda gav en intervju i TV-programmet Today pĂ„ NBC och talade om den innovativa grammatikkontrollen i WWB-texter, var det första gĂ„ngen Unix nĂ€mndes i TV.

egrep

Alfred Aho rÀknade med att hans deterministiska regex-analysator skulle övertrÀffa Kents klassiska icke-deterministiska analysator. TyvÀrr hade den senare redan slutfört sin genomgÄng av komplexa reguljÀra uttryck, medan egrep han byggde sin deterministiska automat. För att verkligen vinna det loppet undvek Alfred Aho förbannelsen av exponentiell tillvÀxt i automattillstÄndstabeller genom att hitta ett sÀtt att skapa endast de tabellposterna som faktiskt besöks under igenkÀnning.

krabbor

Luca Cardellis charmiga metaprogram för Blit-fönstersystemet producerade virtuella krabbor som vandrade över det tomma skÀrmutrymmet, och alltmer bet av kanterna pÄ aktiva fönster.

NÄgra allmÀnna tankar

Även om det inte Ă€r synligt utĂ„t har teori och algoritmer spelat en avgörande roll i skapandet av de flesta av dessa program: typo, dc, struct, pascal, egrep. Det mest förvĂ„nande Ă€r faktiskt det ovanliga anvĂ€ndandet av teori.

De ursprungliga författarna till nĂ€stan hĂ€lften av listan — pascal, struct, parts, eqn — var kvinnor, vilket lĂ„ngt överstiger den demografiska andelen kvinnor inom datavetenskap.

Douglas McIlroy
Mars, 2020


KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster