Según se informa, Alan Kay es el inventor del término "orientado a objetos". Y a menudo se lo cita diciendo que lo que llamamos OO hoy no es lo que quiso decir.
Por ejemplo, acabo de encontrar esto en Google:
Creé el término 'orientado a objetos', y puedo decirte que no tenía en mente C ++
- Alan Kay, OOPSLA '97
Recuerdo vagamente haber escuchado algo bastante perspicaz sobre lo que quería decir. Algo en la línea de "pasar mensajes".
¿Sabes a qué se refería? ¿Puede completar más detalles de lo que quiso decir y cómo difiere del OO común de hoy? Comparta algunas referencias si tiene alguna.
Gracias.
object-oriented
history
Flores de charlie
fuente
fuente
Respuestas:
http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
fuente
La mayoría, si no todo, de lo que Alan Kay quiso decir con orientación a objetos está incorporado en el lenguaje Smalltalk.
Además, de http://en.wikipedia.org/wiki/Message_passing#Influences_on_other_programming_models :
fuente
"Ni siquiera hicimos toda la idea en PARC. Muchas de las ideas de los actores de Carl Hewitt que surgieron de Smalltalk original estaban más en el espíritu de OOP que los Smalltalks posteriores. Partes significativas de Erlang son más como un verdadero lenguaje de OOP el Smalltalk actual, y ciertamente los lenguajes basados en C que han sido pintados con "OOP paint".
Tomado del comentario de Alan Kay en:
http://computinged.wordpress.com/2010/09/11/moti-asks-objects-never-well-hardly-ever/
fuente
Uno de los puntos principales que he recogido al seguir los trabajos de Alan Kay y otros como Jim Coplien es que la verdadera programación orientada a "objetos" se trata de modelar computadoras y software en términos de modelos mentales HUMANOS / USUARIOS, en lugar de ser solo una herramienta para PROGRAMADORES.
Según tengo entendido, la visión de Alan de OOP fue hacer de la computadora una herramienta que permita a un usuario humano hacer lo que quiera: las capacidades completas de la computadora están directamente expuestas al usuario final a través de un modelo interactivo intuitivo. Debería poder ver y esculpir objetos e interacciones en tiempo de ejecución DIRECTAMENTE, no solo a través del código.
Aquí hay una publicación sobre mis planes para intentar una versión de esto en JavaScript como prueba de concepto: http://www.cemetech.net/forum/viewtopic.php?p=234494#234494
Desde una perspectiva de desarrollo / programación de software, Jim Coplien habla sobre cómo el código puede y DEBE parecerse al modelo mental del usuario. Es decir, el código se lee de la misma manera que lo haría una persona que describe su comportamiento. Esto se logra en gran medida al pensar en términos de OBJETOS, en lugar de en términos de CLASES y TIPOS. El comportamiento se describe en términos de los ROLES que juegan los objetos, no como parte de la definición de IDENTIDAD de un objeto. Debería poder modelar interacciones en términos de objetos, que se identifican por el PAPEL que desempeñan en una interacción. Así es como funcionan los modelos mentales humanos: camarero, cliente, cajero, cuenta de origen, cuenta de destino, ... Estos son ROLES, no TIPOS, y desea poder definir métodos para "cualquier objeto que esté desempeñando este papel en ese momento". ",
fuente