Nejpozoruhodnější programy Unix

Autor článku Douglas McIlroy je americký matematik, inženýr a programátor. Nejvíce je známý díky vývoji pipeliningu v operačním systému Unix, principům komponentně orientovaného programování a několika originálním utilitám: spell, diff, sort, join, speak, tr.

Někdy narazíte na skutečně pozoruhodné programy. Po vzpomínání jsem sestavil seznam skutečných klenotů Unixu za všechny roky. Většinou jde o poměrně vzácné a nikoliv tak nezbytné programy. Ale to, co je odlišuje, je jejich originalita. Ani si nedokážu představit, že bych měl sám nějaký z nich vymyslet.

Podělte se, které programy vás také tak ohromily?

PDP-7 Unix

Začněme samotným systémem PDP-7 Unix. Jeho jednoduchost a síla mě donutila přejít z mocného mainframu na malinkou mašinu. Zde je ukázkou hierarchického souborového systému, samostatná shell a správa procesů na úrovni uživatele, což Multics na mainframech nedokázal realizovat po stovkách mužských let vývoje. Nedostatky Unixu (například struktura záznamů v souborovém systému) byly stejně poučné a osvobozující jako jeho novinky (například přesměrování vstupu a výstupu v shellu).

dc

Matematická knihovna pro stolní kalkulačku s proměnnou přesností Roberta Morrise používala inverzní analýzu chyb k určení požadované přesnosti na každém kroku pro dosažení požadované uživatelské přesnosti výsledku. Na konferenci NATO o softwarovém inženýrství v roce 1968 ve své přednášce o softwarových komponentech jsem navrhl referenční procedury, které mohou poskytnout jakoukoli požadovanou přesnost, ale nevěděl jsem, jak je realizovat v praxi. dc zůstává dosud jediným známým programem schopným toho.

typo

Typo uspořádává slova v textu podle jejich podobnosti s ostatním textem. Překlepy jako 'hte' mají tendenci se objevovat na konci seznamu. Robert Morris s hrdostí říkal, že program bude stejně dobrý pro jakýkoli jazyk. Ačkoliv typo nepomáhá najít fonetické chyby, stala se skutečným pokladem pro všechny, kdo text zadávají, a přinesla mnoho užitku před tím, než se objevila mnohem méně zajímavá, ale přesnější kontrola pravopisu pomocí slovníku.

Typo je uvnitř stejně nečekané jako zvenčí. Algoritmus měření podobnosti je založen na četnosti výskytu trigramů, které se počítají v poli 26×26×26. V malém paměťovém prostoru sotva bylo místo pro jedbyteové počítadla, a proto byla realizována schéma komprese velkých čísel na malá počítadla. Aby se předešlo přetečení, počítadla se aktualizovala na pravděpodobnostním základě, přičemž byla udržována odhad logaritmu hodnoty počítadla.

eqn

S příchodem fotonabídky se stalo možné, ale strašně únavné vytvářet klasickou matematickou notaci. Lorinda Cherry se rozhodla vyvinout jazyk vyššího popisu a brzy se k ní připojil Brian Kernighan. Jejich znamenitý krok spočíval v tom, aby vyslovili ústní tradici v písemné podobě, a tak se eqn ukázal jako překvapivě snadný k naučení. První svého druhu předprocesor jazyka pro popis matematických výrazů, eqn od té doby téměř nebyl vylepšen.

struct

Brenda Baker začala vyvíjet svůj konvertor Fortan-to-Ratfor navzdory radě svého nadřízeného – mě. Myslel jsem si, že to může vést k speciálnímu přeuspořádání zdrojového textu. Bude zbaveno čísel operátorů, ale jinak ne více čitelné než gramotně strukturovaný kód Fortran. Brenda dokázala, že jsem se mýlil. Zjistila, že každá program Fortran má kanonicky strukturovanou formu. Programátoři preferovali kanonickou formu, a ne to, co napsali původně.

pascal

Diagnostika syntaxe v kompilátoru, který vyvinula skupina Sue Graham v Berkeley, byla nejvíce užitečná ze všech, jaké jsem kdy viděl — a probíhala automaticky. Při syntaktické chybě kompilátor navrhuje vložit lexém, aby pokračoval v syntaktické analýze. Žádné pokusy vysvětlit, co je špatně. S tímto kompilátorem jsem se naučil Pascal za jeden večer, aniž bych měl k dispozici nějaký návod.

parts

Skrytý uvnitř balíčku WWB (Writer’s Workbench) modul parts Lorinda Cherry určuje části řeči pro slova v anglickém textu na základě pouze malého slovníku, pravopisných pravidel a gramatiky. Na základě této anotace program WWB generuje stylometrické ukazatele textu, jako je převaha přídavných jmen, vedlejších vět a složených vět. Když Lorinda poskytla rozhovor v televizi Today na NBC a hovořila o inovativní kontrole gramatiky v textech WWB, šlo o první zmínku Unixu v televizi.

egrep

Al Aho počítal s tím, že jeho deterministický rozpoznávač regulárních výrazů překoná klasický nedeterministický rozpoznávač Kena. Bohužel, ten poslední již dokončoval průchod složitými regulárními výrazy, zatímco egrep stavěl svou deterministickou automatiku. Aby v této závodě přesto zvítězil, Al Aho se vyhnul prokletí exponenciálního růstu tabulky stavů automatu tím, že vynalezl způsob, jak za letu vytvářet pouze ty záznamy tabulky, které jsou skutečně navštěvovány během rozpoznávání.

krabi

Okouzlující meta-program Luki Cardelli pro okenní systém Blit generoval virtuální kraby, kteří se toulali prázdným prostorem obrazovky a stále více okusovali okraje aktivních oken.

Některé obecné myšlenky

I když to není vidět navenek, teorie a algoritmy hrály rozhodující roli při vytváření většiny těchto programů: typo, dc, struct, pascal, egrep. Ve skutečnosti nejvíce překvapuje právě neobvyklé uplatnění teorie.

Originálními autory téměř poloviny seznamu — pascal, struct, parts, eqn — byly ženy, což značně převyšuje demografický podíl žen v oblasti informatiky.

Douglas McIlroy
Březen, 2020


Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster