Jump to content
Objectivism Online Forum

Object oriented programming and Objectivist Epistemology

Rate this topic


Recommended Posts

Hello,

I recently read this document and found it really interesting, particularly because I'm a software writer myself.

http://www.objectivistcenter.org/events/advsem03/ReedOOP.pdf

It only invokes a little issue for me...in OOP classes (concepts) can be grouped together (as member variables) in a new encapsulating class (concept). In this document those class member variables are referred to as the attributes of an entity.

For low level concepts this is pretty basic. A car for instance can be modelled an OOP class with member variables classes like 'tier', 'hood', 'seat', etc. The whole car concept can be composed of more basic concepts. But 'car' is a first level concept, a concept of which every attribute can be seen with the naked eye. Things become more complicated with higher level concepts (In OO programming you arrive at those pretty fast).

Ayn Rand described concept formation as a process in which the particular measurement of entities that can be grouped on the basis of similarities are omitted. The characteristics are maintained and so is the fact that measurement must exist in some quantity. A simple example is colour. There are a lot of colours we refer to as red. But the colour red can actually be defined very specific with a electromagnetic frequency range. We can narrow the frequency range by for instance taking about 'dark red' or widen de range by talking about all visible colours. So the concept formation principle, exemplified by colour, refers basically to categorization.

But what about concepts like 'marriage' or 'polar expedition' or 'social security'. Are those categorizations which are only derivable from reality because they can be differentiated from 'singles', 'jungle expedition' and 'pure self-reliance'?. I am a bit inclined to think that this is not how those concepts have come into existence. I suspect they have been created in the absence of any wider category to differentiate them from. Note that the attributes of these concepts are also part of other concepts. Concepts which are not subcategories of each other. I can for instance be part of a marriage as a husband and past of a company as an employee. This to me seems more a process of concept formation through composition.

In OOP this is done all the time, but I don't know of any objectivist literature discussing this topic.

Anybody any thoughts on this?

Link to post
Share on other sites
Ayn Rand described concept formation as a process in which the particular measurement of entities that can be grouped on the basis of similarities are omitted. The characteristics are maintained and so is the fact that measurement must exist in some quantity. A simple example is colour. There are a lot of colours we refer to as red. But the colour red can actually be defined very specific with a electromagnetic frequency range. We can narrow the frequency range by for instance taking about 'dark red' or widen de range by talking about all visible colours. So the concept formation principle, exemplified by colour, refers basically to categorization.

Color - that being the frequency ranges of light reflected from an object - is a metaphysical attribute. It exists whether or not man is there to perceive it.

But what about concepts like 'marriage' or 'polar expedition' or 'social security'. Are those categorizations which are only derivable from reality because they can be differentiated from 'singles', 'jungle expedition' and 'pure self-reliance'?.

These concepts are man made. They do not derive from and are not a part of metaphysical reality (that which exists, period, regardless of man), they are created by man's mind. They are a part of man-made reality. If you ground up the universe and sifted it, you would never find one atom of "marriage" nor one particle of "social security" (to steal a concept from "Hogfather" by Terry Pratchett). Without man, Marriage, polar expidition, and social security would not exist.

In OOP this is done all the time, but I don't know of any objectivist literature discussing this topic.

Read "Introduction to Objectivist Epistemology" and "Objectivism: The Philosophy of Ayn Rand", with particular attention in the latter to the section on Epistemology.

Link to post
Share on other sites

I absolutely agree. The classes I've taken in Java programming certainly helped me understand the material presented in "Introduction to Objectivist Epistemology". Ayn Rand made numerous analogies between philosophy and computer programming. "Garbage in, garbage out."

Edited by JMartins
Link to post
Share on other sites

Yup, the processes are pretty similar, because one is trying to describe the real world's entities and processes. The was done even before object-orientated approaches, but is more extensive now. An old system -- written in (say) COBOL -- might define structures like "Customer", "Address", etc., and reuse them for various purposes. With the advent of data-bases, particularly RDBMses, methodologies shifted from being focused on process to being focused on data. So, we got things like "Entity Relationship Diagrams". Object-orientation added the ability to have a less flat (more hierarchical) structure. Even before OOPs, people modeled abstractions at multiple levels, but there was no easy way to implement them. OOPs allowed "higher level" abstractions to be implemented, thus increasing their usefulness and their usage.

Most of the time, data/object modellers are not really engaging in concept-formation. They do not often form new concepts in the way one does in natural language. The bulk of the task is about selecting the right concept for their use, and specifying what aspects of the referents they are interested in. For instance, when we model "Customer" or "Employee" or "Vendor", we really deciding what real-world concepts we will use, rather than forming new ones. Next, we might see some commonality between a Customer and a Vendor. We might realize that they can both be "Recipients" for some purpose. Again, we select a pre-existing concept rather than define a new one. Most of modeling is about deciding what pre-existing concepts to use: which level of abstraction is useful to your system, which level can be ignored, what attributes are important and what can be ignored, and so on.

In OOP this is done all the time, but I don't know of any objectivist literature discussing this topic.

Anybody any thoughts on this?

Take one concept from the examples you listed: "marriage". If people were always married and never knew of any other state, I doubt they'd have needed a word for it. Because people can be married that the term "single" is useful, and it is because people can be single that the term "married" is useful. In other words, because there is some difference in the two states, and because we want to distinguish between them, we form two concepts.
Link to post
Share on other sites
Color - that being the frequency ranges of light reflected from an object - is a metaphysical attribute. It exists whether or not man is there to perceive it.

Color and light frequency aren't identical, though. Color is rightfully said to be the *form* of our perception, but it isn't a metaphysical trait, as any color-blind person will tell you. The attributes that act on people's eyes and *produce* the sensation of color are the metaphysical attributes.

Link to post
Share on other sites
Color and light frequency aren't identical, though. Color is rightfully said to be the *form* of our perception, but it isn't a metaphysical trait, as any color-blind person will tell you. The attributes that act on people's eyes and *produce* the sensation of color are the metaphysical attributes.

Sometimes English is very frustrating, in that it's such a contextually based language. I feel for people for whom English *isn't* their native tongue. It's bad enough for those of us who were born to it (so to speak)

Yes, Color is the interpretation of the frequency of light hitting our eyes, but at the same time, the range of frequencies in and around the 700nm range are "red" and the range of frequencies in and around the 500 nm range are "yellow'.

You know sometimes I think if we're ever to achieve understanding we need a much stricter vocabulary where words only have one meaning...but then we'll need to carry around a dictionary with us at all times just to say Good Morning.

Link to post
Share on other sites
These concepts are man made. They do not derive from and are not a part of metaphysical reality (that which exists, period, regardless of man), they are created by man's mind. They are a part of man-made reality. If you ground up the universe and sifted it, you would never find one atom of "marriage" nor one particle of "social security" (to steal a concept from "Hogfather" by Terry Pratchett). Without man, Marriage, polar expidition, and social security would not exist.

When you say 'not derive', and 'without man ..., .., .. would not exist' I hope you don't mean that man could have created those concepts in any other way than from the facts of reality. That's subjectivism, not objectivism. I agree that without man those concepts would not exist, but I think you omit that without the facts of reality they wouldn't either.

Link to post
Share on other sites
Most of the time, data/object modellers are not really engaging in concept-formation. They do not often form new concepts in the way one does in natural language. The bulk of the task is about selecting the right concept for their use, and specifying what aspects of the referents they are interested in. For instance, when we model "Customer" or "Employee" or "Vendor", we really deciding what real-world concepts we will use, rather than forming new ones. Next, we might see some commonality between a Customer and a Vendor. We might realize that they can both be "Recipients" for some purpose. Again, we select a pre-existing concept rather than define a new one. Most of modeling is about deciding what pre-existing concepts to use: which level of abstraction is useful to your system, which level can be ignored, what attributes are important and what can be ignored, and so on.

I agree, most of the time pre-existing concepts are sufficient. But I have also worked on the architecture of an embedded software stack and found myself creating new concepts (maybe someone else had thought them up already some place else, but not to my knowledge). One thing we for instance did was create a new category for software modules in the embedded stack that could be used in different hardware configurations, for different customers without customization. The benefit of this is in configuration management; because the different hardware platforms share the exact same archive, bug fixes or new features only have to be added to one code base. We created a package name for this category and a definition that developers can use to determine whether or not a newly created module should be placed in this new category. This sounds a bit like a library, I know, but I'm talking about bigger chucks with their own processes, like an embedded SQL engine.

Take one concept from the examples you listed: "marriage". If people were always married and never knew of any other state, I doubt they'd have needed a word for it. Because people can be married that the term "single" is useful, and it is because people can be single that the term "married" is useful. In other words, because there is some difference in the two states, and because we want to distinguish between them, we form two concepts.

Marriage is not the same as married. I can be married or single but the concept marriage refers to a legal contract between a man and a woman (at least traditionally ;-). If I would model this in for instance a java class I would have a couple of reference variables one to a man, one to a woman, one to a contract.

the contract itself might be instantiated by a 'usa marriage contract' derived from a super class 'any marriage contract'.

So to me it seems that 'marriage' is a concept created by aggregation of other concepts in a particular configuration and relation to each other.

ayn rand speaks of integration and differentiation, maybe what I am pondering on is an aspect of the integration part...

Link to post
Share on other sites
When you say 'not derive', and 'without man ..., .., .. would not exist' I hope you don't mean that man could have created those concepts in any other way than from the facts of reality. That's subjectivism, not objectivism. I agree that without man those concepts would not exist, but I think you omit that without the facts of reality they wouldn't either.

Yes, but without the facts of reality, neither would man. That which is metaphysically given doesn't depend upon man to exist. That which is created by man does. That's the differentiation I'm trying to make between the two types of concepts.

Edited by softwareNerd
Fixed QUOTE tag
Link to post
Share on other sites
Marriage is not the same as married. ...

... marriage refers to a legal contract between a man and a woman...

True. Marriage is a type of human relationship and includes a type of contract. So, it is differentiated from "friendship" on the one hand and from "lease" on the other.

The type of integration that Rand refers to is this: we look at the legal/romantic relationship between Leslie and Lennie, and the one between John and Jane, and the one between Paul and Paula. We see that there are similarities. That's the integration.

In OOPS terms, the "class" is an integration of all the particular "instances" of that class.

To put it more precisely: before you decided on defining a particular class, you were looking at the instances; you saw the similarities and decided that those instance shared enough similarities even if the specific values of certain attributes was different. That was the process of integration. You also saw that instances U1, U2, U3 (all marriages) had certain "special similarities" compared to certain other instances of marriage: C1, C2, and C3. So, you differentiated between these two sets. You performed two new integrations: U1, U2 and U3 became "MarriageUSA" and C1, C2 and C3 became "MarriageCanada" and you integrated those two into a super-class: "Marriage".

Edited by softwareNerd
Link to post
Share on other sites

softwareNerd, I like this clear compact description of integration/differentiation. But would you go so far as to say that every integration is done using this rather observatory system of looking at existing particular instances?. I'm not convinced that for instance the concept of marriage was derived from existing instances of legal/romantic relationships. I think the concept of marriage had to be created before those individuals you mention could be married in the first place.

Link to post
Share on other sites
I think the concept of marriage had to be created before those individuals you mention could be married in the first place.
I doubt this was the case for marriage, but I agree it can be the case in general. One can imagine a certain type of contract, and give it a name in law, and only then does one have instance of that contract.

This does not change the basic nature of a concept or the nature of concept-formation. The difference here is whether the units are real of imaginary.

Link to post
Share on other sites
softwareNerd, I like this clear compact description of integration/differentiation. But would you go so far as to say that every integration is done using this rather observatory system of looking at existing particular instances?. I'm not convinced that for instance the concept of marriage was derived from existing instances of legal/romantic relationships. I think the concept of marriage had to be created before those individuals you mention could be married in the first place.

The key factor is that concepts have to be tied down to real existents. The chronolgical order of conceptual link discovery is undoubtedly very important, but that's still less important than making sure that the concretizations are reality-bound. Therefore, there ultimately has to be a basis in observation for concepts.

For example, it's unlikely that the development of programming objects would have occurred without the development of programming pointers, but my point is that pointers _had_ to work in theory and in practice first if objects were to be developed in the way which they were.

Again, I suppose that someone could have developed the object concept using tables instead of tree hierarchies, but (at least in retrospect) it seems unlikely that that would happen back in the mid-1980's. Interestingly, Lua _is_ table-based, and it's apparently favored by quite a few game designers too. (Gotta love how the semi-free-market allows for new paradigms to be developed! :lol: )

Link to post
Share on other sites
  • 2 weeks later...
Again, I suppose that someone could have developed the object concept using tables instead of tree hierarchies, but (at least in retrospect) it seems unlikely that that would happen back in the mid-1980's. Interestingly, Lua _is_ table-based, and it's apparently favored by quite a few game designers too. (Gotta love how the semi-free-market allows for new paradigms to be developed! :) )

funny you mention tables, Ayn Rand wrote about the fundamental characteristic, which explains the greatest number of other distinctive characteristics being the proper defining characteristic. She wrote about this in the context of making definitions.

I have very strong associations with the primary key of a relational database table with this. the column holding the primary key is like the CCD, the primary key like the distinguishing characteristic. The other fields in the table, which you select via the primary key are like those other characteristics being explained.

Link to post
Share on other sites

and now for some wild thinking :)

the paper I posted speaks of the CCD being like a java interface. An interface can only contain functions, so where is the distinguishing characteristic?

If I would map this into a table I would have to place function references into columns, one column for each function in the interface. The type of each column would have to be a function definition (not possible in current relational databases).

So the distinguishing characteristics for each object would become the actual function references placed in a table row....

Link to post
Share on other sites
  • 11 months later...

*** Mod's note: Merged thread. -sN ***

Did Rand ever discuss the obvious similarities between her epistemology and Object Oriented Programming? (which was developed in the '60s and early '70s, and is very much Aristotelian: each action is caused by the nature of the object performing the action, and is molded after the human view of reality--there are a lot more similarities, in fact, that are intentionally designed to "copy" the functioning of human concept formation)

Also, on a separate note, did she comment on all the talk about Artificial Intelligence, the Turing Machine, etc, which have obvious philosophical implications?

Edited by softwareNerd
merged topics
Link to post
Share on other sites
Did Rand ever discuss the obvious similarities between her epistemology and Object Oriented Programming? (which was developed in the '60s and early '70s, and is very much Aristotelian: each action is caused by the nature of the object performing the action, and is molded after the human view of reality--there are a lot more similarities, in fact, that are intentionally designed to "copy" the functioning of human concept formation)

Also, on a separate note, did she comment on all the talk about Artificial Intelligence, the Turing Machine, etc, which have obvious philosophical implications?

A snipped from the history of OOP:

The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67.[1] Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte magazine.

(excerpted from the Wiki article on OOP).

OOP did not become generally known until the early 80s. Ayn Rand wrote most of her non-fiction monographs and articles in the late 60's and early 70's She died in 1982 and had not been active for several years. So it is highly unlikely that Ayn Rand was aware of such a development in computer software, and it is even less likely that she knew any details concerning computer software.

Bob Kolker

Link to post
Share on other sites
Did Rand ever discuss the obvious similarities between her epistemology and Object Oriented Programming? (which was developed in the '60s and early '70s, and is very much Aristotelian: each action is caused by the nature of the object performing the action, and is molded after the human view of reality--there are a lot more similarities, in fact, that are intentionally designed to "copy" the functioning of human concept formation)

Also, on a separate note, did she comment on all the talk about Artificial Intelligence, the Turing Machine, etc, which have obvious philosophical implications?

Ayn Rand's philosophy is what influenced OO Programming.

Here, check this link out

http://forum.ObjectivismOnline.com/index.p...aded&start=

Link to post
Share on other sites

Oh, yeah, there's a link to it in Thales's thread: http://www.objectivistcenter.org/events/advsem03/ReedOOP.pdf.

I'm not sure what should happen with my thread, I haven't seen the old one when I made it. I am though more interested in specific things Rand had to say about the subjects (if anything), and a discussion of those. If there isn't anything, i guess there's no reason for this new thread.

As far as your link to Grady Booch, the problem is that OOP was in place (with the language the ReedOOP PDF mentions -- Smalltalk), before Mr. Booch even went to college. So sure, he's a fan of Rand's, but according to the PDF (which talks to them directly), the people who created Smalltalk never heard of her, they were influenced by a couple of guys who were looking at epistemology from the perspective of cognitive psychology.

Edited by Jake_Ellison
Link to post
Share on other sites
Oh, yeah, there's a link to it in Thales's thread: http://www.objectivistcenter.org/events/advsem03/ReedOOP.pdf.

I'm not sure what should happen with my thread, I haven't seen the old one when I made it. I am though more interested in specific things Rand had to say about the subjects (if anything), and a discussion of those. If there isn't anything, i guess there's no reason for this new thread.

As far as your link to Grady Booch, the problem is that OOP was in place (with the language the ReedOOP PDF mentions -- Smalltalk), before Mr. Booch even went to college. So sure, he's a fan of Rand's, but according to the PDF (which talks to them directly), the people who created Smalltalk never heard of her, they were influenced by a couple of guys who were looking at epistemology from the perspective of cognitive psychology.

Ayn Rand's work was published as a series of articles in "The Objectivist" from 1966 through 1967, before it was published as the book "Introduction to Objectivist Epistemology".

Edited by Thales
Link to post
Share on other sites

Just to make it clear, there are also very big differences between the two. Ayn Rand's method refers to how the human mind acquires knowledge via concept formation, from sense data, to perception and then concepts.

Her idea of "measurement omission" is no where in OO, nor is her idea that the concept "unit" is a bridge between the epistemological and metaphysical "units are things viewed by a consciousness in certain existing relationships." And there are many more fundamental differences, not the least of which is that Ayn Rand's work is far deeper and more revolutionary.

Also, Object Oriented Modeling is more of a top down approach, where you create the object type first, and from the object you generate instances. In a way it's more of a Platonic idea.

Link to post
Share on other sites
Ayn Rand's work was published as a series of articles in "The Objectivist" from 1966 through 1967, before it was published as the book "Introduction to Objectivist Epistemology".

Yes, but the guys who built Smalltalk specifically sayd they didn't read that stuff, at the time.

John, the threads got merged after Thales's post.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...