I first heard the term ‘object-oriented’ used beyond the context of computer programming in relation to the rhetoric of promoting an on-line learning initiative. Structured as discrete modular bundles, the various learning activities were said to adopt an ‘object-oriented’ approach. The implication is that learning can somehow be assembled from a set of isolated entities – promulgating a kind of Lego-style conception of learning. Not that this may not prove useful in many cases, but it would certainly seem to bracket more holistic approaches. Whereas the latter tend to insist upon bringing things into relation – discovering points of conflict, dialogue and exchange – the former conceives learning in a more discrete, summative fashion. The notion of ‘object-oriented learning’ seemed to me not only naive but also indicative of an impoverished conception of education. Furthermore, it seemed duplicitous – drawing upon the technical language of computer programming to project a dubious symmetry between dimensions of technological and pedagogical novelty.
Perhaps because of this, when I encountered the notion of ‘object-oriented philosophy’, I had a similar sense of misgiving. I am happy to embrace object-oriented programming (OOP) within my software development practice, but suspicious of its wider metaphoric extension, particularly when little effort is to made to explicate its sense within programming. No time to pursue this adequately here, but OOP appears as a reaction to imperative-procedural styles of programming that work to neatly segregate data and algorithms. OOP combines data and algorithms into higher-level abstractions that combine both attributes (data states) and algorithmic processes. These so-called ‘classes’ are then instantiated as actual objects in memory at run-time. The classes are not natural things, but representations of fundamental conceptual units within an overall software process. They are very much artificial constructs – inventions. Confronted with a specific problem, any two programmers are likely to conceive a different OOP solution. Indeed it is quite common for a single programmer to re-conceive, modify and re-articulate their own OOP systems when they return to a given problem. To repeat, OOP programming provides a means of conceiving a process space in terms of a set of modular interactions between logically discrete entities. The various classes extrapolate the essential attributes (data) and capacities (algorithms) of particular entities, as well, very importantly, as establishing protocols for interaction between entities. Classes are explicitly and deliberately simplifications. They act as logical blueprints for the run-time generation of specific objects. The object represents the particular, while the class represents the generative abstraction. Both class and object are conceived as black boxes. The aim is to shape code entities that have predictable public interfaces to predictable but safely autonomous internal attributes and behaviours. Here autonomy has a logical rather than a strictly material-existential dimension. A legal conception of public, private and protected access structures the autonomy of individual classes/objects.
Despite my sense that a fuller examination of the relationship between OOP and recent philosophical conceptions of object-oriented philosophy is necessary, I have come to recognise that there is an important sense of metaphoric relevance. I am thinking specifically, of course, of Graham Harman’s conception of object-oriented philosophy1, where he defends the notion of the object from those who would either figure it as entirely projective (ideal-phenomenological) entity, or as a naive macro-level construct (everything is created of smaller things – atoms, particles, quarks), or as an illusion that dissolves before the sense of fundamental relational or dynamic-emergent identity. Harman defends the reality, autonomy and possibility of the object from all of these notable points of philosophical attack. At the most simple level then, Harman and OOP share a fundamental concern to conceive the world in terms of the notion and potential of discrete objects.
I certainly can’t claim to adequately engage with Harman’s ideas, but here, in the midst of trying to understand what he is getting at, I just want to express some provisional, no doubt simple-minded, doubts – if only as a means of clarifying the issues for myself. No time to write this up properly. Just some minimal points.
Is it possible to conceive the object without the necessity of a subject? Without the pairing of subject and object? Wouldn’t it be better to describe the object in other terms to avoid this awkward conceptual and connotative space? Objects, objectivity, etc. This is perhaps intended as a provocation, but not sure that it is a helpful one.
The notion of object suggest the problem of determining boundaries. The stream behind our house is named Byarong Creek. If you tell me to walk down to the creek, I know where to go. I know how to cross it. I know how it increases to a dangerous torrent during rain. But then again, what is the creek precisely? What are its limits. Is it just the obvious banks? Wouldn’t you have to extend outwards (certainly during rain) to include the innumerable little trickles of water that flow off roofs, gutters and leaves and across the ground to flow into the creek ‘proper’? Is the creek the entire catchment area that extends beyond the suburbs up the nearby hillsides to the escarpment? In notionally restricting the creek to just its conventional boundaries, don’t I plainly indicate that objects have a projective status, that they simplify phenomena? Now I know that Harman would acknowledge that all perception of objects simplifies them, that they have a veiled complexity that inevitably withdraws from any notion of fully adequate appearance, but then what is it that enables the objects boundaries to appear, to take coherent shape?
There is also the issue of temporal boundaries. All objects are mortal – although I doubt Harman would agree with this. Let my qualify, all material entities are mortal. They come into existence and pass out of existence again. The plastic keyboard that I am currently typing on is all the time exhaling mildly toxic plastic fumes. It seems utterly autonomous and integral, but is necessarily in a constant relation of exchange with its environment. Once again, its boundaries are not inviolable, and its coming into existence and passage out of coherent existence are demonstration of this wider material relation to the world. The reality of an object can only withdraw so much. This withdrawal is always provisional and contingent. Objects do not appear to me as monads. Here the apparently reductive tendency of the natural sciences to render everything in terms of their underlying constituent features serves an important purpose. It manifests a crucial material terrain of interaction, of the passage beyond dimensions of apparent or metaphysically determined autonomy.
Then, of course, there is the obvious problem of scale. Objects only appear at specific scales. A grain of sand only appears when you are not looking at the entire beach. Skin only appears as smooth sheath when you are not closely examining the pores. In this sense, objects only gain coherent determination when viewed at specific scales under specific conditions. This is not to say that matter and entities do not exist independently of our perception of them, just that they don’t take shape as coherent objects until the requisite conditions of autonomous coherence are defined and met.
Note to self: need to consider more carefully the relevance of considering object-oriented philosophy in terms of the model of OOP…(read Bogost properly2).
I wholeheartedly agree. Makes me think that Object Orientation fits Heidegger’s framing of ‘technology’ in the sense that encapsulating the real-world into “objects” inevitably causes certain things to be highlighted and certain other things to be hidden.
Even in the world of programming the inflexibilities of OO have given rise to new languages such as Ruby. The principle advantage of Ruby over Java is precisely that it allows you all sorts of ‘escapes’ from the rigidity of a certain object orientation. This means that the developer can cater for one-off cases which simply don’t warrant re-designing the object. In a way it is the admission of the fallacy of OO: it is utopic. (well, thinking that OO design can adequately represent the real world is utopic).
Ruby incorporates multiple programming paradigms: OO, functional, imperative, reflective. I wonder what kind of light could be thrown by the appropriation of Ruby’s philosophy onto the OO encapsulation of philosophy.