Objects, Identity, and Concept-formation (2008)
21–30 of 42 posts
Re: Objects, Identity, and Concept-formation (2008)
#22The 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.
Re: Objects, Identity, and Concept-formation (2008)
#23"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 'valid…
Furthermore, all programming paradigms suffer the same fate in popular/industry press (even if not within academic communities). For instance, productivity claims justified by the macros and dynamic typing of Schemes and Lisps are often implicitly cross-applied to MLs under the broad header of "FP". And vice-versa for safety claims about MLs germane to types.
Sure, some people are careful about this sort of thing. But some aren't, which can make the concept of FP a "grab-bag" in certain settings. That doesn't (or shouldn't) make FP a "non-concept".
(It appears you beat me to this punch, so I'm moving my comment here instead of fragmenting this point into 2 top-level comments.)
Re: Objects, Identity, and Concept-formation (2008)
#24[deleted]
Re: Objects, Identity, and Concept-formation (2008)
#25"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 'valid…
The author's case is based upon Harriman's account of induction in the natural sciences. I don't think that's appropriate here. Computer Science -- or at least PL/Software Engineering -- is not a physical science! In many cases it's not or historically wasn't even a mathematical science. Furthermore, all programming paradigms suffer the same fate in popular/industry press (even if not within academic communities). Fo…
Re: Objects, Identity, and Concept-formation (2008)
#26Earlier quoted context omitted.
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 differen…
And in some sense, it is used for object orientation - CLOS is built on it. But on the other hand, these languages are very far from what one would normally normally call "object oriented".
I do agree with you that there is some meaning to the term "object oriented" - I often completely understand what is intended by the term. Python is certainly OO, Haskell is almost certainly not. But to some extent I agree with the author - it would be very useful to have a precise definition, because I don't think that classifying stranger languages as OO is that reliable.
Re: Objects, Identity, and Concept-formation (2008)
#27"Object-oriented programming" in its basic form means that the data manipulated in a computer program is self-describing. We can ask a datum, "what are you? what type?". The functions of that program are organized around data. This is in contrast with the form of programming in which data is just some storage, which is given a meaning by the algorithm that operates on it; it is not self-describing. Self-describing da…
My bet is even Smalltalk programmers don't think of eggs as knowing how to scramble themselves; but eggs do have an API, a behavior, that makes them distinct from other kinds of objects and at the same time shares characteristics with other objects, such as weight and dimensions.
I can assemble a list of eggs, elephants, and cars, and write "take the sum of the weights of all the objects". Although these objects are of different kind, they share a common characteristic that would be exploited naturally by any language user. Exploiting multiple "views of a thing" is a feature of English ("natural language") and to my mind is a feature of any successful "generic programming" computer language.
Processes communicating by asynchronous message passing is a better simulation of the familiar world; but that vision is not realized by Smalltalk, wherein messages are passed synchronously. What we want from language is the ability to write powerful sentences and have them mean something to the machine -- as long as the computer and human agree on the meaning. The better part of this power comes from a sophisticated treatment of type and generic operators.
Re: Objects, Identity, and Concept-formation (2008)
#28Earlier quoted context omitted.
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 differen…
Julia/Clojure/Lisp does dynamic dispatch on the argument types of the function - it's called multimethods. So it seems to fit your criteria of "dynamic dispatch + associating methods to classes". And in some sense, it is used for object orientation - CLOS is built on it. But on the other hand, these languages are very far from what one would normally normally call "object oriented". I do agree with you that there is…
The easy way out is to say that these languages are OO in the same sense that Java is functional. Easy but maybe not unfair, particularly since all are dynamically typed.
The clojure examples make this look like OO. I would have to find a formal definition of the semantics to figure out if there's a more nuanced explanation than the easy one above.
And yes, I think I agree with the last bit. The author's observation that lines can become blurred is certainly valuable and true. It's the author's conclusion that the term OOP is therefore meaningless which is, imo, empirically false.
edit: stray punctuation
Re: Objects, Identity, and Concept-formation (2008)
#29Earlier quoted context omitted.
"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)
#30Earlier quoted context omitted.
"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.