Алан Кэй, стваральнік ААП, пра распрацоўку, Лісп і ААП

Алан Кэй, стваральнік ААП, пра распрацоўку, Лісп і ААП

Калі вы ніколі не чулі пра Алана Кэя, то прынамсі чулі яго знакамітыя цытаты. Напрыклад, гэтае выказванне 1971 года:

Добрая мэта для таго, каб пазбавіць сябе будучым у гэтым.
Лепшы спосаб прадказаць будучыню гэта вынайсці яго.

У Алана вельмі яркая кар'ера ў інфарматыцы. Ён атрымаў Прэмію Кіёта и Прэмію Цьюрынга за працу над парадыгмай аб'ектна-арыентаванага праграмавання. Ён быў адным з першапраходцаў у вобласці персанальных кампутараў і графічнага інтэрфейсу, ён распрацаваў Маленькая размова — адна з першых самых уплывовых моў праграмавання ўсіх часоў.

У нас у Хекслеце, Асабліва ў чаце, пастаянна ўздымаецца пытанне «што такое ААП» і «што меў на ўвазе Алан Кэй насамрэч». У гэтай нататцы сабраны цікавыя цытаты Алана аб стане сучаснай распрацоўкі, ААП і мове Лисп.

Пра распрацоўку ПЗ

Алан Кэй лічыць, што кампутарная рэвалюцыя яшчэ наперадзе (The Real Computer Revolution Памятае Yet), і распрацоўка ПА развіваецца зваротна прапарцыйна Закону Мура: жалеза паляпшаецца кожны год, а софт становіцца разадзьмутым без патрэбы:

праблема ў слабых, дрэнна якія маштабуюцца ідэях і прыладах, ляноты, недахопу ведаў і т.д.

Гэтую сітуацыю добра апісвае кароткі жарт:

What Andy giveth, Bill taketh away
Эндзі даў, Біл узяў

Эндзі Грув, CEO Інтэла, і Біл Гейтс, тагачасны CEO Майкрасофта.

Паляпшэнне бягучага стан распрацоўкі было мэтай даследчага праекта STEPS Toward The Reinvention of Programming (pdf). Задача - дасягнуць "Закона Мура" ў выразнасці праз "скарачэнне колькасці неабходнага кода ў 100, 1000, 10000 разоў і больш".

У яго дакладзе, які адкрывае вочы Programming and Scaling (відэа) гэтая тэма разглядаецеся падрабязней. Па меркаванні Алана, software engineering заглух і становіцца забытай навукай, якая не паспявае за жалезам, іншымі навукамі і інжынернымі дысцыплінамі. Вялікія праекты сталі звалкамі кода і дасягнулі такой кропкі, калі ніхто не здольны зразумець 100 мільёнаў радкоў кода MS Vista ці MS Word. А ў рэальнасці кода ў такіх праектах павінна быць на парадак менш.

Алан лічыць Інтэрнэт, пратаколы TCP/IP, інтэрпрэтатары LISP, Nile (Math DSL for Vector Graphics) і OMeta (OO PEG) (PDF) прыкладамі элегантнага софту з мінімальным кодам.

Ён называе Інтэрнэт (TCP/IP) адным з нямногіх маштабных софтверных праектаў, які быў правільна распрацаваны, і яго ўзровень складанасці – у балансе з узроўнем комплекснасці (complication vs. complexity). Гэты праект, у якім менш за 20 тысяч радкоў кода, працуе як жывая, дынамічная сістэма, здольная падтрымліваць мільярды вузлоў, і яна ні разу не адключалася пасля першага запуску ў верасні 1969 гады. Мы проста перасталі лічыць Інтэрнэт нармальным софт-праектам, створаным людзьмі:

Інтэрнэт распрацаваны настолькі добра, што многія ставяцца да яго як да натуральнага рэсурсу, накшталт Ціхага акіяна, а не да плёну чалавечай працы. Калі ў апошні раз мы бачылі настолькі стабільную, дакладную тэхналогію без памылак? Для параўнання, Інтэрнэт гэта глупства. Вэб створаны дылетантамі.

Пра аб'ектна-арыентаванае праграмаванне

Першае, што мяне цікавіла, гэта яго першапачатковае бачанне ААП. Яго досвед у мікрабіялогіі згуляў важную ролю:

Я лічыў аб'екты чымсьці накшталт біялагічных клетак, і/ці асобных кампутараў у сетцы, якія могуць мець зносіны толькі праз паведамленні.

і вопыт у матэматыцы:

Мой досвед у матэматыцы прымусіў мяне зразумець, што кожны аб'ект можа мець некалькі алгебр, яны могуць аб'ядноўвацца ў сямейства, і гэта можа быць вельмі карысным.

Ідэі позняга ззяння і магутных мета-магчымасцяў LISPa:

