Berichten zufolge ist Alan Kay der Erfinder des Begriffs "objektorientiert". Und er wird oft zitiert, dass das, was wir heute OO nennen, nicht das ist, was er meinte.
Ich habe das zum Beispiel gerade bei Google gefunden:
Ich habe mir den Begriff "objektorientiert" ausgedacht und kann Ihnen sagen, dass ich C ++ nicht im Sinn hatte
- Alan Kay, OOPSLA '97
Ich erinnere mich vage hören etwas ziemlich aufschlussreich über das, was er hat meine. Etwas in der Art von "Message Passing".
Weißt du was er meinte? Können Sie näher erläutern, was er meinte und inwiefern es sich von dem heutigen OO unterscheidet? Bitte teilen Sie einige Referenzen mit, wenn Sie welche haben.
Vielen Dank.
object-oriented
history
Charlie Flowers
quelle
quelle
Antworten:
http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
quelle
Das meiste, wenn nicht alles, was Alan Kay mit Objektorientierung meinte, ist in der Smalltalk-Sprache enthalten.
Außerdem aus http://en.wikipedia.org/wiki/Message_passing#Influences_on_other_programming_models :
quelle
"Wir haben bei PARC nicht einmal die ganze Idee umgesetzt. Viele der Ideen von Carl Hewitt's Schauspielern, die durch das ursprüngliche Smalltalk ausgelöst wurden, entsprachen eher dem Geist von OOP als den nachfolgenden Smalltalks. Bedeutende Teile von Erlang ähneln eher einer echten OOP-Sprache das aktuelle Smalltalk und sicherlich die C-basierten Sprachen, die mit "OOP paint" gemalt wurden. "
Entnommen aus Alan Kays Kommentar bei:
http://computinged.wordpress.com/2010/09/11/moti-asks-objects-never-well-hardly-ever/
quelle
Einer der wichtigsten Punkte, die ich bei der Verfolgung der Arbeiten von Alan Kay und anderen wie Jim Coplien aufgegriffen habe, ist, dass es bei einer echten "objektorientierten" Programmierung darum geht, Computer und Software im Sinne von MENSCHLICHEN / BENUTZER-Mentalmodellen zu modellieren, anstatt zu sein nur ein Werkzeug für PROGRAMMIERER.
Ich verstehe, dass Alans Vision von OOP darin bestand, den Computer zu einem Werkzeug zu machen, mit dem ein menschlicher Benutzer alles machen kann, was er will: Die volle Leistungsfähigkeit des Computers wird dem Endbenutzer durch ein intuitives interaktives Modell direkt zugänglich gemacht. Ich sollte in der Lage sein, Laufzeitobjekte und Interaktionen DIREKT anzuzeigen und zu formen, nicht nur durch Code.
Hier ist ein Beitrag über meine Pläne, eine Version davon in JavaScript als Proof-of-Concept zu versuchen: http://www.cemetech.net/forum/viewtopic.php?p=234494#234494
Aus der Perspektive der Softwareentwicklung / -programmierung spricht Jim Coplien darüber, wie Code dem mentalen Modell des Benutzers ähneln kann und SOLLTE. Das heißt, der Code liest sich so, wie er von einer Person, die ihr Verhalten beschreibt, klingt. Dies wird größtenteils durch das Denken in OBJEKTEN und nicht in KLASSEN und TYPEN erreicht. Das Verhalten wird anhand der von Objekten gespielten ROLES beschrieben, nicht als Teil der Definition der IDENTITÄT eines Objekts. Sie sollten in der Lage sein, Interaktionen anhand von Begriffen von Objekten zu modellieren, die durch die Rolle identifiziert werden, die sie in einer Interaktion spielen. So funktionieren menschliche mentale Modelle: Kellner, Kunde, Kassierer, Quellkonto, Zielkonto, ... Dies sind ROLES, nicht TYPES, und Sie möchten in der Lage sein, Methoden für jedes Objekt zu definieren, das gerade diese Rolle spielt ",
quelle