Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The term "object-oriented" was coined by Alan Kay, and he did provide a much more precise meaning. Unfortunately, the term became a fad and was then diluted into all sorts of vaguely related ideas.

http://c2.com/cgi/wiki?AlanKaysDefinitionOfObjectOriented

I find the original idea deep and worth thinking about.



The page you link seems to indicate that Kay didn't propose this as a definitive definition of OOP, but rather as a description of the defining features of Smalltalk. I'm not familiar with the document; do you have any insight?


You are right. I've heard Kay provide short definitions. One documented case:

"OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things."

http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay...

If you read this email, you will see that what he had in mind was much more than a way of programming. It was a model of computation where the computer is a networks of "cells" exchanging messages.


He gives some really good points about this in a talk delivered to OOPSLA in 97 [1].

1. http://www.youtube.com/watch?v=oKg1hTOQXoY


Kay's concept survives if you substitute "function call" for "message". Sending a message to an object and receiving a reply is closely analogous to invoking a function and obtaining a return value. Unfortunately, his overall model implies single dispatch. Sure, "everything is an object", but only one thing is the leftmost argument: the thing that receives the message; and the other things are just arguments.


Wow, just no. Sending a message to an object is more like calling your mom. Applying a function is like...applying a function. There is no real analogue for that, it's just math.


It seems you need more time to think about it.

Message passing can be synchronous, and function calls asynchronous

Also consider remote procedure calls.


A function is well defined in mathematics; see http://en.wikipedia.org/wiki/Function_(mathematics) . Note that the definition doesn't really differ for computer science. Procedures, on the other hand, may or may not be functions according to whether they behave like them (match their properties).


This latest response seems to be entirely based on hooking into the word "procedure" which occurs in "remote procedure call". I don't do Eliza, sorry.


Well, I'm not even sure this conversation would pass the Turing Test :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: