Alan Kay serait l'inventeur du terme "orienté objet". Et il est souvent cité comme ayant déclaré que ce que nous appelons aujourd'hui OO n'est pas ce qu'il voulait dire.
Par exemple, je viens de trouver ceci sur Google:
J'ai composé le terme 'orienté objet', et je peux vous dire que je n'avais pas à l'esprit le C ++
- Alan Kay, OOPSLA '97
Je me souviens vaguement avoir entendu quelque chose d' assez perspicace sur ce qu'il ne signifie pas . Quelque chose dans le sens du "message qui passe".
Savez-vous ce qu'il voulait dire? Pouvez-vous donner plus de détails sur ce qu'il voulait dire et en quoi cela diffère de l'OO commun d'aujourd'hui? S'il vous plaît partager quelques références si vous en avez.
Merci.
object-oriented
history
Fleurs de charlie
la source
la source
Réponses:
http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
la source
La plupart, sinon la totalité, de ce que Alan Kay entend par orientation objet est incarné dans le langage Smalltalk.
Voir également http://en.wikipedia.org/wiki/Message_passing#Influences_on_other_programming_models :
la source
"Nous n'avions même pas fait toute cette idée au PARC. Beaucoup d'idées d'acteurs de Carl Hewitt qui ont été suscitées par le Smalltalk original étaient plus dans l'esprit de la POO que les Smalltalks ultérieurs. Les parties significatives d'Erlang ressemblent davantage à un vrai langage de POO. Le Smalltalk actuel, et certainement les langages basés sur le C qui ont été peints avec «peinture OOP». "
Tiré du commentaire d'Alan Kay à:
http://computinged.wordpress.com/2010/09/11/moti-asks-objects-never-well-hardly-ever/
la source
Un des points importants que j’ai retenu en suivant les travaux d’Alan Kay et d’autres, tels que Jim Coplien, est que la véritable programmation orientée "objet" concerne la modélisation des ordinateurs et des logiciels en termes de modèles mentaux HUMAN / USER, juste un outil pour les programmeurs.
Si je comprends bien, la vision d'AOP d'Alan était de faire de l'ordinateur un outil qui permet à un utilisateur humain de créer ce qu'il veut: toutes les fonctionnalités de l'ordinateur sont directement exposées pour l'utilisateur final au moyen d'un modèle interactif intuitif. Je devrais être capable de visualiser et de sculpter les objets et les interactions d'exécution DIRECTEMENT, pas seulement à travers le code.
Voici un article sur mon projet d'essayer d'utiliser une version de JavaScript comme une preuve de concept: http://www.cemetech.net/forum/viewtopic.php?p=234494#234494
Dans une perspective de développement / programmation de logiciels, Jim Coplien explique comment le code peut et DEVRAIT ressembler au modèle mental de celui-ci. Autrement dit, le code se lit pratiquement de la même manière que le ferait une personne décrivant son comportement. Ceci est en grande partie accompli en pensant en termes d’OBJETS, plutôt qu’en termes de CLASSES et de TYPES. Le comportement est décrit en termes de ROLES joués par des objets, pas dans le cadre de la définition de l'identité d'un objet. Vous devriez être capable de modéliser les interactions en termes d'objets, qui sont identifiés par le rôle qu'ils jouent dans une interaction. Voici comment fonctionnent les modèles mentaux humains: serveur, client, caissier, compte source, compte de destination, ... Ce sont des ROLES, pas des TYPES, et vous souhaitez pouvoir définir des méthodes pour "tout objet jouant ce rôle à ce moment" ",
la source