Parhaat Unix-ohjelmat

Artikkelin kirjoittaja Douglas McIlroy on amerikkalainen matemaatikko, insinööri ja ohjelmoija. Hänet tunnetaan parhaiten Unix-käyttöjärjestelmän putkilinjan kehittämisestä, komponenttisuuntautuneen ohjelmoinnin periaatteista ja useista alkuperäisistä apuohjelmista: spell, diff, sort, join, speak, tr.

Joskus törmäät todella mahtaviin ohjelmiin. Kaivattuani muistiani, olen koonnut luettelon joistakin todellisista Unix-helmistä vuosien varrella. Pohjimmiltaan nämä ovat melko harvinaisia ​​ja ei niin tarpeellisia ohjelmia. Mutta mikä erottaa heidät muista, on heidän omaperäisyys. En voi edes kuvitella, että olisin itse keksinyt idean johonkin niistä.

Jaa, mitkä ohjelmat tekivät sinuun niin suuren vaikutuksen?

PDP-7 Unix

Ensinnäkin itse PDP-7 Unix-järjestelmä. Sen yksinkertaisuus ja teho saivat minut vaihtamaan tehokkaasta keskuskoneesta pieneen koneeseen. Se on pohjimmainen hierarkkinen tiedostojärjestelmä, erillinen kuori ja käyttäjätason prosessinhallinta, jota keskustietokoneiden Multics ei pystynyt toteuttamaan satojen henkilövuosien kehitystyön jälkeen. Unixin puutteet (kuten tiedostojärjestelmän tietuerakenne) olivat yhtä opettavaisia ​​ja vapauttavia kuin sen innovaatiot (kuten shell I/O -uudelleenohjaus).

dc

Robert Morrisin muuttuvan tarkkuuden pöytälaskimen matemaattinen kirjasto käytti käänteistä virheanalyysiä määrittääkseen kussakin vaiheessa vaaditun tarkkuuden käyttäjän määrittämän tarkkuuden saavuttamiseksi. Vuoden 1968 NATO Software Engineering Conference -konferenssissa ohjelmistokomponentteja käsittelevässä asiakirjassani ehdotin referenssimenetelmiä, jotka voisivat tuottaa minkä tahansa halutun tarkkuuden tuloksia, mutta en tiennyt, kuinka ne toteutetaan käytännössä. dc on edelleen ainoa ohjelma, jonka tiedän, joka voi tehdä tämän.

painovirhe

Kirjoitusvirhe järjestää sanat tekstissä sen mukaan, että ne ovat samankaltaisia ​​muun tekstin kanssa. Kirjoitusvirheet, kuten "hte", päätyvät yleensä luettelon loppuun. Robert Morris sanoi ylpeänä, että ohjelma toimisi yhtä hyvin millä tahansa kielellä. Vaikka kirjoitusvirhe ei auta sinua löytämään foneettisia virheitä, se oli Jumalan lahja kaikille ladojille ja oli erittäin hyödyllinen ennen kuin paljon vähemmän kiinnostava mutta tarkempi sanakirjan oikeinkirjoituksen tarkistus tuli käyttöön.

Kirjoitusvirhe on yhtä odottamaton sisällä kuin ulkona. Samankaltaisuuden mittausalgoritmi perustuu trigrammien esiintymistiheyteen, jotka lasketaan 26x26x26-taulukossa. Pienessä muistissa oli hädin tuskin tarpeeksi tilaa yksitavuisille laskureille, joten toteutettiin malli suurten lukujen pakkaamiseksi pieniksi laskureiksi. Ylivuodon välttämiseksi laskurit päivitettiin todennäköisyyspohjalta säilyttäen laskurin arvon logaritmin arvio.

eqn

