A legjobb Unix programok

A cikk szerzője, Douglas McIlroy amerikai matematikus, mérnök és programozó. Leginkább arról ismert, hogy a Unix operációs rendszerben fejlesztette ki a folyamatot, a komponens-orientált programozás alapelveit és számos eredeti segédprogramot: spell, diff, sort, join, speak, tr.

Néha igazán csodálatos programokkal találkozhatunk. Miután turkáltam az emlékezetemben, összeállítottam egy listát a valódi Unix gyöngyszemekről az évek során. Alapvetően ezek meglehetősen ritkák és nem annyira szükséges programok. De ami kiemeli őket, az az eredetiségük. El sem tudom képzelni, hogy én magam találtam ki valamelyik ötletet.

Oszd meg, milyen programok nyűgöztek le?

PDP-7 Unix

Kezdetnek maga a PDP-7 Unix rendszer. Egyszerűsége és ereje késztetett arra, hogy egy nagy teljesítményű mainframe-ből egy apró géppé váltam. Ez az az alapvető hierarchikus fájlrendszer, külön shell és felhasználói szintű folyamatvezérlés, amelyet a nagyszámítógépen lévő Multics több száz emberévnyi fejlesztés után nem tudott elérni. A Unix hiányosságai (például a fájlrendszer rekordstruktúrája) ugyanolyan tanulságosak és felszabadítóak voltak, mint újításai (például a shell I/O átirányítás).

dc

Robert Morris Variable Precision Desktop Calculator Math Library inverz hibaelemzését használta annak meghatározására, hogy az egyes lépéseknél mekkora precizitás szükséges a felhasználó által megadott eredménypontosság eléréséhez. Az 1968-as NATO Szoftvermérnöki Konferencián a szoftverkomponensekről szóló beszámolómban referencia eljárásokat javasoltam, amelyek bármilyen kívánt pontosságot képesek elérni, de nem tudtam, hogyan kell ezeket a gyakorlatba átültetni. A dc még mindig az egyetlen olyan program, amelyről tudom, hogy képes erre.

sajtóhiba

A gépelés a szövegben lévő szavakat a szöveg többi részéhez való hasonlóságuk szerint rendezi el. Az olyan elírások, mint a „hte”, általában a lista végén vannak. Robert Morris büszkén mondta, hogy a program minden nyelven egyformán jól működik. Bár az elgépelés nem segít a fonetikai hibák megtalálásában, igazi áldás volt minden betűszedő számára, és sok jót tett, mielőtt megjelent a sokkal kevésbé érdekes, de pontosabb szótári helyesírás-ellenőrző.

A gépelési hiba belülről ugyanolyan váratlan, mint kívülről. A hasonlóságmérési algoritmus a trigramok előfordulási gyakoriságán alapul, amelyeket egy 26×26×26-os tömbben számolunk. Az apró memóriában alig volt elég hely az egybájtos számlálók számára, ezért olyan sémát valósítottak meg, amely nagy számokat kis számlálókba tömörített. A túlcsordulás elkerülése érdekében a számlálókat valószínűségi alapon frissítették, megtartva a számláló értékének logaritmusának becslését.

eqn

A fotószedés megjelenésével lehetővé vált, de borzasztóan unalmas volt a klasszikus matematikai jelölések nyomtatása. Lorinda Cherry úgy döntött, hogy kifejleszt egy magasabb szintű leíró nyelvet, és hamarosan Brian Kernigan csatlakozott hozzá. Zseniális lépésük az volt, hogy a szájhagyományt írásba foglalják, így az eqn rendkívül könnyen megtanulható. A maga nemében az első matematikai kifejezésnyelvi előfeldolgozó, az eqn azóta sem sokat fejlődött.

strukturált

Brenda Baker elkezdte fejleszteni a Fortan-to-Ratfor átalakítóját főnöke, én tanácsa ellenére. Arra gondoltam, hogy ez az eredeti szöveg speciális átrendezéséhez vezethet. Kivonatszámoktól mentes lesz, de egyébként nem olvashatóbb, mint a jól strukturált Fortran kód. Brenda bebizonyította, hogy tévedek. Felfedezte, hogy minden Fortran programnak van kanonikusan felépített formája. A programozók a kanonikus formát részesítették előnyben, és nem azt, amit eredetileg maguk írtak.

pascal

A Sue Graham Berkeley-i csoportja által létrehozott fordítóprogram szintaktikai diagnosztikája volt a leghasznosabb, amit valaha láttam – és ez automatikusan megtörtént. Szintaktikai hiba esetén a fordító egy tokent beszúrására kéri az elemzés folytatásához. Ne próbálja megmagyarázni, mi a baj. Ezzel a fordítóval egy este alatt megtanultam a Pascalt, anélkül, hogy kéznél volt valami kézikönyv.

alkatrészek

A WWB (Writer's Workbench) modulban elrejtve parts Lorinda Cherry csak egy kis szótár, helyesírási és nyelvtani szabályok alapján határozza meg az angol szöveg szavainak beszédrészeit. E megjegyzés alapján a WWB program megjeleníti a szöveg stiliometrikus mutatóit, például a melléknevek, az alárendelt tagmondatok és az összetett mondatok elterjedtségét. Amikor Lorindával interjút készítettek az NBC Today című műsorában, és a WWB-szövegek innovatív nyelvtani ellenőrzéséről beszélt, ez volt az első említés a Unixról a televízióban.

egrep

Al Aho arra számított, hogy a determinisztikus reguláris kifejezés feloldója megelőzi Ken klasszikus, nem determinisztikus feloldóját. Sajnos az utóbbi már befejezte az összetett reguláris kifejezések áthaladását, míg egrep felépítette saját determinisztikus automatizálását. Hogy mégis megnyerje ezt a versenyt, Al Aho megkerülte az automata állapottáblázatának exponenciális növekedésének átkát azzal, hogy feltalált egy módszert, amellyel menet közben csak azokat a bejegyzéseket építheti fel a táblázatban, amelyeket a felismerés során ténylegesen meglátogatnak.

rákok

Luca Cardelli bájos meta-programja a Blit ablakrendszerhez virtuális rákokat bocsátott ki, amelyek az üres képernyőterületen barangoltak, és egyre jobban leharapták az aktív ablakok széleit.

Néhány általános gondolat

Bár kívülről nem látszik, a legtöbb ilyen program létrejöttében az elmélet és az algoritmusok játszottak döntő szerepet: typo, dc, struct, pascal, egrep. Valójában az elmélet szokatlan alkalmazása a legmeglepőbb.

A lista közel felét – pascal, struct, parts, eqn – eredetileg nők írták, ami messze meghaladja a számítástechnikában dolgozó nők demográfiai számát.

Douglas McIlroy
2020 márciusa


Forrás: will.com

Hozzászólás