Die beste Unix-programme

Die skrywer van die artikel, Douglas McIlroy, is 'n Amerikaanse wiskundige, ingenieur en programmeerder. Hy is veral bekend vir die ontwikkeling van die pyplyn in die Unix-bedryfstelsel, die beginsels van komponent-georiënteerde programmering, en verskeie oorspronklike nutsprogramme: spel, verskil, sorteer, aansluit, praat, tr.

Soms kom jy werklik wonderlike programme teë. Nadat ek deur my geheue gesoek het, het ek 'n lys van regte Unix-juwele oor die jare saamgestel. Basies is dit redelik skaars en nie so noodsaaklike programme nie. Maar wat hulle laat uitstaan, is hul oorspronklikheid. Ek kan my nie eers indink dat ek self met die idee van enige van hulle vorendag gekom het nie.

Deel watter programme jy ook so beïndruk is?

PDP-7 Unix

Om mee te begin, die PDP-7 Unix-stelsel self. Sy eenvoud en krag het my van 'n kragtige hoofraam na 'n piepklein masjien laat beweeg. Dit is die kenmerkende hiërargiese lêerstelsel, aparte dop en gebruikervlakprosesbeheer wat Multics op die hoofraam nie kon bereik na honderde manjare se ontwikkeling nie. Unix se tekortkominge (soos die lêerstelsel se rekordstruktuur) was net so leersaam en bevrydend soos sy innovasies (soos shell I/O herdirection).

dc

Robert Morris se Variable Precision Desktop Calculator Math Library het inverse foutanalise gebruik om die akkuraatheid te bepaal wat by elke stap vereis word om 'n gebruiker-gespesifiseerde resultaat akkuraatheid te bereik. By die 1968 NAVO Sagteware-ingenieurswese-konferensie, in my verslag oor sagteware-komponente, het ek verwysingsprosedures voorgestel wat enige gewenste akkuraatheid kan produseer, maar ek het nie geweet hoe om dit in die praktyk toe te pas nie. dc is steeds die enigste program waarvan ek weet wat dit kan doen.

tikfout

Tikfout rangskik woorde in teks volgens hul ooreenkoms met die res van die teks. Spelfoute soos 'hte' is geneig om aan die einde van die lys te wees. Robert Morris het met trots gesê die program sal ewe goed vir enige taal werk. Alhoewel tikfout jou nie help om fonetiese foute te vind nie, was dit 'n ware seën vir alle tipesetters, en dit het baie goed gedoen voordat die veel minder interessante maar meer akkurate woordeboekspeltoetser gekom het.

Tikfout is net so onverwags aan die binnekant as wat dit aan die buitekant is. Die ooreenkomsmetingsalgoritme is gebaseer op die frekwensie van voorkoms van trigramme, wat in 'n 26×26×26-skikking getel word. Die klein geheue het skaars genoeg spasie gehad vir eengreeptellers, so 'n skema is geïmplementeer om groot getalle in klein tellers saam te druk. Om oorloop te vermy, is die tellers op 'n waarskynlikheidsbasis opgedateer, wat 'n skatting van die logaritme van die tellerwaarde handhaaf.

gelykstelling

Met die koms van fotosetwerk het dit moontlik, maar verskriklik vervelig, geword om klassieke wiskundige notasie te druk. Lorinda Cherry het besluit om 'n hoërvlak beskrywingstaal te ontwikkel, en gou het Brian Kernigan by haar aangesluit. Hulle briljante stap was om die mondelinge tradisie op skrif te stel, so eqn was merkwaardig maklik om te leer. Die eerste wiskundige uitdrukking taalvoorverwerker van sy soort, eqn is sedertdien nie veel verbeter nie.

struktuur

Brenda Baker het haar Fortan-na-Ratfor-omskakelaar begin ontwikkel teen die advies van haar baas, me. Ek het gedink dit kan lei tot 'n spesiale herrangskikking van die oorspronklike teks. Dit sal vry wees van verklaringnommers, maar andersins nie meer leesbaar as goed gestruktureerde Fortran-kode nie. Brenda het my verkeerd bewys. Sy het ontdek dat elke Fortran-program 'n kanonies gestruktureerde vorm het. Die programmeerders het die kanonieke vorm verkies, eerder as wat hulle self oorspronklik geskryf het.

Pascal

Die sintaksisdiagnostiek in die samesteller wat deur Sue Graham se groep by Berkeley geskep is, was die nuttigste wat ek nog ooit gesien het—en dit is outomaties gedoen. Op 'n sintaksisfout, vra die samesteller jou om 'n teken in te voeg om voort te gaan met ontleding. Geen poging om te verduidelik wat fout is nie. Met hierdie samesteller het ek Pascal in een aand geleer sonder enige handleiding byderhand.

dele

Versteek binne die WWB (Writer's Workbench) module parts Lorinda Cherry bepaal spraakdele vir woorde in 'n Engelse teks gebaseer op slegs 'n klein woordeboek, spelling en grammatikareëls. Op grond van hierdie aantekening vertoon die WWB-program stilometriese aanwysers van die teks, soos die voorkoms van byvoeglike naamwoorde, bysin en komplekse sinne. Toe Lorinda op NBC se Today 'n onderhoud gevoer is en oor die innoverende grammatikatoets in WWB-tekste gepraat het, was dit die eerste melding van Unix op televisie.

egrep

Al Aho het verwag dat sy deterministiese reëlmatige uitdrukking resolver Ken se klassieke nie-deterministiese resolwer sou verbysteek. Ongelukkig was laasgenoemde reeds besig om 'n deurgang deur komplekse gereelde uitdrukkings te voltooi, terwyl egrep sy eie deterministiese outomatisering gebou. Om steeds hierdie wedren te wen, het Al Aho die vloek van die eksponensiële groei van die staatstabel van die outomaat omseil deur 'n manier uit te vind om net daardie inskrywings in die tabel wat werklik tydens herkenning besoek word, op die vlug te bou.

krappe

Luca Cardelli se bekoorlike meta-program vir die Blit-vensterstelsel het virtuele krappe vrygestel wat deur die leë skermspasie rondgeloop het en die kante van aktiewe vensters meer en meer afgebyt het.

Enkele algemene gedagtes

Alhoewel dit nie van buite sigbaar is nie, het teorie en algoritmes 'n deurslaggewende rol gespeel in die skepping van die meeste van hierdie programme: tikfout, dc, struct, pascal, egrep. Trouens, dit is die ongewone toepassing van die teorie wat die meeste verrassend is.

Byna die helfte van die lys - pascal, struct, parts, eqn - is oorspronklik deur vroue geskryf, wat die demografiese van vroue in rekenaarwetenskap ver oortref het.

Douglas McIlroy
Maart, 2020


Bron: will.com

Voeg 'n opmerking