Алан Кей, творець ООП, про розробку, Лисп і ООП

image

Якщо ви ніколи не чули про Алана Кея, то, як мінімум, чув його знамениті цитати. Наприклад, це висловлювання 1971 року:
The best way to predict the future is to invent it.
Найкращий спосіб передбачити майбутнє-це створити його.


У Алана дуже яскрава кар'єра в інформатиці. Він отримав Премію Кіото, Премію Тюрінга за роботу над парадигмою об'єктно-орієнтованого програмування. Він був одним з піонерів в області персональних комп'ютерів і графічного інтерфейсу, він розробив Smalltalk — один з перших найвпливовіших мов програмування всіх часів.

У нас в Хекслете, особливо в чаті, постійно піднімається питання «що таке ООП» і «що мав на увазі Алан Кей насправді». У цій замітці зібрані цікаві цитати Алана про стан сучасної розробки, ООП і мовою Лисп.

Про розробку ПЗ

Алан Кей вважає, що комп'ютерна революція ще попереду (The Real Computer Revolution hasn't Happened 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'а, пізніше зв'язування, і конструкцію doesNotUnderstand: forwardInvocation в Objective-C, method_missing в Ruby, noSuchMethod Гугловський Dart.

Знищити все і створити щось краще

У Алана є цікава теорія про розвиток інформатики:
Мені здається, що існує тільки один тип комп'ютерної науки, і це наука схожа на будівництво мостів. Хтось будує мости, а хтось руйнує їх і створює нові теорії. І нам потрібно продовжувати будувати мости.


Про LISP

Алан Кей вважає Лисп
кращим мовою програмування всіх часів


І що його повинен вивчати кожний випускник computer science:
Більшість людей, які отримують дипломи в CS, не розуміють всієї важливості Lisp. Lisp це найважливіша ідея в computer science.


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

Він часто згадує про унікальній атмосфері Xerox PARC і ARPA, де «бачення важливіше цілей» і «фінансування людей, а не проектів».
Точка зору дає 80 балів IQ.


Алан Кей вважає:
Історія ARPA/PARC демонструє, як комбінація бачення, скромного фінансування, правильного контексту і процесу може чарівним чином народжувати нові технології, які не тільки впливають на цивілізацію, але і створюють величезну цінність для суспільства.


І це правда. Погляньте на вражаючий список винаходів PARC, багато з яких зіграли дуже важливу роль у розвитку нашого світу. Наприклад:
  • Лазерні принтери
  • Об'єктно-орієнтоване програмування / Smalltalk
  • Персональні комп'ютери
  • Ethernet / розподілені обчислення
  • GUI / комп'ютерна миша / WYSIWYG


А в ARPA створили ARPANET, який став прабатьком Інтернету.

P. S. Алан Кей відповідає на питання спільноти Hacker News.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.