Как сообщается, Алан Кей является изобретателем термина «объектно-ориентированный». И его часто цитируют так, как будто он сказал, что то, что мы сегодня называем ОО, не имеет в виду.
Например, я только что нашел это в Google:
Я придумал термин «объектно-ориентированный» и могу сказать, что я не имел в виду C ++
- Алан Кей, OOPSLA '97
Я смутно помню , услышав что - то очень проницательный о том, что он сделал в виду. Что-то вроде «передачи сообщений».
Вы знаете, что он имел в виду? Не могли бы вы рассказать подробнее о том, что он имел в виду и чем он отличается от сегодняшнего общего ОО? Пожалуйста, поделитесь некоторыми ссылками, если у вас есть.
Благодарю.
object-oriented
history
Чарли Флауэрс
источник
источник
Ответы:
http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
источник
Большая часть, если не все, что Алан Кей подразумевал под объектной ориентацией , воплощена в языке Smalltalk.
Кроме того, с http://en.wikipedia.org/wiki/Message_passing#Influences_on_other_programming_models :
источник
«Мы даже не реализовали всю идею в PARC. Многие из идей актеров Карла Хьюитта, которые были инициированы оригинальным Smalltalk, были больше в духе ООП, чем последующие Smalltalks. Значимые части Erlang больше похожи на настоящий язык ООП. текущий Smalltalk и, конечно, языки на основе C, которые были нарисованы с помощью «ООП-краски». "
Взято из комментария Алана Кея по адресу:
http://computinged.wordpress.com/2010/09/11/moti-asks-objects-never-well-hardly-ever/
источник
Один из основных моментов, которые я извлек из изучения работ Алана Кея и других, таких как Джим Коплиен, заключается в том, что настоящее «объектно-ориентированное» программирование направлено на моделирование компьютеров и программного обеспечения с точки зрения ментальных моделей ЧЕЛОВЕКА / ПОЛЬЗОВАТЕЛЯ, а не на просто инструмент для программистов.
Насколько я понимаю, видение ООП Алана делало компьютер инструментом, позволяющим пользователю-человеку делать все, что он хочет: все возможности компьютера напрямую предоставляются конечному пользователю через интуитивно понятную интерактивную модель. Я должен иметь возможность просматривать и лепить объекты времени выполнения и взаимодействия ПРЯМО, а не только через код.
Вот пост о моих планах попробовать какую-то версию этого в JavaScript в качестве доказательства концепции: http://www.cemetech.net/forum/viewtopic.php?p=234494#234494
С точки зрения разработки / программирования программного обеспечения, Джим Коплиен говорит о том, как код может и ДОЛЖЕН быть похожим на его ментальную модель. То есть код читается почти так же, как и человек, описывающий его поведение. Это в значительной степени достигается путем мышления в терминах ОБЪЕКТОВ, а не в терминах КЛАССОВ и ВИДОВ. Поведение описывается на терминах РОЛ, играемых объектами, а не как часть определения ИДЕНТИЧНОСТИ объекта. Вы должны быть в состоянии смоделировать взаимодействия на терминах объектов, которые определяются ролей, которую они играют во взаимодействии. Вот как работают человеческие ментальные модели: официант, клиент, кассир, исходный счет, целевой счет ... Это РОЛИ, а не ТИПЫ, и вы хотите иметь возможность определять методы для "любого объекта, который играет эту роль в данный момент" »,
источник