Programet më të mrekullueshme Unix

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

Ndonjëherë ju takojnë programe vërtet të jashtëzakonshme. Pas një kërkimi në kujtesë, përgatita një listë të gurëve të çmuar të vërtetë të Unix gjatë gjithë viteve. Kryesisht, këto janë programa mjaft të rrallë dhe jo kaq të nevojshëm. Por ajo që i veçon është origjinaliteti. Nuk mund ta imagjinoj se si mund të kishte mënduar për ndonjë prej tyre.

Ndani se cilat programe ju kanë impresionuar gjithashtu aq shumë?

PDP-7 Unix

Në fillim, sistemi PDP-7 Unix vetë. Thjeshtësia dhe fuqia e saj më detyruan të kaloj nga një superkompjuter në një makinë të vogël. Këtu është përshkrimi më i përkryer i sistemit hierarkik të skedarëve, një shell e veçantë dhe menaxhimi i proceseve në nivelin e përdoruesit, që Multics në superkompjuterë nuk arriti ta realizonte pas qindra viteve të zhvillimit. Ndërprerjet e Unix (për shembull, struktura e regjistrave në sistemin e skedarëve) ishin po aq mësuese dhe çliruese sa novacionet e saj (për shembull, redirektimi i hyrjes/daljes në shell).

dc

Biblioteka matematikore për kalkulatorët me saktësi të ndryshueshme e Robert Morris përdorte analizën e gabimeve për të përcaktuar saktësinë e nevojshme në çdo hap për të arritur saktësinë e kërkuar nga përdoruesi. Në konferencën NATO mbi inxhinierinë e softuerit të vitit 1968, unë propozoja procedura referuese që mund të ofronin rezultate të çdo saktësie të dëshiruar, por nuk dija si t'i implementoja në praktikë. dc vazhdon të jetë një program i vetmi që unë di të jetë në gjendje të bëjë diçka të tillë.

typo

Typo rendit fjalĂ«t nĂ« tekst sipas ngjashmĂ«risĂ« sĂ« tyre me tekstin tjetĂ«r. Gabime tĂ« tilla si ‘hte’ kanĂ« tendencĂ« tĂ« vendosen nĂ« fund tĂ« listĂ«s. Robert Morris me krenari tha se programa do tĂ« funksiononte po ashtu mirĂ« pĂ«r çdo gjuhĂ«. MegjithatĂ«, typo nuk ndihmon nĂ« gjetjen e gabimeve fonetike, por u bĂ« njĂ« zgjidhje e shkĂ«lqyer pĂ«r tĂ« gjithĂ« ata qĂ« shkruajnĂ« tekst, dhe solli shumĂ« dobi para se tĂ« shfaqej njĂ« kontroll gramatikor mĂ« pak interesant, por mĂ« i saktĂ«.

Typo Ă«shtĂ« po aq e papritur brenda sa Ă«shtĂ« jashtĂ«. Algoritmi qĂ« mat ngjashmĂ«rinĂ« bazohet nĂ« frekuencĂ«n e shfaqjeve tĂ« trigramĂ«ve, qĂ« llogariten nĂ« njĂ« matricĂ« 26×26×26. NĂ« njĂ« memorie tĂ« vogĂ«l, kishte pak hapĂ«sirĂ« pĂ«r numerat njĂ«byte, kĂ«shtu qĂ« u implementua njĂ« skemĂ« pĂ«r kompresimin e numrave tĂ« mĂ«dhenj nĂ« numra tĂ« vegjĂ«l. PĂ«r tĂ« shmangur tejkalimin, numĂ«ruesit u pĂ«rditĂ«suan nĂ« njĂ« bazĂ« probabiliteti, duke mbajtur njĂ« vlerĂ«sim tĂ« logaritmit tĂ« vlerĂ«s sĂ« numĂ«ruesit.

eqn

Me shfaqjen e fotonabave, ishte e mundur, por jashtëzakonisht e lodhshme, të printohej notation e matematikës klasike. Lorinda Cherry vendosi të zhvillonte një gjuhë përshkrimi me një nivel më të lartë, dhe shpejt iu bashkua Brian Kernighan. Hapi i tyre brilant ishte të shpreheshin traditat gojore në formën e shkruar, kështu që eqn doli të ishte jashtëzakonisht e lehtë për t'u mësuar. Një preprocessori i parë i gjuhës përshkrimore të shprehjeve matematikore, eqn që nga atëherë është përmirësuar shumë pak.

