De bedste Unix-programmer

Forfatteren til artiklen, Douglas McIlroy, er en amerikansk matematiker, ingeniør og programmør. Han er bedst kendt for at udvikle pipelinen i Unix-operativsystemet, principperne for komponentorienteret programmering og flere originale hjælpeprogrammer: stave, diff, sorter, join, speak, tr.

Nogle gange støder du på nogle virkelig gode programmer. Efter at have gravet i min hukommelse, har jeg samlet en liste over nogle af de sande Unix-perler gennem årene. Grundlæggende er disse ret sjældne og ikke så nødvendige programmer. Men det, der adskiller dem, er deres originalitet. Jeg kan slet ikke forestille mig, at jeg selv kom på ideen til nogen af ​​dem.

Del, hvilke programmer imponerede dig også så meget?

PDP-7 Unix

Til at begynde med, selve PDP-7 Unix-systemet. Dens enkelhed og kraft fik mig til at skifte fra en kraftfuld mainframe til en lillebitte maskine. Det er det typiske hierarkiske filsystem, separat shell og processtyring på brugerniveau, som Multics på mainframes ikke kunne implementere efter hundredvis af mandeår med udvikling. Unix's mangler (såsom filsystemets rekordstruktur) var lige så lærerige og befriende som dets innovationer (såsom shell I/O-omdirigering).

dc

Robert Morris's matematikbibliotek med variabel præcision på skrivebordet brugte omvendt fejlanalyse til at bestemme den præcision, der kræves ved hvert trin for at opnå et brugerspecificeret præcisionsresultat. På NATO's Software Engineering Conference i 1968 foreslog jeg i mit papir om softwarekomponenter referenceprocedurer, der kunne frembringe resultater af enhver ønsket nøjagtighed, men jeg vidste ikke, hvordan jeg skulle implementere dem i praksis. dc er stadig det eneste program, jeg kender til, der kan gøre dette.

typo

Skrivefejl sorterer ord i tekst baseret på deres lighed med resten af ​​teksten. Stavefejl som 'hte' har en tendens til at ende i slutningen af ​​listen. Robert Morris sagde stolt, at programmet ville fungere lige godt på ethvert sprog. Selvom stavefejl ikke hjælper dig med at finde fonetiske fejl, var det en gave fra gud til alle sættere og var meget nyttigt, før den meget mindre interessante, men mere præcise stavekontrol i ordbogen kom.

Skrivefejl er lige så uventet indeni, som den er udenfor. Algoritmen til lighedsmåling er baseret på hyppigheden af ​​forekomst af trigrammer, som tælles i et 26x26x26 array. Der var knap nok plads i den lille hukommelse til enkeltbyte-tællere, så der blev implementeret et skema til at komprimere store tal til små tællere. For at undgå overløb blev tællere opdateret på sandsynlighedsbasis, idet der blev opretholdt et estimat af tællerværdiens logaritme.

lign

Med fremkomsten af ​​fotosæt blev det muligt, men frygtelig kedeligt, at producere klassisk matematisk notation. Lorinda Cherry besluttede at udvikle et beskrivelsessprog på højere niveau, og Brian Kernighan sluttede sig hurtigt til hende. Deres geniale træk var at udtrykke mundtlig tradition på skrift, hvorfor eqn viste sig at være overraskende let at lære. Den første matematiske udtryksprogforprocessor af sin art, eqn har kun oplevet ringe forbedring siden da.

struktur

Brenda Baker begyndte at udvikle sin Fortan-til-Ratfor-konverter mod råd fra hendes chef, mig. Jeg troede, at dette kunne resultere i en særlig omarrangering af den originale tekst. Den vil være fri for operatørnumre, men ellers ikke mere læsbar end velstruktureret Fortran-kode. Brenda beviste, at jeg tog fejl. Hun opdagede, at hvert Fortran-program har en kanonisk struktureret form. Programmører foretrak den kanoniske form frem for det, de selv oprindeligt skrev.

Paschal

Syntaksdiagnostikken i compileren bygget af Sue Grahams gruppe i Berkeley var den mest nyttige, jeg nogensinde har set – og de var automatiske. Hvis der er en syntaksfejl, beder compileren dig om at indsætte et token for at fortsætte med at analysere. Ingen forsøg på at forklare, hvad der er galt. Med denne compiler lærte jeg Pascal på en aften, uden nogen manual ved hånden.

dele

Modul skjult inde i WWB-pakken (Writer's Workbench). parts Lorinda Cherry bestemmer dele af tale for ord i engelsk tekst kun baseret på en lille ordbog, stave- og grammatikregler. Baseret på denne annotation viser WWB-programmet stilometriske indikatorer for teksten, såsom udbredelsen af ​​adjektiver, underordnede sætninger og komplekse sætninger. Da Lorinda blev interviewet i NBC's Today-show og talte om WWB's innovative grammatikkontrol, var det den første omtale af Unix på tv.

egrep

Al Aho håbede, at hans deterministiske regulære udtryksparser ville overgå Kens klassiske ikke-deterministiske parser. Desværre var sidstnævnte allerede ved at fuldføre et gennemløb af komplekse regulære udtryk indtil egrep byggede sin egen deterministiske automatisering. For stadig at vinde dette løb, omgik Al Aho forbandelsen af ​​eksponentiel vækst af automatens tilstandsbord ved at opfinde en måde at bygge videre på kun de bordposter, der faktisk blev besøgt under genkendelsen.

krabber

Luca Cardellis charmerende meta-program til Blit-vinduesystemet frigav virtuelle krabber, der vandrede rundt på det tomme skærmrum og bed flere og flere af kanterne af aktive vinduer.

Nogle generelle tanker

Selvom det ikke er synligt udefra, spillede teori og algoritmer en afgørende rolle i skabelsen af ​​de fleste af disse programmer: tastefejl, dc, struct, pascal, egrep. Faktisk er det den usædvanlige anvendelse af teorien, der er mest overraskende.

De oprindelige forfattere af næsten halvdelen af ​​listen – pascal, struct, dele, eqn – var kvinder, hvilket i høj grad overstiger den demografiske andel af kvinder i datalogi.

Douglas McIlroy
Marts, 2020


Kilde: www.habr.com

Tilføj en kommentar