Unix programarik handienak

Artikuluaren egilea, Douglas McIlroy, matematikari, ingeniari eta programatzaile estatubatuarra da. Unix sistema eragilean pipeline, osagaietara zuzendutako programazioaren printzipioak eta jatorrizko hainbat utilitate garatzeagatik da ezaguna: spell, diff, sort, join, speak, tr.

Batzuetan oso programa bikainak topatzen dituzu. Nire memorian arakatu ondoren, Unix-en benetako harribitxi batzuen zerrenda osatu dut urteetan zehar. Funtsean, programa nahiko arraroak eta ez hain beharrezkoak dira. Baina bereizten dituena originaltasuna da. Ezin dut imajinatu ere neuk bururatu zitzaidanik horietako baten ideia.

Partekatu, zein programak ere harritu zaitu hainbeste?

PDP-7 Unix

Hasteko, PDP-7 Unix sistema bera. Bere sinpletasunak eta botereak mainframe indartsu batetik makina txiki batera aldatzera bultzatu ninduen. Fitxategi-sistema hierarkikoa, shell bereizia eta erabiltzaile-mailako prozesu-kontrola da Multics mainframes-ek ehunka urtez garatu ondoren inplementatu ezin izan zuena. Unix-en gabeziak (adibidez, fitxategi-sistemaren erregistro-egitura) bere berrikuntzak bezain hezigarriak eta askatzaileak ziren (esaterako shell I/O birbideratzea).

dc

Robert Morris-en doitasun aldakorreko mahaigaineko kalkulagailu matematika liburutegiak alderantzizko erroreen analisia erabili zuen erabiltzaileak zehaztutako zehaztasun emaitza lortzeko urrats bakoitzean behar den zehaztasuna zehazteko. 1968ko NATOko Software Ingeniaritza Konferentzian, software osagaiei buruzko nire artikuluan, nahi den zehaztasuneko emaitzak sor ditzaketen erreferentzia-prozedurak proposatu nituen, baina ez nekien praktikan nola ezarri. dc da oraindik hori egin dezakeen ezagutzen dudan programa bakarra.

akatsa

Typo-k hitzak testuan ordenatzen ditu gainerako testuarekin duten antzekotasunaren arabera. 'hte' bezalako ortografia-okerrak zerrendaren amaieran amaitu ohi dira. Robert Morrisek harro esan zuen programak berdin funtzionatuko zuela edozein hizkuntzatan. Ortografia akatsak akats fonetikoak aurkitzen laguntzen ez dizun arren, idazkera guztientzat jainkozko bat izan zen eta oso erabilgarria izan zen hiztegiaren zuzenketa ortografikoa askoz ere ez hain interesgarri baina zehatzagoa iritsi aurretik.

Akatsa kanpoan bezain ustekabekoa da. Antzekotasuna neurtzeko algoritmoa 26x26x26 array batean zenbatzen diren trigramen agerraldiaren maiztasunean oinarritzen da. Memoria txikian apenas zegoen toki bakarreko kontagailuetarako, beraz, eskema bat ezarri zen zenbaki handiak kontagailu txikietan konprimitzeko. Gainezkatzea ekiditeko, kontagailuak probabilitate-oinarri batean eguneratu ziren, kontagailuaren balioaren logaritmoaren estimazioa mantenduz.

ek

Fototipografiaren etorrerarekin, posible egin zen, baina izugarri neketsua, notazio matematiko klasikoa sortzea. Lorinda Cherry-k goi-mailako deskribapen-lengoaia bat garatzea erabaki zuen, eta Brian Kernighan laster batu zitzaion. Haien mugimendu bikaina ahozko tradizioa idatziz adieraztea izan zen, eta horregatik eqn ikasteko oso erraza izan zen. Eqn-ek bere motako lehen espresio-lengoaiaren aurreprozesadoreak hobekuntza gutxi izan du ordutik.

egitura

Brenda Baker bere Fortan-to-Ratfor bihurgailua garatzen hasi zen bere nagusiaren, ni, aholkuaren aurka. Honek jatorrizko testuaren berrantolaketa berezi bat ekar dezakeela pentsatu nuen. Operadore-zenbakirik gabe egongo da, baina bestela ez da ondo egituratutako Fortran kodea baino irakurgarriagoa. Brendak oker frogatu zidan. Fortran programa bakoitzak kanonikoki egituratutako forma bat duela aurkitu zuen. Programatzaileek forma kanonikoa nahiago zuten beraiek jatorrian idatzi zutena baino.

pascal

Sue Graham-en Berkeley-ko taldeak eraikitako konpilagailuko sintaxi-diagnostikoak inoiz ikusi ditudan erabilgarrienak izan dira, eta automatikoak ziren. Sintaxi-errore bat badago, konpilatzaileak token bat txertatzeko eskatzen dizu analizatzen jarraitzeko. Ez dago gaizki dagoena azaltzeko saiakerarik. Konpilatzaile honekin Pascal ikasi nuen arratsalde batean, eskulibururik gabe.

zatiak

WWB (Writer's Workbench) paketearen barruan ezkutatuta dagoen modulua parts Lorinda Cherry-k ingelesezko testuko hitzen hizkeraren zatiak zehazten ditu hiztegi txiki batean, ortografia eta gramatika arauetan soilik oinarrituta. Oharpen horretan oinarrituta, WWB programak testuaren adierazle estilometrikoak erakusten ditu, hala nola, adjektiboen, mendeko perpausen eta perpaus konplexuen prebalentzia. Lorinda NBCko Today saioan elkarrizketatu zutenean eta WWBren gramatika egiaztapen berritzaileari buruz hitz egin zuenean, Unix-en lehen aipamena izan zen telebistan.

egrep

Al Aho-k espero zuen bere adierazpen erregular deterministikoak Ken-en analizatzaile ez-determinista klasikoa gaindituko zuela. Zoritxarrez, azken hori jada adierazpen erregular konplexuen bidez igarotzen ari zen arte egrep bere automatismo deterministikoa eraiki zuen. Lasterketa hau oraindik irabazteko, Al Ahok automataren egoera-taularen hazkunde esponentzialaren madarikazioa saihestu zuen, aitorpenean benetan bisitatu ziren mahai-sarrerak soilik hegan eraikitzeko modu bat asmatuz.

karramarroak

Luca Cardelliren Blit leiho sistemarako meta-programa xarmangarriak pantaila hutsean ibiltzen ziren karramarro birtualak askatu zituen, leiho aktiboen ertzak gero eta gehiago ziztatuz.

Gogoeta orokor batzuk

Kanpotik ikusten ez bada ere, teoriak eta algoritmoek zeresan erabakigarria izan zuten programa hauetako gehienen sorreran: typo, dc, struct, pascal, egrep. Izan ere, teoriaren ezohiko aplikazioa da harrigarriena.

Zerrendaren ia erdiaren jatorrizko egileak β€”pascal, struct, parts, eqnβ€” emakumeak ziren, eta horrek asko gainditzen du informatikan emakumeen kuota demografikoa.

Douglas McIlroy
2020ko martxoa


Iturria: www.habr.com

Gehitu iruzkin berria