struct

Brenda projektit WWB (Writer’s Workbench) Brenda Baker nisa zhvillimin e konvertuesit tĂ« saj Fortan-to-Ratfor pavarĂ«sisht kĂ«shillĂ«s sĂ« shefit tĂ« saj — mua. Mendova se kjo mund tĂ« çonte nĂ« njĂ« riorganizim tĂ« veçantĂ« tĂ« kodit burimor. Ai do tĂ« ishte i lirĂ« nga numrat e operatorĂ«ve, por pĂ«rndryshe jo mĂ« i lexueshĂ«m se kodi i strukturuar mirĂ« Fortran. Brenda e provodhi se isha nĂ« gabim. Ajo gjeti se çdo program Fortran kishte njĂ« formĂ« kanonike tĂ« strukturuar.

pascal

Diagnostikimi i sintaksĂ«s nĂ« kompajlerin e krijuar nga grupi i Sue Graham nĂ« Berkeley ishte mĂ« i dobishmi nga tĂ« gjithĂ« qĂ« kam parĂ« ndonjĂ«herĂ« — dhe ndodhi automatikisht. Kur ndodhte njĂ« gabim sintaksor, kompajleri sugjeronte tĂ« shtonte njĂ« lexemĂ« pĂ«r tĂ« vazhduar analizimin sintaksor. AsnjĂ« pĂ«rpjekje pĂ«r tĂ« shpjeguar se çfarĂ« nuk shkonte. Me kĂ«tĂ« kompajler, e mĂ«sova Pascal pĂ«r njĂ« mbrĂ«mje, pa pasur asnjĂ« manual nĂ« duar.

parts

Moduli i fshehur brenda paketĂ«s WWB (Writer’s Workbench) parts Lorinda Cherry pĂ«rcakton pjesĂ«t e fjalĂ«sh pĂ«r fjalĂ«t nĂ« tekstin nĂ« anglisht duke u bazuar vetĂ«m nĂ« njĂ« fjalor tĂ« vogĂ«l, rregullat e pĂ«rshtatshmĂ«risĂ« dhe gramatikĂ«s. Nga kjo annotim, programi WWB prodhon tregues stilometrikĂ« tĂ« tekstit, siç janĂ« domosdoshmĂ«ria e pĂ«rbĂ«rĂ«sve, fjalitĂ« nĂ«nordhuese dhe fjalitĂ« e ndĂ«rlikuara. Kur Lorinda i dha njĂ« intervistĂ« nĂ« programin televiziv Today nĂ« NBC dhe foli pĂ«r verifikimin inovativ tĂ« gramatikĂ«s nĂ« tekstet e WWB, kjo ishte hera e parĂ« qĂ« Unix pĂ«rmendej nĂ« televizion.

egrep

Al Aho shpresonte që njohësi i tij deterministik i shprehjeve të rregullta do ta kalonte njohësin klasik të Kenit. Fatkeqësisht, ai i fundit përfundonte tashmë kalimin përmes shprehjeve komplekse të rregullave, ndërsa egrep ndërtonte automatikën e tij deterministike. Për të fituar në këtë garë, Al Aho kapërceu mallkimin e rritjes eksponenciale të tabelës së gjendjeve të automait, duke shpikur një mënyrë për të ndërtuar në fluks vetëm ato regjistrime të tabelës që vërtet vizitohen gjatë njohjes.

crabs

Meta-programi mahnitës i Luca Cardelli për sistemin e dritareve Blit prodhoi krab virtual që endeshin në hapësirën bosh të ekranit, duke kafshuar gjithnjë e më shumë skajet e dritareve aktive.

Disa mendime të zakonshme

Ndërsa kjo nuk është e dukshme nga jashtë, teoria dhe algoritmet kanë luajtur një rol vendimtar në krijimin e shumicës së këtyre programeve: typo, dc, struct, pascal, egrep. Në fakt, ajo që surprizon më shumë është përdorimi i pazakontë i teorisë.

AutorĂ«t origjinalĂ« tĂ« gati gjysmĂ« liste — pascal, struct, parts, eqn — ishin gra, qĂ« e kalon shumĂ« pjesĂ«marrjen demografike tĂ« grave nĂ« fushĂ«n e shkencave kompjuterike.

Douglas McIlroy
Mars, 2020


Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster