Programet më të mëdha Unix

Autori i artikullit, Douglas McIlroy, është një matematikan, inxhinier dhe programues amerikan. Ai është më i njohur për zhvillimin e tubacionit në sistemin operativ Unix, parimet e programimit të orientuar nga komponentët dhe disa programe origjinale: spell, diff, sort, join, speak, tr.

Ndonjëherë hasni në programe vërtet të mrekullueshme. Pasi gërmova në kujtesën time, përpilova një listë të gurëve të vërtetë Unix gjatë viteve. Në thelb, këto janë programe mjaft të rralla dhe jo aq të nevojshme. Por ajo që i bën të dallohen është origjinaliteti i tyre. As që mund ta imagjinoj që unë vetë më lindi ideja e ndonjërit prej tyre.

Ndani se cilat programe jeni gjithashtu kaq të impresionuar?

PDP-7 Unix

Për fillestarët, vetë sistemi PDP-7 Unix. Thjeshtësia dhe fuqia e tij më bënë të kaloj nga një mainframe i fuqishëm në një makinë të vogël. Është sistemi thelbësor hierarkik i skedarëve, guaska e veçantë dhe kontrolli i procesit në nivel përdoruesi që Multics në mainframe nuk ka qenë në gjendje të arrijë pas qindra vitesh zhvillimi. Mangësitë e Unix-it (siç është struktura e regjistrimit të sistemit të skedarëve) ishin po aq udhëzuese dhe çliruese sa risitë e tij (siç është ridrejtimi i shell I/O).

dc

Biblioteka matematikore e llogaritëses kompjuterike me saktësi të ndryshueshme të Robert Morris përdori analizën e gabimeve të anasjellta për të përcaktuar saktësinë e kërkuar në çdo hap për të arritur një saktësi rezultati të specifikuar nga përdoruesi. Në Konferencën e Inxhinierisë Softuerike të NATO-s të vitit 1968, në raportin tim mbi komponentët e softuerit, propozova procedura referimi që mund të prodhonin çdo saktësi të dëshiruar, por nuk dija si t'i zbatoja ato në praktikë. dc është ende i vetmi program që di që mund ta bëjë këtë.

gabim daktilografimi

Shkrimi i shtypit rendit fjalët në tekst sipas ngjashmërisë së tyre me pjesën tjetër të tekstit. Shkrimet e gabuara si 'hte' priren të jenë në fund të listës. Robert Morris tha me krenari se programi do të funksiononte po aq mirë për çdo gjuhë. Edhe pse gabimi i shkrimit nuk ju ndihmon të gjeni gabime fonetike, ishte një ndihmë e vërtetë për të gjithë shtypësit dhe bëri shumë mirë përpara se të vinte kontrolluesi drejtshkrimor i fjalorit shumë më pak interesant, por më i saktë.

Gabimi i shtypit është po aq i papritur nga brenda ashtu edhe nga jashtë. Algoritmi i matjes së ngjashmërisë bazohet në frekuencën e shfaqjes së trigrameve, të cilat numërohen në një grup 26×26×26. Memoria e vogël mezi kishte hapësirë ​​të mjaftueshme për numërues me një bajt, kështu që u zbatua një skemë për të kompresuar numra të mëdhenj në numërues të vegjël. Për të shmangur tejmbushjen, numëruesit u përditësuan mbi një bazë probabilistike, duke mbajtur një vlerësim të logaritmit të vlerës së numëruesit.

eqn

Me ardhjen e fototipeve, u bë e mundur, por tmerrësisht e lodhshme, të printohej shënimi klasik matematikor. Lorinda Cherry vendosi të zhvillonte një gjuhë përshkrimi të nivelit më të lartë dhe së shpejti Brian Kernigan iu bashkua asaj. Lëvizja e tyre e shkëlqyer ishte që të vendosnin traditën gojore në shkrim, kështu që eqn ishte jashtëzakonisht e lehtë për t'u mësuar. Parapërpunuesi i parë i gjuhës së shprehjeve matematikore i këtij lloji, eqn nuk është përmirësuar shumë që atëherë.

strukturoj

Brenda Baker filloi të zhvillonte konvertuesin e saj Fortan-në-Ratfor kundër këshillës së shefit të saj, mua. Mendova se kjo mund të çonte në një rirenditje të veçantë të tekstit origjinal. Do të jetë pa numra deklaratash, por përndryshe jo më i lexueshëm se kodi Fortran i mirëstrukturuar. Brenda më tregoi se kisha gabuar. Ajo zbuloi se çdo program Fortran ka një formë të strukturuar kanonike. Programuesit preferuan formën kanonike, sesa atë që ata vetë shkruanin fillimisht.

paskal

Diagnostifikimi i sintaksës në përpiluesin e krijuar nga grupi i Sue Graham në Berkeley ishte më ndihmuesi që kam parë ndonjëherë - dhe u bë automatikisht. Në një gabim sintaksor, përpiluesi ju kërkon të futni një shenjë për të vazhduar analizimin. Asnjë përpjekje për të shpjeguar se çfarë është e gabuar. Me këtë përpilues, mësova Pascal në një mbrëmje pa asnjë manual në dorë.

pjesë

Fshehur brenda modulit WWB (Writer's Workbench). parts Lorinda Cherry përcakton pjesë të të folurit për fjalë në një tekst anglisht bazuar vetëm në një fjalor të vogël, rregulla drejtshkrimore dhe gramatikore. Bazuar në këtë shënim, programi WWB shfaq tregues stilometrikë të tekstit, si përhapja e mbiemrave, fjalitë e nënrenditura dhe fjalitë komplekse. Kur Lorinda u intervistua në NBC's Today dhe foli për kontrollin inovativ të gramatikës në tekstet e WWB, ishte përmendja e parë e Unix në televizion.

egrep

Al Aho priste që zgjidhësi i tij determinist i shprehjes së rregullt të kapërcente zgjidhësin klasik jo-përcaktues të Kenit. Fatkeqësisht, ky i fundit tashmë po përfundonte një kalim përmes shprehjeve të rregullta komplekse, ndërsa egrep ndërtoi automatizimin e tij determinist. Për të fituar ende këtë garë, Al Aho e kapërceu mallkimin e rritjes eksponenciale të tabelës së gjendjes së automatit duke shpikur një mënyrë për të ndërtuar në fluturim vetëm ato hyrje në tabelë që vizitohen në të vërtetë gjatë njohjes.

gaforret

Meta-programi simpatik i Luca Cardelli për sistemin e dritareve Blit lëshoi ​​gaforre virtuale që bredhin hapësirën e zbrazët të ekranit, duke kafshuar gjithnjë e më shumë skajet e dritareve aktive.

Disa mendime të përgjithshme

Megjithëse nuk është i dukshëm nga jashtë, teoria dhe algoritmet luajtën një rol vendimtar në krijimin e shumicës së këtyre programeve: typo, dc, struct, pascal, egrep. Në fakt, është zbatimi i pazakontë i teorisë që është më i habitshëm.

Pothuajse gjysma e listës - pascal, struct, pjesë, eqn - fillimisht u shkrua nga gratë, shumë më tepër se demografia e grave në shkencat kompjuterike.

Douglas McIlroy
Mars, 2020


Burimi: www.habr.com

Shto një koment