OOP and the Problem of Universals
Following on from the previous post on Plato's allegory of the cave, I thought I'd dig a little deeper into the whole notion of the morphological realm -- the realm of forms -- in particular the so-called "problem of universals," the question curiously belaboured through the history of philosophy as to whether types like "human," properties like "redness," or relations like "fatherhood" actually exist. These are referred to as universals, dig, seen as a type of abstract object. For statements about such things to have meaning, so the question goes, doesn't there have to be some thing we're talking about? A thing what exists?
No, really. This is a "problem." Not only have people seriously debated this over the centuries, but a substantial number of them have come down on the side of "yes."
But here's the thing. The "problem of universals" don't amount to a hill of beans if we see that such abstract objects are really a matter of isomorphic relationships -- as the division of universals into types, properties and relations should likely make blindingly obvious to anyone familiar with the class structures of Object-Oriented Programming. For those who aren't so familiar, in OOP as I learned it, one defines a class with a name, a set of attributes (qualities an object of that class will have) and a set of methods (actions an object of that class can perform). A program designed by OOP principles is mostly going to be designed by defining in code a whole system of these classes (i.e. types) by their attributes (i.e. properties) and methods (i.e. the procedures of interaction, the ways an object of that class can potentially relate to other objects.) Simple, right?
To give an example, a crude CHuman class, say, to use a typical naming convention could be defined in code with attributes to be set in any object of that class -- e.g. Gender, DOB, Name -- and methods that could be called in any object of that class -- e.g. Feed(), Fight(), Fuck().
So, as a mate I studied with at uni clicked to the underlying notion of classes and objects by seeing it as an analogue of Platonic forms, I thought we might reverse the polarity, clarify the notion of Platonic forms by reference to OOP principles. Don't worry; I'm not going to go into any more coding theory detail than that, because this is all you need to know, really. If you want to do something in an OOP program, the point is, you instantiate an object of a class, set its attributes, and when the time comes, call a method.
Create objHuman as New CHuman
objHuman.Name = "Hal"
As the program runs, objects of this or that class are instantiated, their attributes are set and their methods are called and, hey presto, you have a bunch of stuff going on that involves types, properties and relations. That is to say, there's all these little objects of the CHuman class going about their business -- objHuman, objHuman2, objHuman3 -- and they all have the same sets of properties but with different values, and the same sets of capacities to do X, Y or Z to each other -- and to thereby be in certain relations to each other. Types, properties and relations. Universals.
Existence as Actual Instantiation
If you're now suddenly feeling thrown into a philosophical tizzy over whether these universals therefore "exist"... dude, generally existence would mean, in common parlance, instantiation in material spatiotemporal reality. The test of whether something exists or not comes down to taking the particular notion of a something you have and seeing if there's a fit within that frame of events within which things get to be called actual rather than potential -- within reality, dig? It's about instantiation: to ask if such-and-such exists is to ask if (at least one of) it is actual, if there's an instance manifest. And it's about the frame of events we call reality because those events are, yanno, actual: it's asking if there's an object of the CHuman class instantiated in this program as it's running right fucking now.
(Fictional or metaphysical "existence"? Different frame of events, mate. But we'll come to that.)
The point is, taking the ongoing activity of an OOP program being run as the frame of events wherein OOP objects are instantiated, classes are not part of that process by definition: to exist means to be instantiated as an object; to talk of an instantiated class is to talk of an object. The nearest you get to a class existing in that running program is if the class CHuman has a method Analyse(), if calling that method on an object -- objHuman.Analyse() -- causes it to monitor the state of the system, analyse the ongoing processes, and spit out an object of the class CClass. An instantiated object. An articulation in that electronic media.
Within that flux of activity, sure, the use of class-structure does mean that types, properties and relations are discernible. And if we can classify the existential objects, analyse them in those terms, theoretically we could design a method whereby an object of the CHuman class could do that too. But objHuman's analysis is going to be producing models of the system -- specific, individual models of the system. Figurations. Fictions.
This is where the philosophers seem to get flustered over fictions, because we can talk about the articulation itself existing in material spatiotemporal reality, and we can talk about instantiation within a narrative. But when we talk about unicorns "existing" in one story and "not existing" in another, there's a reason we use the word "in" there: we're explicitly specifying a whole other frame of events which is always already non-existential -- the simulated virtuality of the narrative as it's running. Just like our OOP program instantiates an objHuman in its flux of electronic activity, a story instantiates an objUnicorn in your mindthoughts. Big fucking deal. It's still virtuality versus actuality.
Existence is actual instantiation. Virtual instantiation is only pseudo-existence. Problem solved.
Actual Instantiation as Substantiation
Anyways, in the flux of activity, an objHuman is instantiated, objHuman.Analyse() is called, and this little virtual philosopher processes away until it spits out an object, naming it, adding attributes and methods as required. Our little virtual philosopher, objHuman, creates a class in OOP terms, just like the coder in reality created the class CHuman. The existence objHuman has given to that class is that of an articulation though, of a unit of code scribbled on one form of notebook or typed into another. That's a class that can be edited, redefined, scrapped because it's really just an articulation. Really, one might be better off saying that it's not "creating" a class at all, but rather identifying a class and creating a figuration of it. The class CClass is really CClassFiguration. Instantiated objects of that class are really class-figurations, models of classes, classifications of other objects.
An example, to show why this is relevant: That objHuman's Analyse() method might come up with a CPerson class-figuration in its study of the system, assign it attributes -- Gender, Age, ID -- and methods -- Eat(), Kill(), Shag() -- that are comparable but... just a little off. Age is an integer value, less precise than a calculation made from DOB. The Kill() method doesn't jump out of the loop when the enemy is beaten, keeps going until they're frickin squishted. In so far as objHuman is trying to model itself here, the point is, it's really going to want a Test() method too, one which takes that CPerson class-figuration and looks for instances of it in the system. Does an object of the CPerson class exist? That's what matters here. That's what the notion of existence is all about, baby -- whether or not the morphology outlined is manifest in the real, actual substance of the real, actual system.
Scale up the complexity of the program to that of a cosmos, and dump us in it as objects instantiated in that flux of activity. We're all objHumans with our Analyse() methods running, looking at that flux, discerning isomorphic relationships between objects: can they be taxonomised to a type, with common properties, common relations? We build models of theoretical class-structures in sundry media (including imagination), articulations, configurations of stuff. Unlike coders though, we're working a posteriori rather than a priori, modelling from reality rather than designing from scratch, so any types, properties and relations we come up with are as speculative as CPerson. And the crunch question is always whether the models are relevant. They exist as models in media. That much we know. But that's of sod all import if the imaginary architectures aren't instantiated in the real, actual substance of the real, actual system.
So existence really becomes about substantiation, with the word working neatly both ways: on the one hand, we can look at the instantiation of objHuman within the OOP program as it's running, within that frame of events, that flux of activity, as an object of the prescriptive class-figuration CHuman being substantiated via the process of actual instantiation; on the other hand, we can look at the descriptive class-figuration CPerson being substantiated (or not) via the finding of actual instantiation (or not) by the Test() method.
This is where we get to the root of the so-called "problem of universals" -- the tosh and poppycock of metaphysical "existence." Some people seem to be dissatisfied with simply claiming that their unsubstantiated descriptive class-structures are, in fact, substantiated. They want to claim that all which is substantiated is the product of their unsubstantiated prescriptive class-structures -- which must therefore be substantial in some way in order to bring their sundry instances into existence.
Substance and Essence
Let's start by admitting one very simple fact: the descriptive class-figurations we've come up with over the history of all humanity all remain pretty fucking speculative. Our Analyse() method is as liable to come up with bullshit like the Kill() method as that of objHuman. We too could be failing to glean the potential of kicking out of the loop before the enemy is squishted -- or making some equivalent error in any and all methods. Our Test() method never returns a simple yes when we seek to substantiate the CPerson class-figuration we've come up with, only a no or a maybe -- the latter because in black-box retro-engineering attributes and methods from observed activity, we cannot know if we're not modelling an as-yet unobserved attribute, method or potential outcome of a method.
Worse, some of the most basic and fundamental class-figurations we've found workable are wholly at odds with each other such that we have multiple conflicting class-structures of varying levels of coherence and relevance. When it comes down to it, we're stuck with a reality of photonic activity that we describe in terms of objects of two wholly different classes -- particles and waves. And that's with class-figurations thrashed out with the formal precision of physics and maths. As it is, we're working with types like "wing" applied to bird, bat, beetle, butterfly and fricking airplane. As imaginary architecture goes, our classes are so cursive, they're more like cubist collage than basic blueprints. And we're supposed to be worried about the problem of universals, whether the often wildly theoretical relationships of isomorphism we reckon we can see between instantiated objects are somehow instantiated objects in and of themselves?
Even if we were spot-on in setting out a class CPhoton with its attributes and methods, that would still just be the non-existential model applicable to all instances of that class, all individual photons. Does a class CWing exist in and of itself, not via instantiation in concrete objects, but as an instantiated "abstract object," a universal? Man, I'm baffled as to why anyone has ever asked that, let alone answered in the affirmative. Apply the notion of substantiation to this question and it starts to look frankly bizarre.
Do universals exist? Are these abstract objects somehow actually instantiated?
Wait. Basically you're asking if these instances of class-figuration objects we churn out don't just accurately describe multiple substantiated objects of this or that class, but if they each also accurately describe a singular object that is the class itself, actually instantiated but without the values of its attributes set, its methods never called, and not manifest as material, spatiotemporal, concrete object but as immaterial, supra-spatiotemporal, abstract object. You're looking to substantiate a non-substantiated object as not actually instantiated in the medium but nonetheless "existing."
Huh? What medium do you think they're instantiated in then? Ectoplasm or aether?
Seriously, where we're talking about manifestation of an immaterial nature, objects actually instantiated but not in the medium of your normal concrete objects, and somehow transcending spatiotemporal reality, we have entered the conflation of substance and essence that is fucking spirtualism.
Persistence as Potentia
This is a Platonic muddling of existence and persistence, one which survives even up to Penrose, who assigns to mathematical objects (i.e. modeled relationships) the self-contradiction of a "timeless existence." Timeless, yes, but when you're dealing with the phasespace of all possible morphology, when you've dropped the whole crude taxonomic approach of lumping and labeling stuff as doohickeys, widgets and kipple, started dealing with the basic relational architecture of all possible configurations, what you're talking of is only the persistence that comes of being not a form but the very framework of potentialities of form. The potentials of form persist precisely because the uninstantiated/unsubstantiated cannot be destroyed; if it doesn't exist, its existence can't be stopped. The spherical zone I'm imagining in the centre of my room as simply that -- a zone within that physical phasespace of potential -- that zone of potential was always already there as part of the framework. It persists whether I think of it or not. But it doesn't exist as an object because it's pure potentia, not an actual thing.
Now, taking the CHuman class-figuration designed by our hypothetical OOP coder as analogy, the Realist (an ironic name if ever there was one) might point to how this class-figuration is installed in a library to be used by the program as it runs. The class-figuration is never instantiated as a singular object that is the class itself in the running of the program, but that template does exist in the computer's memory. Even in the library, it's not actually the class itself as abstract object, but rather a concrete class-figuration object. But this is simply their argument, they might say -- that there are class-structures which have such a concrete manifestation but in a non-substantial way because they are not part of the flux of activity. They are outside our frame of events, but can nonetheless be said to exist -- in some eternal hyperreality that is analogue to the class library, a Platonic morphological realm.
This is sophistry though, if we accept existence in this context to mean actual instantiation, to mean the reality of substantiation; it's twisting the meaning of "exist" to disguise the fact that such class-structures would only truly persist. Such templates would be static, inactive, non-actual. The library would not constitute a reality, hyper or otherwise, no more than a class library constitutes an instance of a program running. The word "realm" is no more applicable here than it is to a shopping list. And given the universals we tend to be dealing with -- not just "triangle" but "wing" -- the essentialism smacks not just of sophistry but of spiritualism. Because for all the talk of "abstract objects," really we're just talking about a different type of concrete object, a different type of substance.
This is a failure to think in abstract terms. It's an incapacity to sustain the notion of isomorphic relationships as just that, an incapacity to hold the notion of class-structure as pure potentia without projecting into that notion some stuff which is configured into said structure. It's like not being able to imagine a spherical zone in the centre of one's room without believing that you have, by that action, brought into being a bubble made of mindthought. It "exists," see, that sphere, as an abstract object. It's not made of substance but abstractity... or something.
Universals as abstract objects, as things which exist -- are actually instantiated -- but in some eternal rather than spatiotemporal way, which are not made of material substance but are nevertheless not just potentialities but actualities, manifest in some incorporeal medium of pure essence. To me, this sounds awfully like a fantasy of our reality unfleshed, reimagined with spirit in place of substance, a shallowly concrete mode of thinking which presents itself as concerned with what really matters -- the universal rather than the particular -- but which is fundamentally locked into the very materialism it casts itself as transcending.
This Platonic morphological realm, this realm of forms... look at how it's cast. A spatial realm. Of persistence through time -- the eternal still temporal, just not awkwardly temporary. Forms perfected by abstraction out of base matter, instantiated in some medium, not messy muddy existential things, but the essences of things, the quintessential distillates of things, the spirits embodied-in-the-flesh of things. And look at what the philosophers place there -- these types, attributes and relations. "Human," "redness," "fatherhood." Fuck knows, it might as well be "the stinkitude of the shit I had last Tuesday".
I'm serious. If "wing" is an eternal form rather than just "limb," "limb" an eternal form rather than just "appendage," presumably the sub-classes of "bird-wing" and "bat-wing" are there too, on their respective Platonic forms of "bird" and "bat". Presumably all different sub-classes of creature are there, all species of bird, all types of human -- the Platonic form of "coder," "writer," what have you, of every type of writer of every type of fiction. Presumably, what with the uniqueness of DNA, the Platonic form of you can be found here too, all the flaws of ephemeral mortality stripped away to leave only the pure essence of you-ness. Lying back on the Platonic form of your bed, fiddling with the Platonic form of your cock, giving yourself the Platonic form of an orgasm... in this oh so "non"-existential, "non"-substantial, "non"-spatiotemporal realm.
Sounds like fucking Heaven, no?
No, I don't really see the problem of universals, I have to say. It takes very little effort for me, indeed, not to wrack my brain over the question of whether there's a mysterious higher level of reality where everything's made of wispy shimmery magic mindthoughts!