Ալան Քեյը, OOP-ի ստեղծող, զարգացման, Lisp-ի և OOP-ի մասին

Ալան Քեյը, OOP-ի ստեղծող, զարգացման, Lisp-ի և OOP-ի մասին

Եթե ​​երբեք չեք լսել Ալան Քեյի մասին, ապա գոնե լսել եք նրա հայտնի մեջբերումները։ Օրինակ, այս մեջբերումը 1971 թ.

Ապագան գուշակելու լավագույն միջոցը այն հորինելն է։
Ապագան գուշակելու լավագույն միջոցը այն հորինելն է։

Ալանը շատ գունեղ կարիերա ունի համակարգչային գիտության ոլորտում: Նա ստացել է Կիոտոյի մրցանակ и Թյուրինգի մրցանակ օբյեկտ-կողմնորոշված ​​ծրագրավորման պարադիգմի վրա կատարած աշխատանքի համար: Նա անհատական ​​համակարգիչների և գրաֆիկական ինտերֆեյսների ոլորտում առաջամարտիկներից էր, զարգացավ Փոքր խոսակցություն բոլոր ժամանակների առաջին ամենաազդեցիկ ծրագրավորման լեզուներից մեկն է:

Մեր մեջ Hexlete, հատկապես մեջ զրուցել, անընդհատ բարձրացվում է «ինչ է OOP»-ը և «Ի՞նչ նկատի ուներ Ալան Քեյը» հարցը։ Այս գրառումը պարունակում է հետաքրքիր մեջբերումներ Ալանից ժամանակակից զարգացման վիճակի, OOP-ի և Lisp լեզվի մասին:

Ծրագրային ապահովման մշակման մասին

Ալան Քեյը կարծում է, որ համակարգչային հեղափոխությունը դեռ առջևում է (Իրական համակարգչային հեղափոխությունը դեռ տեղի չի ունեցել), և ծրագրային ապահովման մշակումը զարգանում է Մուրի օրենքի հակադարձ համեմատությամբ. ապարատային տեխնիկան ամեն տարի բարելավվում է, բայց ծրագրային ապահովումն անհարկի փքվում է.

խնդիրը թույլ, վատ մասշտաբային գաղափարներն ու գործիքներն են, ծուլությունը, գիտելիքների պակասը և այլն։

Լավ է նկարագրում այս իրավիճակը կարճ կատակ:

Այն, ինչ տալիս է Էնդին, Բիլը վերցնում է
Էնդին տվեց, Բիլը վերցրեց

Էնդի Գրովը` Intel-ի գործադիր տնօրենը, և Բիլ Գեյթսը, այնուհետև Microsoft-ի գործադիր տնօրենը:

Զարգացման ներկա վիճակի բարելավումը հետազոտական ​​նախագծի նպատակն էր ՔԱՅԼԵՐ դեպի ծրագրավորման վերահայտնագործում (pdf). Նպատակն է հասնել «Մուրի օրենքին» արտահայտչականության մեջ՝ «պահանջվող ծածկագրի քանակը նվազեցնելով 100, 1000, 10000 անգամ կամ ավելի»:

Իր աչքաբաց զեկույցում Ծրագրավորում և մասշտաբավորում (տեսանյութ) Այս թեման քննարկվում է ավելի մանրամասն: Ըստ Ալանի, ծրագրային ապահովման ճարտարագիտությունը կանգ է առել և դառնում է մոռացված գիտություն, որը չի կարող համընթաց քայլել ապարատային և այլ գիտությունների ու ճարտարագիտական ​​առարկաների հետ: Խոշոր նախագծերը դարձել են ծածկագրերի աղբանոց և հասել են մի կետի, որտեղ ոչ ոք անկարող է հասկանալ MS Vista-ի կամ MS Word-ի 100 միլիոն տող: Բայց իրականում նման նախագծերում պետք է լինի ավելի քիչ կոդ:

Ալանը հաշվի է առնում ինտերնետը, TCP/IP արձանագրությունները, LISP թարգմանիչները, Nile (Math DSL վեկտորային գրաֆիկայի համար) և OMeta (OO PEG) (PDF) էլեգանտ ծրագրաշարի օրինակներ նվազագույն կոդով:

Նա ինտերնետը (TCP/IP) անվանում է այն սակավաթիվ լայնածավալ ծրագրային նախագծերից մեկը, որը ճիշտ է նախագծվել, և դրա բարդության մակարդակը հավասարակշռված է բարդության մակարդակի հետ (բարդություն ընդդեմ բարդության): Ավելի քիչ, քան 20 տող կոդով, նախագիծը գործում է որպես կենդանի, դինամիկ համակարգ, որն ունակ է աջակցելու միլիարդավոր հանգույցներին, և երբեք անցանց չի եղել իր սկզբնական մեկնարկից ի վեր՝ 1969 թվականի սեպտեմբերին: Մենք պարզապես դադարեցինք համացանցը համարել մարդկանց կողմից ստեղծված սովորական ծրագրային նախագիծ.

Համացանցն այնքան լավ է զարգացած, որ շատերն այն վերաբերվում են որպես բնական ռեսուրսի, ինչպես Խաղաղ օվկիանոսը, այլ ոչ թե մարդկային աշխատանքի արդյունք: Ե՞րբ է վերջին անգամ տեսել նման կայուն, հստակ, առանց սխալների տեխնոլոգիա: Համեմատության համար ասեմ, որ համացանցը անհեթեթություն է: Վեբը ստեղծվել է սիրողականների կողմից:

Օբյեկտ-կողմնորոշված ​​ծրագրավորման մասին

Առաջին բանը, որ ինձ հետաքրքրեց, նրանն էր օրիգինալ OOP տեսլականը. Նրա փորձը մանրէաբանության մեջ կարևոր դեր է խաղացել.

Ես պատկերացնում էի օբյեկտները որպես կենսաբանական բջիջների նման մի բան և/կամ ցանցի առանձին համակարգիչներ, որոնք կարող էին հաղորդակցվել միայն հաղորդագրությունների միջոցով:

և մաթեմատիկայի փորձ.

Մաթեմատիկայի իմ փորձառությունն ինձ ստիպեց հասկանալ, որ յուրաքանչյուր առարկա կարող է ունենալ մի քանի հանրահաշիվ, դրանք կարելի է միավորել ընտանիքների մեջ, և դա կարող է շատ օգտակար լինել:

LISPA-ի ուշ կապակցման և հզոր մետա-հատկանիշների գաղափարներ.

Երկրորդ փուլը LISPA-ի ըմբռնումն է և այդ ըմբռնման օգտագործումը՝ ավելի հեշտ, փոքր, ավելի հզոր կառույցներ ստեղծելու և հետագայում պարտադիր կառուցվածքներ ստեղծելու համար:

Եվ շուտով Ալանը սկսեց աջակցել այն գաղափարին, որ դինամիկ լեզուներն են ծրագրային ապահովման զարգացման ապագան (pdf). Մասնավորապես, նրա համար կարևոր է փոփոխության հեշտությունը.

Ուշ կապը թույլ է տալիս գաղափարները, որոնք ավելի ուշ հայտնվեցին զարգացման գործընթացում, ավելի քիչ ջանքերով ներառվեն նախագծում (համեմատած ավելի վաղ կապակցված համակարգերի հետ, ինչպիսիք են C, C++, Java և այլն):

Եվ փոփոխությունների և ավելի արագ կրկնությունների ներուժը.

Հիմնական գաղափարներից մեկն այն է, որ համակարգը պետք է շարունակի աշխատել թեստավորման ընթացքում, հատկապես երբ փոփոխություններ են կատարվում: Նույնիսկ հիմնական փոփոխությունները պետք է լինեն աստիճանական և տևեն ոչ ավելի, քան մեկ վայրկյան:

որը բացակայում է ստատիկ տպագրված լեզուներ:

Եթե ​​դուք օգտագործում եք վաղ պարտադիր լեզուներ, ինչպես դա անում են մարդկանց մեծամասնությունը, ապա դուք փակվում եք այն ամենի մեջ, ինչ արդեն գրել եք: Այն այլեւս հնարավոր չի լինի հեշտությամբ վերաձեւակերպել։

Զարմանալիորեն, նրա մտքերը OOP-ի մասին սահմանափակվում էին այսքանով.

OOP-ն ինձ համար հաղորդագրություններ է, տեղային պահում և պաշտպանություն, պետական ​​թաքցնում և ամեն ինչի ուշ կապում: Դա կարելի է անել Smalltalk-ում և LISP-ում:

Եվ ոչինչ ժառանգության մասին: Սա OOP-ը չէ որը մենք գիտենք այսօր:

Կցանկանայի, որ ես վաղուց օգտագործած լինեի «օբյեկտ» տերմինը այս թեմայի համար, քանի որ այն ստիպում է շատերին կենտրոնանալ փոքրագույն գաղափարների վրա:

Մեծ գաղափարը, որ ժամանակակից ստատիկ տպագրված OO լեզուները չունեն.

Մեծ գաղափարը «մեսիջներն» են

Նա հավատում է հաղորդագրությունների, չամրացված միացման և մոդուլի փոխազդեցությունների վրա կենտրոնանալուն, այլ ոչ թե օբյեկտի ներքինին.

Լավ մասշտաբային համակարգեր ստեղծելու բանալին մոդուլների միջև հաղորդակցման մեխանիզմների մշակումն է և դրանց ներքին հատկություններն ու վարքագիծը չմշակելը:

Նրան թվում են ստատիկ տպագրված լեզուներ թերի:

Ես դեմ չեմ տեսակներին, բայց չգիտեմ որևէ տեսակի համակարգ, որը ցավ չպատճառի։ Այսպիսով, ես դեռ սիրում եմ դինամիկ մուտքագրում:

Որոշ հանրաճանաչ լեզուներ այսօր օգտագործում են Smalltalk-ի հաղորդագրության փոխանցման գաղափարներ, ուշ կապում և Չի ՀասկանումառաջՆշում в Նպատակը-Cմեթոդ_բացակայում է в սուտակ и noSuchMethod Google-ում Նետ.

Ոչնչացրեք ամեն ինչ և ստեղծեք ավելի լավ բան

Ալանը համակարգչային գիտության զարգացման վերաբերյալ հետաքրքիր տեսություն ունի.

Ինձ թվում է, որ կա համակարգչային գիտության միայն մեկ տեսակ, և այդ գիտությունը նման է կամուրջներ կառուցելուն։ Ինչ-որ մեկը կամուրջներ է կառուցում, իսկ ինչ-որ մեկը քանդում է դրանք և ստեղծում նոր տեսություններ: Եվ մենք պետք է շարունակենք կամուրջներ կառուցել:

LISP-ի մասին

Ալան Քեյը հավատում է Լիսպին

բոլոր ժամանակների լավագույն ծրագրավորման լեզուն

Եվ որ համակարգչային գիտության յուրաքանչյուր շրջանավարտ պետք է ուսումնասիրի այն.

Մարդկանց մեծ մասը, ովքեր հետամուտ են լինում CS-ում, չեն հասկանում Lisp-ի կարևորությունը: Lisp-ը համակարգչային գիտության ամենակարեւոր գաղափարն է:

Ճիշտ մթնոլորտի ու համատեքստի մասին

Նա հաճախ է հիշում յուրօրինակ մթնոլորտը Xerox PARK и ԱՐՓԱ, որտեղ «տեսլականն ավելի կարևոր է, քան նպատակները» և «մարդկանց ֆինանսավորելը, ոչ թե նախագծերը»։

Տեսակետը արժե 80 IQ միավոր:

Ալան Քեյն ասում է.

ARPA/PARC պատմությունը ցույց է տալիս, թե ինչպես տեսլականի, համեստ ֆինանսավորման, ճիշտ համատեքստի և գործընթացի համադրությունը կարող է կախարդական կերպով ծնել նոր տեխնոլոգիաներ, որոնք ոչ միայն ազդում են քաղաքակրթության վրա, այլև հսկայական արժեք են ստեղծում հասարակության համար:

Եվ դա ճիշտ է։ Նայեք PARC-ի գյուտերի տպավորիչ ցանկին, որոնցից շատերը շատ կարևոր դեր են խաղացել մեր աշխարհի զարգացման գործում։ Օրինակ:

  • Լազերային տպիչներ
  • Օբյեկտ-կողմնորոշված ​​ծրագրավորում / Smalltalk
  • Անհատական ​​համակարգիչներ
  • Ethernet / բաշխված հաշվարկ
  • GUI / համակարգչային մկնիկ / WYSIWYG

Եվ ԱՐՓԱ ստեղծեցինք ԱՐՓԱՆԵՏ, որը դարձավ համացանցի նախահայրը:

PS Ալան Քեյը պատասխանում է Hacker News համայնքի հարցերին.

Source: www.habr.com

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