Podobno Alan Kay jest wynalazcą terminu „obiektowy”. I często jest cytowany, jak powiedział, że to, co dzisiaj nazywamy OO, nie jest tym, co miał na myśli.
Na przykład właśnie znalazłem to w Google:
Stworzyłem termin „obiektowy” i mogę powiedzieć, że nie miałem na myśli C ++
- Alan Kay, OOPSLA '97
Jak przez mgłę pamiętam coś słuchu dość wnikliwe o tym, co on miał na myśli. Coś w stylu „przekazywania wiadomości”.
Czy wiesz co miał na myśli? Czy możesz podać więcej szczegółów na temat tego, co miał na myśli i czym różni się od dzisiejszego wspólnego OO? Proszę podzielić się referencjami, jeśli masz.
Dzięki.
object-oriented
history
Charlie Flowers
źródło
źródło
Odpowiedzi:
http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
źródło
Większość, jeśli nie wszystko, co Alan Kay rozumiał przez orientację obiektową, zawarte jest w języku Smalltalk.
Ponadto z http://en.wikipedia.org/wiki/Message_passing#Influences_on_other_programming_models :
źródło
„Nie zrealizowaliśmy nawet całego pomysłu w PARC. Wiele pomysłów aktorskich Carla Hewitta, które zostały zainspirowane oryginalnym Smalltalk, były bardziej w duchu OOP niż kolejne Smalltalks. Znaczące części Erlang są bardziej jak prawdziwy język OOP obecny Smalltalk, a na pewno języki oparte na C, które zostały namalowane „farbą OOP”. ”
Zaczerpnięte z komentarza Alana Kaya na:
http://computinged.wordpress.com/2010/09/11/moti-asks-objects-never-well-hardly-ever/
źródło
Jednym z głównych punktów, które podniosłem na podstawie prac Alana Kay i innych, takich jak Jim Coplien, jest to, że prawdziwe programowanie zorientowane obiektowo polega na modelowaniu komputerów i oprogramowania w kategoriach modeli mentalnych LUDZKIEGO / UŻYTKOWNIKA, a nie byciu tylko narzędzie dla PROGRAMATORÓW.
Jak rozumiem, wizja OOP firmy Alan polegała na tym, aby komputer był narzędziem, które pozwala użytkownikom tworzyć, co chcą: pełne możliwości komputera są bezpośrednio udostępniane użytkownikowi końcowemu za pomocą intuicyjnego modelu interaktywnego. Powinienem być w stanie wyświetlać i rzeźbić obiekty wykonawcze i interakcje BEZPOŚREDNIO, nie tylko za pomocą kodu.
Oto post o moich planach wypróbowania jakiejś wersji tego kodu w JavaScript jako dowodu koncepcji: http://www.cemetech.net/forum/viewtopic.php?p=234494#234494
Z perspektywy rozwoju / programowania oprogramowania, Jim Coplien mówi o tym, jak kod może i POWINIEN przypominać jego mentalny model. Oznacza to, że kod czyta się tak samo, jak brzmiałaby osoba opisująca swoje zachowanie. Jest to w dużej mierze osiągnięte poprzez myślenie w kategoriach OBIEKTÓW, a nie w kategoriach KLAS i RODZAJÓW. Zachowanie jest opisane w kategoriach ROL odgrywanych przez obiekty, a nie w ramach definicji TOŻSAMOŚCI obiektu. Powinieneś być w stanie modelować interakcje na podstawie obiektów, które są identyfikowane przez ROLĘ, jaką odgrywają w interakcji. Oto jak działają ludzkie modele mentalne: kelner, klient, kasjer, konto źródłowe, konto docelowe ... Są to ROLE, a nie TYPY, a Ty chcesz mieć możliwość zdefiniowania metod dla „dowolnego obiektu pełniącego tę rolę w tym czasie „,
źródło