Unix-ի ամենամեծ ծրագրերը

Հոդվածի հեղինակ Դուգլաս Մաքիլռոյը ամերիկացի մաթեմատիկոս, ինժեներ և ծրագրավորող է։ Նա առավել հայտնի է Unix օպերացիոն համակարգում խողովակաշարի մշակմամբ, բաղադրիչի վրա հիմնված ծրագրավորման սկզբունքներով և մի քանի օրիգինալ կոմունալ ծառայություններով.

Երբեմն հանդիպում ես իսկապես հրաշալի ծրագրերի։ Հիշողությունս փորփրելուց հետո ես տարիների ընթացքում կազմեցի իրական Յունիքս գոհարների ցուցակը: Հիմնականում դրանք բավականին հազվադեպ և ոչ այնքան անհրաժեշտ ծրագրեր են։ Բայց այն, ինչ նրանց առանձնացնում է, ինքնատիպությունն է: Ես նույնիսկ չեմ կարող պատկերացնել, որ ես ինքս եմ մտածել դրանցից որևէ մեկի մասին:

Կիսվեք, թե ո՞ր ծրագրերն եք դուք նույնպես այդքան տպավորված:

PDP-7 Unix

Սկսնակների համար PDP-7 Unix համակարգը ինքնին: Դրա պարզությունն ու հզորությունը ստիպեցին ինձ հզոր հիմնական համակարգից անցնել փոքրիկ մեքենայի: Դա էական հիերարխիկ ֆայլային համակարգն է, առանձին կեղևը և օգտատիրոջ մակարդակի գործընթացի կառավարումը, որին Multics-ը հիմնական համակարգչի վրա չի կարողացել հասնել հարյուրավոր մարդ տարիներ շարունակ զարգացումից հետո: Unix-ի թերությունները (օրինակ՝ ֆայլային համակարգի գրառումների կառուցվածքը) նույնքան ուսանելի և ազատագրող էին, որքան նրա նորարարությունները (օրինակ՝ shell I/O վերահղումը):

dc

Ռոբերտ Մորիսի Variable Precision Desktop Calculator Math Library-ն օգտագործել է հակադարձ սխալի վերլուծություն՝ որոշելու համար անհրաժեշտ ճշգրտությունը յուրաքանչյուր քայլում՝ օգտվողի կողմից սահմանված արդյունքի ճշգրտության հասնելու համար: 1968թ.-ի ՆԱՏՕ-ի ծրագրային ճարտարագիտության կոնֆերանսում, ծրագրային բաղադրիչների վերաբերյալ իմ զեկույցում, ես առաջարկեցի հղման ընթացակարգեր, որոնք կարող էին ապահովել ցանկացած ցանկալի ճշգրտություն, բայց ես չգիտեի, թե ինչպես դրանք կիրառել գործնականում: dc-ն դեռ միակ ծրագիրն է, որը ես գիտեմ, որը կարող է դա անել:

typo

Տառասխալը դասավորում է բառերը տեքստում՝ ըստ տեքստի մնացած մասի նմանության: «hte»-ի նման տառասխալները սովորաբար հայտնվում են ցուցակի վերջում: Ռոբերտ Մորիսը հպարտությամբ ասաց, որ ծրագիրը հավասարապես լավ կաշխատի ցանկացած լեզվի համար: Թեև տառասխալը չի ​​օգնում ձեզ գտնել հնչյունական սխալներ, այն իսկական պարգև էր բոլոր գրատիպերի համար, և շատ լավ բան արեց նախքան շատ ավելի քիչ հետաքրքիր, բայց ավելի ճշգրիտ բառարանի ուղղագրության ստուգիչը:

Տառասխալը նույնքան անսպասելի է ներսից, ինչպես արտաքինից: Նմանության չափման ալգորիթմը հիմնված է եռագրերի առաջացման հաճախականության վրա, որոնք հաշվվում են 26×26×26 զանգվածում։ Փոքրիկ հիշողությունը հազիվ բավարար տարածություն ուներ մեկ բայթ հաշվիչների համար, ուստի իրականացվեց սխեման՝ մեծ թվերը փոքր հաշվիչների մեջ սեղմելու համար: Հորդացումից խուսափելու համար հաշվիչները թարմացվել են հավանականության հիմունքներով՝ պահպանելով հաշվիչի արժեքի լոգարիթմի գնահատումը:

eqn

Ֆոտոտիպագրման գալուստով հնարավոր, բայց սարսափելի հոգնեցուցիչ դարձավ դասական մաթեմատիկական նշումներ տպելը: Լորինդա Չերին որոշեց մշակել ավելի բարձր մակարդակի նկարագրության լեզու, և շուտով նրան միացավ Բրայան Քերնիգանը։ Նրանց փայլուն քայլը բանավոր ավանդույթը գրավոր ներդնելն էր, ուստի eqn-ը զարմանալիորեն հեշտ էր սովորել: Իր տեսակի մեջ առաջին մաթեմատիկական արտահայտությունների լեզվի նախապրոցեսորը՝ eqn-ը, դրանից հետո շատ չի բարելավվել:

կառուցվածքային

Բրենդա Բեյքերը սկսեց մշակել իր Fortan-to-Ratfor փոխարկիչը՝ հակառակ իր ղեկավարի՝ իմ խորհրդին: Ես մտածեցի, որ դա կարող է հանգեցնել բնօրինակ տեքստի հատուկ վերադասավորման։ Այն զերծ կլինի հայտարարությունների համարներից, բայց հակառակ դեպքում ոչ ավելի ընթեռնելի, քան լավ կառուցվածքավորված Fortran կոդը: Բրենդան ապացուցեց, որ ես սխալվում եմ: Նա հայտնաբերեց, որ Fortran-ի յուրաքանչյուր ծրագիր ունի կանոնականորեն կառուցված ձև: Ծրագրավորողները նախընտրում էին կանոնական ձևը, այլ ոչ թե այն, ինչ իրենք են գրել սկզբում:

Պասկալ

Բերկլիում Սյու Գրեհեմի խմբի կողմից ստեղծված կոմպիլյատորում շարահյուսական ախտորոշումն ամենաօգտակարն էր, որը ես երբևէ տեսել եմ, և դա արվում էր ավտոմատ կերպով: Շարահյուսական սխալի դեպքում կոմպիլյատորը ձեզ հուշում է տեղադրել նշան՝ վերլուծությունը շարունակելու համար: Ոչ մի փորձ բացատրելու, թե ինչն է սխալ: Այս կոմպիլյատորով ես սովորեցի Pascal-ը մեկ երեկո առանց որևէ ձեռնարկի ձեռքի տակ:

մասեր

Թաքնված է WWB (Writer's Workbench) մոդուլի ներսում parts Լորինդա Չերրին անգլերեն տեքստի բառերի համար որոշում է խոսքի մասեր՝ հիմնվելով միայն փոքր բառարանի, ուղղագրական և քերականական կանոնների վրա: Այս անոտացիայի հիման վրա WWB ծրագիրը ցուցադրում է տեքստի ոճաչափական ցուցիչներ, ինչպիսիք են ածականների, ստորադասական նախադասությունների և բարդ նախադասությունների տարածվածությունը: Երբ Լորինդան NBC's Today հեռուստաալիքով հարցազրույց է տվել և խոսել WWB-ի տեքստերում քերականության նորարարական ստուգման մասին, դա Unix-ի առաջին հիշատակումն էր հեռուստատեսությամբ:

egrep

Ալ Ահոն ակնկալում էր, որ իր որոշիչ կանոնավոր արտահայտությունների լուծիչը կգերազանցի Քենի դասական ոչ դետերմինիստական ​​լուծիչը: Ցավոք, վերջինս արդեն ավարտում էր անցում բարդ կանոնավոր արտահայտություններով, մինչդեռ egrep կառուցեց իր սեփական դետերմինիստական ​​ավտոմատացումը: Այս մրցավազքում դեռևս հաղթելու համար Ալ Ահոն շրջանցեց ավտոմատների վիճակի աղյուսակի էքսպոնենցիալ աճի անեծքը՝ հորինելով ճանապարհ՝ աղյուսակում միայն այն գրառումները կառուցելու համար, որոնք իրականում այցելում են ճանաչման ժամանակ:

ծովախեցգետիններ

Luca Cardelli-ի հմայիչ մետա-ծրագիրը Blit windowing համակարգի համար թողարկեց վիրտուալ ծովախեցգետիններ, որոնք թափառում էին էկրանի դատարկ տարածության մեջ՝ ավելի ու ավելի կծելով ակտիվ պատուհանների եզրերը:

Որոշ ընդհանուր մտքեր

Թեև այն դրսից տեսանելի չէ, տեսությունն ու ալգորիթմները որոշիչ դեր են խաղացել այս ծրագրերի մեծ մասի ստեղծման գործում՝ typo, dc, struct, pascal, egrep։ Իրականում ամենազարմանալին տեսության անսովոր կիրառումն է։

Ցուցակի գրեթե կեսը՝ pascal, struct, parts, eqn, ի սկզբանե գրվել է կանանց կողմից, ինչը զգալիորեն գերազանցում է համակարգչային գիտության մեջ կանանց ժողովրդագրությանը:

Դուգլաս Մաքիլրոյ
Մարտ, 2020


Source: www.habr.com

Добавить комментарий