Re: Thinking about objects
Posted: Jan 7, 2005 4:16 AM
I've been doing some thinking about objects recently
I, at least, need to be reminded about the basics every now and then, and think about what I do without thinking about it
I want to ask the question of whether objects are something that we can believe in without believing in the objects of a particular kind expressed in a particular language, or if there is something more abstract about objects.
While reading your post, I was struck by the similarity of the concepts you discuss to those dealt with in Structural Linguistics (and Structuralist philosophy generally). I refer specifically to the distinction between signifier and signified, which refer respectively to the concrete encoding of a sign and the abstract concept encoded by the sign. For example, the letters: r-o-c-k make up the signifier, while the concept rock is signified (an actual rock, as distinct from the concept of a rock, is sometimes denoted by a third term, the referent). Its noteworthy that, while the phonemes that sound out the word rock and the letters that spell this word are different encodings (signifiers) of the same sign, the words rock and stone are completely different signs, albeit with the same referent.
Im going into these terms because they correspond to concepts in the Object-Oriented paradigm, and I believe the conclusions of Structuralism have a direct bearing on the issues you raise. The OO concept corresponding to the signifier is the Object which is a concrete instance, and that corresponding to the signified is the Class which is an abstract definition. Now, its clear that instances of objects, like the signifiers of signs, are completely platform/language-dependent, because they are concrete encodings. Whats less clear, and what seems to be the intent of your post, is whether the class of objects is language-independent or not.
In your post, you mention translation problems as evidence for language-dependence:
Now, in what sense are Java objects the same as C++ objects? There is the conceptual similarities (both are abstractions of state, allowing polymorphic typing, etc.) but they are very hard to translate from one idiom to the other. This is something that becomes most clear when one gets asked (generally by a manager) to "translate" a program written in C++ into the Java language. Even though these two languages are both concerned with objects, there is no real sense in which one can translate a program written in one into a program written in the other; at best one can write a new program that does the same things in the new language. But this isn't translation, this is writing a new program.
In response to this, I have to ask how the creative element in translation from C++ to Java would differ from the creative effort needed to translate, e.g., a document from English to French? To say that production of a text in language B, based on and with the same information content as a text in language A, is not translation, is to violate the meaning of the word. Certainly, a mechanical translation, as in an XSLT transform, is a trivial exercise of the translators art. In general, the more dissimilar languages A and B, the greater the creative effort necessary to retain the original meaning in translation.
Returning to the concepts of Linguistics, we find that languages differ not only as to the particular signs making up the languages, but also as to the rules governing semantic and grammatical relationships between signs. Nevertheless, all languages are made up of signs, and there exist paradigmatic and syntagmatic rules governing all languages. These meta-linguistic rules are what enable the Semiotician to speak of the meaning and behavior of signs in general, without reference to specific signs in any particular language.
Similarly, the meta-linguistic properties of objects allow us to speak of objects in abstraction from any specific language. Inheritance corresponds to the Semiotic concept of paradigms (which differs, obviously, from the Khunian sense of the word), while collaboration corresponds to the syntagmatic dimension of language. Naturally, the rules governing inheritance and collaboration will vary from one programming language (or language group) to another, just as they do among human languages. Nevertheless, the universal presence of some such set of rules means that objects have a very real and definite abstract meaning.
Now, Ill grant you, thinking about objects as having a language-independent reality on this level of abstraction is probably not what you want. All well and good that objects can exist on this rarified level, but what we want is to be able to work with them. But naturally, to use objects, we would have to define rules governing their interactions. But, since a set of rules governing the interactions between signs is the very definition of a language, it is not only impossible, but inconceivable that we might have a language-independent way of using objects.