Алан Кей, OOP жасаушы, даму, Lisp және OOP туралы

Алан Кей, OOP жасаушы, даму, Lisp және OOP туралы

Егер сіз Алан Кэй туралы ешқашан естімеген болсаңыз, кем дегенде оның әйгілі дәйексөздерін естіген боларсыз. Мысалы, 1971 жылғы мына дәйексөз:

Болашақты болжаудың ең жақсы жолы - оны ойлап табу.
Болашақты болжаудың ең жақсы жолы - оны ойлап табу.

Аланның информатика саласында өте жарқын мансабы бар. Ол алды Киото сыйлығы и Тьюринг сыйлығы объектіге бағытталған бағдарламалау парадигмасы бойынша жұмысы үшін. Ол дербес компьютерлер мен графикалық интерфейстер саласындағы пионерлердің бірі болды, ол дамытты Шағын әңгіме барлық уақыттағы ең ықпалды бағдарламалау тілдерінің бірі болып табылады.

Біздің Hexlete, әсіресе жылы чатқа, «OOP дегеніміз не» және «Алан Кэй шын мәнінде не айтқысы келді» деген сұрақтар үнемі көтеріледі. Бұл жазбада Аланның заманауи даму жағдайы, OOP және Lisp тілі туралы қызықты дәйексөздері бар.

Бағдарламалық қамтамасыз етуді әзірлеу туралы

Алан Кей компьютерлік революция әлі алда деп есептейді (Нағыз компьютерлік революция әлі болған жоқ) және бағдарламалық жасақтаманы әзірлеу Мур заңына кері пропорционалды түрде дамиды: аппараттық қамтамасыз ету жыл сайын жақсарады, бірақ бағдарламалық қамтамасыз ету қажетсіз ұлғаяды:

мәселе әлсіз, нашар масштабталатын идеялар мен құралдар, жалқаулық, білімнің жетіспеушілігі және т.б.

Бұл жағдайды жақсы сипаттайды қысқа әзіл:

Энди не берсе, Билл алып кетеді
Энди берді, Билл алды

Энди Гроув, Intel компаниясының бас директоры және Microsoft корпорациясының сол кездегі бас директоры Билл Гейтс.

Қазіргі даму жағдайын жақсарту ғылыми жобаның мақсаты болды Бағдарламалауды қайта құру жолындағы ҚАДАМДАР (pdf). Мақсат – «қажетті кодтың көлемін 100, 1000, 10000 XNUMX немесе одан да көп есе азайту» арқылы экспрессивтілікте «Мур заңына» қол жеткізу.

Оның көзін ашатын баяндамасында Бағдарламалау және масштабтау (бейне) Бұл тақырып толығырақ талқыланады. Аланның айтуынша, бағдарламалық қамтамасыз ету инженериясы тоқтап қалды және аппараттық және басқа ғылымдар мен инженерлік пәндермен ілесе алмайтын ұмытылған ғылымға айналуда. Ірі жобалар кодтық қоқыстарға айналды және бұл деңгейге жетті ешкім жоқ MS Vista немесе MS Word кодының 100 миллион жолын түсіну мүмкін емес. Бірақ шын мәнінде, мұндай жобаларда аз кодтың тәртібі болуы керек.

Алан Интернетті, TCP/IP протоколдарын, LISP интерпретаторларын, Nile (векторлық графикаға арналған математикалық DSL) және OMeta (OO PEG) (PDF) минималды коды бар талғампаз бағдарламалық жасақтаманың мысалдары.

Ол Интернетті (TCP/IP) дұрыс құрастырылған бірнеше ауқымды бағдарламалық жасақтама жобаларының бірі деп атайды және оның күрделілік деңгейі күрделілік деңгейімен (күрделілікке қарсы күрделілік) тепе-теңдікте. 20 1969-нан аз код жолымен жоба миллиардтаған түйіндерді қолдауға қабілетті тірі, динамикалық жүйе ретінде жұмыс істейді және XNUMX жылдың қыркүйегінде алғаш рет іске қосылғаннан бері ешқашан желіден шықпаған. Біз Интернетті адамдар жасаған кәдімгі бағдарламалық жасақтама жобасы деп санауды тоқтаттық:

Интернеттің дамығаны соншалық, көптеген адамдар оған адам еңбегінің өнімі емес, Тынық мұхиты сияқты табиғи ресурс ретінде қарайды. Біз мұндай тұрақты, анық, қатесіз технологияны соңғы рет қашан көрдік? Салыстырмалы түрде айтсақ, Интернет нонсенс. Ғаламторды әуесқойлар жасаған.

Объектіге бағытталған программалау туралы

Мені бірінші қызықтырғаны – ол түпнұсқа OOP көрінісі. Оның микробиологиядағы тәжірибесі маңызды рөл атқарды:

Мен объектілерді тек хабарламалар арқылы байланыса алатын биологиялық жасушалар және/немесе желідегі жеке компьютерлер сияқты деп ойладым.

және математикадағы тәжірибесі:

Математикадағы тәжірибем маған әр нысанда бірнеше алгебра болуы мүмкін екенін, оларды отбасыларға біріктіруге болатынын және бұл өте пайдалы болуы мүмкін екенін түсіндім.

LISSa-ның кеш қосылуы және күшті мета-мүмкіндіктері туралы идеялар:

Екінші кезең LISPаны түсіну және бұл түсінікті жеңіл, кішірек, күшті құрылымдарды жасау және кейінірек байланыстыру үшін пайдалану.

Көп ұзамай Алан динамикалық тілдер деген идеяны қолдай бастады бағдарламалық қамтамасыз етуді дамыту болашағы (pdf). Атап айтқанда, ол үшін өзгертудің қарапайымдылығы маңызды:

Кеш байлау әзірлеу процесінде кейінірек пайда болған идеяларды жобаға аз күш жұмсай отырып енгізуге мүмкіндік береді (C, C++, Java және т.б. бұрынғы байланыстырылған жүйелермен салыстырғанда).

Және жылдам және жылдам итерациядағы өзгерістердің әлеуеті:

Негізгі идеялардың бірі - жүйе тестілеу кезінде, әсіресе өзгертулер енгізілген кезде жұмысын жалғастыруы керек. Тіпті негізгі өзгерістер бірте-бірте болуы керек және бір секундтан аспауы керек.

ол жетіспейді статикалық түрде терілген тілдер:

Егер сіз көптеген адамдар сияқты ертерек байланыстыратын тілдерді қолдансаңыз, сіз бұрын жазған нәрсеңізге өзіңізді құлыптайсыз. Енді оны оңай қайта құру мүмкін болмайды.

Бір қызығы, оның OOP туралы ойлары мұнымен шектелді:

Мен үшін OOP - бұл хабарлар, жергілікті ұстау және қорғау, күйді жасыру және барлығын кеш байлау. Мұны Smalltalk және LISP бағдарламаларында жасауға болады.

Ал мұрагерлік туралы ештеңе жоқ. Бұл OOP емес оны біз бүгін білеміз:

Мен бұл тақырып үшін «нысан» терминін бұрыннан пайдаланғанымды қалаймын, өйткені бұл көптеген адамдардың идеялардың аздығына назар аударуын тудырады.

Қазіргі статикалық терілген OO тілдерінде жоқ деген үлкен идея:

Үлкен идея - «хабарламалар»

Ол нысанның ішкі бөліктеріне емес, хабарламаларға, бос байланыстарға және модульдердің өзара әрекеттесулеріне назар аударуға сенеді:

Жақсы масштабталатын жүйелерді құрудың кілті модульдер арасындағы байланыс механизмдерін өңдеу және олардың ішкі қасиеттері мен мінез-құлқын өңдемеу болып табылады.

Оған статикалық түрде терілген тілдер көрінеді ақаулы:

Мен типтерге қарсы емеспін, бірақ ауруды тудырмайтын қандай да бір типті жүйені білмеймін. Сондықтан мен әлі де динамикалық теруді ұнатамын.

Кейбір танымал тілдер бүгінгі күні Smalltalk хабарламаларын идеяларды беруді, кеш байлауды және қолданады Түсінбейдіалға шақыру в Мақсаты-Cәдіс_жоқ в лағыл и noSuchMethod Google-де Dart.

Барлығын жойып, жақсырақ нәрсені жасаңыз

Аланның информатиканың дамуы туралы қызықты теориясы бар:

Менің ойымша, информатиканың бір ғана түрі бар, ғылым көпір салу сияқты. Біреу көпір салады, ал біреу бұзып, жаңа теориялар жасайды. Біз көпір салуды жалғастыруымыз керек.

LISP туралы

Алан Кей Лиспке сенеді

барлық уақыттағы ең жақсы бағдарламалау тілі

Әр информатика түлегі оны оқуы керек:

CS дәрежесін іздейтін адамдардың көпшілігі Лисптің маңыздылығын түсінбейді. Lisp - информатикадағы ең маңызды идея.

Дұрыс атмосфера мен контекст туралы

Ол ерекше атмосфераны жиі еске алады Xerox PARK и ARPA, мұнда «мақсаттардан гөрі көру маңызды» және «жобаларды емес, адамдарды қаржыландыру».

Көзқарас 80 IQ ұпайына тең.

Алан Кей былай дейді:

ARPA/PARC оқиғасы көзқарас, қарапайым қаржыландыру, дұрыс контекст пен процестің үйлесімі өркениетке әсер етіп қана қоймай, қоғам үшін орасан зор құндылық тудыратын жаңа технологияларды сиқырлы түрде тудыратынын көрсетеді.

Бұл да шындық. PARC өнертабыстарының әсерлі тізімін қараңыз, олардың көпшілігі біздің әлемнің дамуында өте маңызды рөл атқарды. Мысалы:

  • Лазерлік принтерлер
  • Объектіге бағытталған бағдарламалау / Smalltalk
  • Дербес компьютерлер
  • Ethernet/үлестірілген есептеулер
  • GUI / компьютер тінтуірі / WYSIWYG

Және ARPA құрды ARPANET, ол Интернеттің бастаушысы болды.

PS Алан Кей Hacker News қауымдастығының сұрақтарына жауап береді.

Ақпарат көзі: www.habr.com

пікір қалдыру