Другая фаза - гэта разуменне LISPa і выкарыстанне гэтага разумення для стварэння больш зручных, маленькіх і магутных структур і пазнейшае звязванне.

І неўзабаве Алан стаў падтрымліваць ідэю таго, што дынамічныя мовы гэта будучыня распрацоўкі ПЗ (pdf). У прыватнасці, яму важна лёгкасць змены:

Пазней звязванне дазваляе з меншымі намаганнямі ўбудоўваць у праект ідэі, якія ўзніклі пазней у працэсе распрацоўкі (у параўнанні з сістэмамі з больш раннім звязваннем накшталт C, C++, Java, і інш.)

І патэнцыял для змен на хаду і больш хуткіх ітэрацый:

Адна з ключавых ідэй: сістэма павінна працягваць працу падчас тэставання аб асабліва падчас твора змен. Нават буйныя змены павінны быць паэтапнымі і займаць не больш за долю секунды.

які адсутнічае ў статычна-тыпізаваных мовах:

Калі вы выкарыстоўваеце мовы з раннім звязваннем, як гэта робіць большасць, тыя вы замыкаеце сябе ў рамкі таго, што ўжо напісалі. Перафармуляваць з лёгкасцю ўжо не атрымаецца.

Дзіўна, але яго думка пра ААП абмяжоўваліся гэтым:

ААП для мяне гэта паведамленні, лакальнае ўтрыманне і абарона, утойванне стану і пазней звязванне за ўсё. Гэта можна зрабіць у Smalltalk і ў LISP.

І нічога пра ўспадкоўванне. Гэта не той ААП, які мы ведаем сёння:

Мне шкада, што даўным-даўно я выкарыстоўваў тэрмін «аб'ект» для гэтай тэмы, таму што з-за гэтага многія людзі факусуюцца на меншай з ідэй.

Вялікая ідэя, якой не хапае сучасным статычна-тыпізаваным ГА-мовам:

Вялікая ідэя гэта "паведамленні"

Ён лічыць, што трэба факусавацца на паведамленнях, слабой сувязі і ўзаемадзеянні модуляў, а не на вантробах аб'екта:

Ключ да стварэння добрых якія маштабуюцца сістэм гэта прапрацоўка механізмаў зносін модуляў, а не прапрацоўка іх унутраных уласцівасцяў і паводзін.

Статычна-тыпізаваныя мовы здаюцца яму непаўнавартаснымі:

Я не супраць тыпаў, але мне не знаёмая ні адна сістэма тыпаў, якая не выклікала б болі. Так што мне ўсё яшчэ падабаецца дынамічная тыпізацыя.

Некаторыя папулярныя мовы сёння выкарыстоўваюць ідэі перадачы паведамленняў Smalltalk'а, пазней звязванне, і канструкцыю doesNotUnderstandforwardInvocation в Objective-Cmethod_missing в лал и noSuchMethod у Гуглаўскім дзіда.

Знішчыць усё і стварыць нешта лепш

У Алана ёсць цікавая тэорыя аб развіцці інфарматыкі:

Мне здаецца, што існуе толькі адзін тып кампутарнай навукі, і гэта навука падобная да будаўніцтва мастоў. Нехта будуе масты, а нехта разбурае іх і стварае новыя тэорыі. І нам трэба працягваць будаваць масты.

Пра LISP

Алан Кэй лічыць Лісп

лепшай мовай праграмавання ўсіх часоў

І што яго павінен вывучаць кожны выпускнік у computer science:

Большасць людзей, якія атрымліваюць дыпломы ў CS, не разумеюць усёй важнасці Lisp. Lisp гэта найважнейшая ідэя ў computer science.

Пра правільную атмасферу і кантэкст

Ён часта ўспамінае аб унікальнай атмасферы ў Ксерак Xerox и ячменнага, дзе «бачанне важней мэт» і «фінансаванне людзей, а не праектаў».

Пункт гледжання дае 80 балаў IQ.

Алан Кэй лічыць:

Гісторыя ARPA/PARC дэманструе, як камбінацыя бачання, сціплага фінансавання, правільнага кантэксту і працэсу можа чароўнай выявай нараджаць новыя тэхналогіі, якія не толькі ўплываюць на цывілізацыю, але і ствараюць велізарную каштоўнасць для грамадства.

І гэта праўда. Зірніце на ўражлівы спіс вынаходстваў PARC, многія з якіх адыгралі вельмі важную ролю ў развіцці нашага свету. Напрыклад:

  • Лазерныя прынтэры
  • Аб'ектна-арыентаванае праграмаванне / Smalltalk
  • Персанальныя кампутары
  • Ethernet / размеркаваныя вылічэнні
  • GUI / кампутарная мыш / WYSIWYG

А ў ячменнага стварылі ARPANET, які стаў прабацькам Інтэрнэту.

PS Алан Кэй адказвае на пытанні супольнасці Hacker News.

Крыніца: habr.com

Дадаць каментар