Алан Кеј, креатор на OOP, за развој, Lisp и OOP

Алан Кеј, креатор на OOP, за развој, Lisp и OOP

Ако никогаш не сте слушнале за Алан Кеј, барем сте ги слушнале неговите познати цитати. На пример, овој цитат од 1971 година:

Најдобар начин да се предвиди иднината е да се измисли.
Најдобар начин да се предвиди иднината е да се измисли.

Алан има многу шарена кариера во компјутерската наука. Тој доби Награда од Кјото и Турингова награда за неговата работа на објектно-ориентираното програмирање парадигма. Тој беше еден од пионерите во областа на персоналните компјутери и графичките интерфејси, тој ги разви Краток разговор е еден од првите највлијателни програмски јазици на сите времиња.

Во нашата Хекслете, особено во муабет, постојано се поставува прашањето „што е OOP“ и „што навистина мислеше Алан Кеј“. Овој пост содржи интересни цитати од Алан за состојбата на современиот развој, OOP и јазикот Lisp.

За развој на софтвер

Алан Кеј верува дека компјутерската револуција допрва доаѓа (Вистинската компјутерска револуција сè уште не се случила), а развојот на софтвер се развива обратно пропорционално со законот на Мур: хардверот се подобрува секоја година, но софтверот станува непотребно надуен:

проблемот е слаб, слабо скалабилни идеи и алатки, мрзеливост, недостаток на знаење итн.

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

Она што го дава Енди, Бил го одзема
Енди даде, Бил зеде

Енди Гроув, извршен директор на Интел и Бил Гејтс, тогашен извршен директор на Мајкрософт.

Подобрување на моменталната состојба на развој беше целта на истражувачкиот проект ЧЕКОРИ кон реинвенција на програмирањето (pdf). Целта е да се постигне „Муровиот закон“ во експресивноста со „намалување на количината на потребната шифра за 100, 1000, 10000 пати или повеќе“.

Во неговиот извештај што ги отвора очите Програмирање и скалирање (видео) Оваа тема се дискутира подетално. Според Алан, софтверското инженерство е во застој и станува заборавена наука која не може да биде во чекор со хардверот и другите науки и инженерски дисциплини. Големите проекти станаа депонии за кодови и стигнаа до точка каде што Никој не може да разбере 100 милиони линии MS Vista или MS Word код. Но, во реалноста, треба да има ред на големина помала шифра во вакви проекти.

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

Тој го нарекува Интернетот (TCP/IP) еден од ретките софтверски проекти од големи размери кој е дизајниран правилно, а неговото ниво на сложеност е во рамнотежа со нивото на сложеност (компликација наспроти сложеност). Со помалку од 20 линии код, проектот работи како жив, динамичен систем способен да поддржува милијарди јазли и никогаш не бил офлајн од неговото првично лансирање во септември 1969 година. Едноставно престанавме да го сметаме Интернетот за нормален софтверски проект создаден од луѓе:

Интернетот е толку добро развиен што многу луѓе го третираат како природен ресурс, како Тихиот Океан, наместо како производ на човечки труд. Кога последен пат видовме таква стабилна, јасна технологија без грешки? За споредба, Интернетот е глупост. Интернетот е создаден од аматери.

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

Првото нешто што ме интересираше беше неговото оригинален OOP визија. Неговото искуство во микробиологија одигра важна улога:

Мислев на објектите како нешто како биолошки ќелии и/или индивидуални компјутери на мрежа кои можат да комуницираат само преку пораки.

и искуство во математика:

Моето искуство во математиката ме натера да сфатам дека секој предмет може да има неколку алгебри, тие можат да се комбинираат во семејства и тоа може да биде многу корисно.

Идеи за доцна врзување и моќни мета-функционалности на LISPA:

Втората фаза е разбирање на LISPA и користење на тоа разбирање за создавање полесни, помали, помоќни структури и подоцна обврзувачки.

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

Доцното врзување овозможува идеите што дојдоа подоцна во процесот на развој да се вклучат во проектот со помалку напор (во споредба со претходните врзани системи како C, C++, Java, итн.)

И потенцијалот за промени во лет и побрзи повторувања:

Една од клучните идеи е дека системот треба да продолжи да работи за време на тестирањето, особено додека се прават промени. Дури и големите промени треба да бидат постепени и да траат не повеќе од дел од секундата.

што недостасува во статички пишувани јазици:

Ако користите рано обврзувачки јазици, како што прават повеќето луѓе, тогаш се заклучувате во она што веќе сте го напишале. Веќе нема да може лесно да се преформулира.

Изненадувачки, неговите размислувања за OOP беа ограничени на ова:

ООП за мене е пораки, локално задржување и заштита, државно криење и доцна врзување на се. Ова може да се направи во Smalltalk и во LISP.

И ништо за наследството. Ова не е OOP кои ги знаеме денес:

Посакувам одамна да го користев терминот „објект“ за оваа тема бидејќи предизвикува многу луѓе да се фокусираат на помалата идеја.

Големата идеја што им недостасува на современите статички напишани ОО јазици:

Големата идеја е „пораки“

Тој верува во фокусирањето на пораките, лабавото спојување и интеракциите на модулите наместо на внатрешните работи на објектот:

Клучот за создавање добри скалабилни системи е да се развијат механизмите за комуникација помеѓу модулите, а не да се развијат нивните внатрешни својства и однесување.

Му се чинат статички напишаните јазици неисправни:

Не сум против типови, но не знам некој тип систем кој не предизвикува болка. Па сè уште ми се допаѓа динамичното пишување.

Некои популарни јазици денес користат идеи за пренесување на пораките на Smalltalk, доцна врзување и не разбиранапредПовикување в Цел-Цметод_недостасува в Руби и неТаковМетод во Google Стрела.

Уништи сè и создаде нешто подобро

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

Ми се чини дека постои само еден вид компјутерска наука, а таа наука е како градење мостови. Некој гради мостови, а некој ги уништува и создава нови теории. И ние треба да продолжиме да градиме мостови.

За LISP

Алан Кеј верува во Лисп

најдобар програмски јазик на сите времиња

И дека секој дипломиран компјутерски науки треба да го проучува:

Повеќето луѓе кои се занимаваат со диплома во ЦС не ја разбираат важноста на Лисп. Lisp е најважната идеја во компјутерската наука.

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

Тој често се сеќава на уникатната атмосфера во Xerox PARK и Харфа, каде што „визијата е поважна од целите“ и „финансирањето луѓе, а не проектите“.

Точка на гледање вреди 80 IQ поени.

Алан Кеј вели:

Приказната за ARPA/PARC покажува како комбинацијата од визија, скромно финансирање, вистинскиот контекст и процес може магично да роди нови технологии кои не само што влијаат на цивилизацијата, туку и создаваат огромна вредност за општеството.

И тоа е вистина. Погледнете ја импресивната листа на пронајдоци на PARC, од кои многу одиграа многу важна улога во развојот на нашиот свет. На пример:

  • Ласерски печатачи
  • Објектно-ориентирано програмирање / Smalltalk
  • Лични компјутери
  • Етернет / дистрибуирано пресметување
  • GUI / компјутерски глушец / WYSIWYG

И во Харфа создаден АРПАНЕТ, кој стана прогенитор на Интернетот.

PS Алан Кеј одговара на прашања од заедницата Hacker News.

Извор: www.habr.com

Додадете коментар