Live data from Hacker News

Objects, Identity, and Concept-formation (2008)

blog.higher-order.com

11–20 of 42 posts

Re: Objects, Identity, and Concept-formation (2008)

#11

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?

Re: Objects, Identity, and Concept-formation (2008)

#12
Alan Kay coined the term "object-oriented" for software architecture in the late '60’s. He offers a good explanation of it: http://programmers.stackexchange.com/a/58732

“OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.” — Alan Kay

It's easy to assume only languages with Class and Object abstractions are "object-oriented", but the "orientation" is really more about your mental model of the system as differentiated objects that communicate via messages.

Re: Objects, Identity, and Concept-formation (2008)

#13

Well, the author recommends induction as a means of figuring this out, and it seems for induction to work we need to have some existing example to induce the principle from (if I am remembering my maths, I might not be). So to figure out our concept it may be worth taking a look at what the use of object-oriented features is, and use that as a starting point. Maybe, again I am a little rusty on my inductive reasoning…

The article author was referring to inductive reasoning in the sense of epistemology, which is not the same as mathematical induction. In fact, mathematical induction is a deductive reasoning technique.

Here's the relevant wiki article: http://en.wikipedia.org/wiki/Inductive_reasoning

Re: Objects, Identity, and Concept-formation (2008)

#14
post #7

The mainstream programming language community has a pretty strong consensus on what OOP means, in terms of language features. Some people out there seem to have some confused notions of what OOP is. That doesn't mean there isn't a well-understood and more-or-less accepted definition, at least in academia. Edit for downvotes: dynamic dispatch + associating methods with classes, often times but not necessarily accompan…

Edit for downvotes: dynamic dispatch + associating methods with classes...

So Julia and Clojure are object oriented? Some "object-oriented" julia code:

    f(x: Int64) = ...
    f(x: String) = ...
Even Haskell might qualify, due to existential types.

http://www.haskell.org/haskellwiki/Existential_type

Re: Objects, Identity, and Concept-formation (2008)

#15
post #7

The mainstream programming language community has a pretty strong consensus on what OOP means, in terms of language features. Some people out there seem to have some confused notions of what OOP is. That doesn't mean there isn't a well-understood and more-or-less accepted definition, at least in academia. Edit for downvotes: dynamic dispatch + associating methods with classes, often times but not necessarily accompan…

Edit for downvotes: dynamic dispatch + associating methods with classes... So Julia and Clojure are object oriented? Some "object-oriented" julia code: f(x: Int64) = ... f(x: String) = ... Even Haskell might qualify, due to existential types. http://www.haskell.org/haskellwiki/Existential_type

Those are function overloads? Does it pick the overload based on the runtime type of a variable that can hold multiple types? Can you create arbitrary multi-member types to apply this logic to?

Then code using that dispatching to implement behavior would be object-oriented, I think.

If not then no.

Also it's code that's object oriented or not, a language 'being' object oriented is a discussion of how well it supports such a thing. But they're all turing compatible; with enough abstraction you can write any type of code on top of any language.

Re: Objects, Identity, and Concept-formation (2008)

#16
post #7

The mainstream programming language community has a pretty strong consensus on what OOP means, in terms of language features. Some people out there seem to have some confused notions of what OOP is. That doesn't mean there isn't a well-understood and more-or-less accepted definition, at least in academia. Edit for downvotes: dynamic dispatch + associating methods with classes, often times but not necessarily accompan…

Edit for downvotes: dynamic dispatch + associating methods with classes... So Julia and Clojure are object oriented? Some "object-oriented" julia code: f(x: Int64) = ... f(x: String) = ... Even Haskell might qualify, due to existential types. http://www.haskell.org/haskellwiki/Existential_type

I have no idea how defining the type of a function's domain is supposed to be indicative to dynamic dispatch or associated methods with classes. I think I don't understand your example :-( Perhaps you can elaborate, since I don't know much about either of these languages.

Regarding existential types: yes, there's an intimate relationship between existential quantification and OOP. But you can distinguish the difference between OO languages and (non-OO languages with existential types) in the type theory. That's what's important. I think the raw empirical nature of my academic community consensus test is far preferable to the author's epistemological argument.

The question is whether OOP has meaning. I think if the PL community can be empirically demonstrated to have enough consensus that languages are reliably categorized as OO or non-OO, then we can safely say the term has meaning regardless of any armchair philosophy to the contrary.

Edit: And I think (hope) the author of the article would agree my test is sufficient. He states: When I say that there’s no such thing as OO, I mean, more precisely, that there exists some abstraction (or several) that is referred to as “object-oriented”, but that this abstraction has no actual referent in reality. It is an abstraction that is made in error. It is not necessary, and serves no cognitive purpose. It is “not even false”..

If OO has enough meaning to an important subgroup of people that they can use it with more-or-less consensus, then the claim that it has no referent in reality is clearly empirically denied, at least for that subgroup. And if that subgroup happens to be a large chunk of the PL community, then I think that's an important enough subgroup to settle the larger question.

Re: Objects, Identity, and Concept-formation (2008)

#17
post #6

Earlier quoted context omitted.

You just described parametric polymorphism, which has nothing to do with objects or runtime type information.

"has nothing to do" ... says you! I didn't describe static parametric polymorphism. Some of the things I described are doable with static parametric polymorphism in some limited circumstances.

Well, you described parametric polymorphism (a generic Nth function) and then switched to talking about dispatching on tags at runtime. You are mistaken; those really are completely unrelated concepts.

Re: Objects, Identity, and Concept-formation (2008)

#18
post #6

Earlier quoted context omitted.

You just described parametric polymorphism, which has nothing to do with objects or runtime type information.

"has nothing to do" ... says you! I didn't describe static parametric polymorphism. Some of the things I described are doable with static parametric polymorphism in some limited circumstances.

Please, identify which things can't be done with parametric polymorphism. It is not clear what you are referring to.

Re: Objects, Identity, and Concept-formation (2008)

#19
post #11

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.

Re: Objects, Identity, and Concept-formation (2008)

#20
"Valid concepts are arrived at by induction."

If the point is to argue that OOP is not a valid concept, the author should show first that 'programming' is a valid concept (using the same definitions) and that there are some related concepts (e.g., 'functional programming') that are valid, because if the same argument can be applied to most or all other '* programming' concepts too (not to mention concepts like 'validity' and 'concept'), then the point is not specific to OOP at all.

Incidentally, http://en.wikipedia.org/wiki/Prototype_theory seems a much better starting point for thinking about concepts in general, and '* programming' in particular.

Post reply on HN