Valotyyppien syntymisen myötä klassisen matemaattisen merkinnän tuottaminen tuli mahdolliseksi, mutta hirveän työlästä. Lorinda Cherry päätti kehittää korkeamman tason kuvauskielen, ja Brian Kernighan liittyi pian häneen. Heidän loistava askeleensa oli ilmaista suullista perinnettä kirjallisesti, minkä vuoksi eqn osoittautui yllättävän helposti opittavaksi. Ensimmäinen matemaattinen ilmaisukielen esiprosessori laatuaan, eqn, ei ole juurikaan parantunut sen jälkeen.

rakenne

Brenda Baker aloitti Fortan-to-Ratfor-muuntimen kehittämisen pomonsa, minun, neuvoja vastaan. Ajattelin, että tämä saattaa johtaa alkuperäisen tekstin erityiseen uudelleenjärjestykseen. Se on vailla operaattorinumeroita, mutta muuten ei luettavampaa kuin hyvin jäsennelty Fortran-koodi. Brenda osoitti minun olevan väärässä. Hän huomasi, että jokaisella Fortran-ohjelmalla on kanonisesti jäsennelty muoto. Ohjelmoijat suosivat kanonista muotoa sen sijaan, mitä he itse alun perin kirjoittivat.

Pascal

Sue Grahamin Berkeleyn ryhmän rakentaman kääntäjän syntaksidiagnostiikka oli hyödyllisintä, mitä olen koskaan nähnyt – ja ne olivat automaattisia. Jos tapahtuu syntaksivirhe, kääntäjä kehottaa lisäämään tunnuksen, jotta voit jatkaa jäsentämistä. Ei yritetä selittää mikä on vialla. Tällä kääntäjällä opin Pascalin yhdessä illassa, ilman mitään käsikirjaa.

osat

Moduuli piilotettu WWB (Writer's Workbench) -paketin sisään parts Lorinda Cherry määrittää englanninkielisen tekstin sanojen puheosat vain pienen sanakirjan, oikeinkirjoitus- ja kielioppisääntöjen perusteella. Tämän huomautuksen perusteella WWB-ohjelma näyttää tekstin stylometrisiä indikaattoreita, kuten adjektiivien, alalauseiden ja monimutkaisten lauseiden yleisyyden. Kun Lorinda haastateltiin NBC:n Today-ohjelmassa ja puhui WWB:n innovatiivisesta kieliopin tarkistuksesta, Unix mainittiin ensimmäisen kerran televisiossa.

egrep

Al Aho toivoi, että hänen deterministisen säännöllisen lausekkeen jäsentimen suorituskyky olisi parempi kuin Kenin klassinen ei-deterministinen jäsentäjä. Valitettavasti jälkimmäinen oli jo suorittamassa monimutkaisten säännöllisten lausekkeiden läpikulkua asti egrep rakensi oman deterministisen automaation. Voittaakseen silti tämän kilpailun Al Aho ohitti automaatin tilataulukon eksponentiaalisen kasvun kirouksen keksimällä tavan rakentaa lennossa vain ne taulukkomerkinnät, joissa tunnistuksen aikana todella käytiin.

rapuja

Luca Cardellin hurmaava meta-ohjelma Blit-ikkunajärjestelmälle julkaisi virtuaalisia rapuja, jotka vaelsivat ympäri tyhjää näyttötilaa pureskelemalla yhä enemmän aktiivisten ikkunoiden reunoja.

Muutamia yleisiä ajatuksia

Vaikka se ei näy ulkopuolelta, teorialla ja algoritmeilla oli ratkaiseva rooli useimpien näiden ohjelmien luomisessa: kirjoitusvirhe, dc, struct, pascal, egrep. Itse asiassa teorian epätavallinen soveltaminen on yllättävintä.

Alkuperäiset kirjoittajat lähes puolessa listasta – pascal, struct, parts, eqn – olivat naisia, mikä ylittää huomattavasti tietojenkäsittelytieteen naisten demografisen osuuden.

Douglas McIlroy
Maaliskuu, 2020


Lähde: will.com

Lisää kommentti