Алън Кей, създател на ООП, за разработката, Lisp и ООП

Алън Кей, създател на ООП, за разработката, Lisp и ООП

Ако никога не сте чували за Алън Кей, поне сте чували известните му цитати. Например този цитат от 1971 г.:

Най-добрият начин да се предскаже бъдещето е да се измисли.
Най-добрият начин да предвидите бъдещето е да го измислите.

Алън има много колоритна кариера в компютърните науки. Той получи Награда Киото и Награда Тюринг за работата си върху парадигмата на обектно-ориентираното програмиране. Той беше един от пионерите в областта на персоналните компютри и графичните интерфейси, които разработи Общи приказки е един от първите най-влиятелни езици за програмиране на всички времена.

В нашата Хекслет, особено в в чата, въпросът „какво е ООП“ и „какво всъщност имаше предвид Алън Кей“ постоянно се повдига. Тази публикация съдържа интересни цитати от Алън за състоянието на съвременното развитие, ООП и езика Lisp.

Относно разработката на софтуер

Алън Кей вярва, че компютърната революция тепърва предстои (Истинската компютърна революция все още не се е случила), а разработката на софтуер се развива обратно пропорционално на закона на Мур: хардуерът се подобрява всяка година, но софтуерът става ненужно раздут:

проблемът е слаби, лошо скалируеми идеи и инструменти, мързел, липса на знания и т.н.

Описва добре тази ситуация кратка шега:

Това, което Анди дава, Бил го отнема
Анди даде, Бил взе

Анди Гроув, главен изпълнителен директор на Intel, и Бил Гейтс, тогавашен главен изпълнителен директор на Microsoft.

Подобряването на текущото състояние на развитие беше целта на изследователския проект СТЪПКИ към преоткриването на програмирането (pdf). Целта е да се постигне "законът на Мур" в изразителността чрез "намаляване на количеството на необходимия код със 100, 1000, 10000 XNUMX пъти или повече."

В неговия проницателен доклад Програмиране и мащабиране (видео) Тази тема е разгледана по-подробно. Според Алън софтуерното инженерство е в застой и се превръща в забравена наука, която не може да се справи с хардуера и други науки и инженерни дисциплини. Големите проекти са се превърнали в изхвърляния на кодове и са достигнали момент, в който никой не може да разбере 100 милиона реда от код на MS Vista или MS Word. Но в действителност в такива проекти трябва да има порядък по-малко код.

Алън разглежда Интернет, TCP/IP протоколи, LISP интерпретатори, Nile (Math DSL за векторни графики) и OMeta (OO PEG) (PDF) примери за елегантен софтуер с минимален код.

Той нарича Интернет (TCP/IP) един от малкото мащабни софтуерни проекти, които са проектирани правилно и нивото на сложност е в баланс с нивото на сложност (усложнение срещу сложност). С по-малко от 20 1969 реда код, проектът работи като жива, динамична система, способна да поддържа милиарди възли, и никога не е излизал офлайн от първоначалното си стартиране през септември XNUMX г. Просто спряхме да смятаме Интернет за нормален софтуерен проект, създаден от хора:

Интернет е толкова добре развит, че много хора го третират като природен ресурс, като Тихия океан, а не като продукт на човешки труд. Кога за последен път видяхме толкова стабилна, ясна технология без грешки? За сравнение, мрежата е глупост. Мрежата е създадена от аматьори.

За обектно-ориентираното програмиране

Първото нещо, което ме заинтересува, беше неговото оригинален ООП визия. Неговият опит в микробиологията изигра важна роля:

Мислех за обектите като за нещо като биологични клетки и/или отделни компютри в мрежа, които могат да комуникират само чрез съобщения.

и опит в областта на математиката:

Моят опит в математиката ме накара да разбера, че всеки обект може да има няколко алгебри, те могат да бъдат комбинирани в семейства и това може да бъде много полезно.

Идеи за късно свързване и мощни мета-функции на LISPa:

Втората фаза е разбирането на LISPa и използването на това разбиране за създаване на по-лесни, по-малки, по-мощни структури и по-късно обвързване.

И скоро Алън започна да подкрепя идеята, че динамичните езици са бъдещето на разработката на софтуер (pdf). По-специално, лесната промяна е важна за него:

Късното обвързване позволява идеи, дошли по-късно в процеса на разработка, да бъдат включени в проекта с по-малко усилия (в сравнение с по-ранни обвързани системи като C, C++, Java и др.)

И потенциалът за промени в движение и по-бързи итерации:

Една от ключовите идеи е системата да продължи да работи по време на тестване, особено докато се правят промени. Дори големите промени трябва да бъдат постепенни и да отнемат не повече от част от секундата.

което липсва в статично типизирани езици:

Ако използвате ранно обвързващи езици, както правят повечето хора, тогава се заключвате в това, което вече сте написали. Вече няма да е възможно да го преформулирате лесно.

Изненадващо, неговите мисли за ООП бяха ограничени до това:

OOP за мен е съобщения, локално задържане и защита, скриване на състоянието и късно свързване на всичко. Това може да се направи в Smalltalk и в LISP.

И нищо за наследството. Това не е ООП които познаваме днес:

Иска ми се да бях използвал термина "обект" за тази тема преди много време, защото той кара много хора да се съсредоточат върху по-малкото от идеите.

Голямата идея, която липсва на модерните статично въведени OO езици:

Голямата идея е "съобщенията"

Той вярва в фокусирането върху съобщенията, хлабавото свързване и взаимодействията на модулите, а не върху вътрешността на обект:

Ключът към създаването на добри мащабируеми системи е разработването на комуникационните механизми между модулите, а не разработването на техните вътрешни свойства и поведение.

Статично въведените езици му изглеждат дефектен:

Не съм против типовете, но не знам за система от типове, която да не причинява болка. Така че все още харесвам динамичното писане.

Някои популярни езици днес използват идеите на Smalltalk за предаване на съобщения, късно свързване и не разбираforwardInvocation в Цел-Cметод_липсва в Рубин и noSuchMethod в Google стрела.

Унищожете всичко и създайте нещо по-добро

Алън има интересна теория за развитието на компютърните науки:

Струва ми се, че има само един вид компютърни науки и че науката е като изграждането на мостове. Някой строи мостове, а някой ги разрушава и създава нови теории. И трябва да продължим да строим мостове.

Относно LISP

Алън Кей вярва на Lisp

най-добрият език за програмиране на всички времена

И че всеки завършил компютърни науки трябва да го изучава:

Повечето хора, които следват степени по CS, не разбират важността на Lisp. Lisp е най-важната идея в компютърните науки.

За правилната атмосфера и контекст

Често си припомня уникалната атмосфера в Ксерокс ПАРК и ARPA, където „визията е по-важна от целите“ и „финансирането на хора, а не на проекти“.

Гледната точка струва 80 IQ точки.

Алън Кей казва:

Историята на ARPA/PARC демонстрира как комбинация от визия, скромно финансиране, правилния контекст и процес може магически да роди нови технологии, които не само оказват влияние върху цивилизацията, но и създават огромна стойност за обществото.

И е вярно. Разгледайте впечатляващия списък с изобретения на PARC, много от които изиграха много важна роля в развитието на нашия свят. Например:

  • Лазерни принтери
  • Обектно-ориентирано програмиране / Smalltalk
  • Персонални компютри
  • Ethernet / разпределено изчисление
  • GUI / компютърна мишка / WYSIWYG

И в ARPA създаден ARPANET, който стана прародителят на Интернет.

PS Алън Кей отговаря на въпроси от общността на Hacker News.

Източник: www.habr.com

Добавяне на нов коментар