Desire-Oriented Programming (Initial Treatment, 2008) Vers. .45 outline
Software ontologies and object-oriented programming both focus on taxonomies and objects to structure software, but what if a motivation of such a focus was to construct a virtual field of desire rather than to simply build an expert system or business logic? Even with technologies such as aspect-oriented programming, which are spread on top of worlds created by OOP, these alternatives only cut into the monumental objects of OOP, as perfunctory verbs.
Indeed, the developer impulse to crystalize software in objects is willed by an underlying cathexis connecting together concrete relations in memory. While historically OOP arises from a need to ensure quality control and prevent software defects, that a highly representational apparatus has accomplished this control says something about human needs to create runtime humanities through tiny, modular simulacra. The classification de l'homme, based upon mental mappings applied to objects in a programming model or architecture, necessitates foregrounding not only the minds from which hierarchical system architectures proceed, but human and non-human desire. In being critically conscious of the connection of representational objects to the taxonomic imagination, the code theorist may then focus on object-building as a set of practices embedded in the unconscious mind and seeping into places formerly reserved only for non-human artifacts.
Object-oriented programming has always provided a simple interpretive test by which to organize classes and objects into two highly abstract ontological roles, that of inheritance and association: how a class or object shares an identity with a super-type, or how a class or object “possesses” another class or object, relations collectively qualified as ‘is a’ or ‘has a’ relations. In addition, the runtime mise en scene of these relations tells its developer not only about identity and possession, but also tell her something about the continuity or contiguity of an object or class in question.
For object-orientation, while following a failure of objects in modern philosophy, also provides the philosophical substrate from which the component view of the universe may be redeemed in a relational one. For an object to be continuous with itself implies that this continuity is a relation of identity. For an object to be a container having sub-entities that are not of this container’s type or that are different instances of its type grouped contiguously within it, implies a relation of possession, or of cathexis, possibly a relation of the containing class to an object of desire.
What then, is the passage by which these constructs in object-oriented programming readily move into the representative classics of the theory of desire, namely Freudian, Lacanian, and Deleuzian notions – and beyond?
Inheritance relations in object-oriented programming reflect the parent-child commerce between possession and identity that Freud articulates in his The Ego and the Id and General Psychological theory.
Executable text is a two-sided Lacanian technological mirror confronted by the desiring body of the programmer that presupposes a gap or ‘lack’ between the signified of runtime and the signifier of raw data.
Alternatives to inheritance in programming are Deleuzian ‘écarts’ away from Freud and Lacan, showing how greatly tied to hierarchy and classification are the analytical constructs of identity and possession, which are, in psychoanalysis proper, instruments of symbolic domination. Painting desiring production as the antithetical image of the ‘daddy-mommy-me’ relation of Freudian psychoanalysis, Deleuze enables the philosophy of networked and non-hierarchical software architectures in the figure of the rhizome.
The concept of polymorphism, which has classically been an effect of runtime type- casting, is a rhizomatic pathway, a ‘chemin’ by which the ultimatum between identity and possession can be inverted, or more importantly, can be folded over onto itself to give an object entity or class entity the properties of identity and possession simultaneously.
Conventions of object oriented programming also move quite easily into the proto-psychology of 18th century natural science, namely Buffon’s imagistic portrait of an Adam or golem acquiring sensation, or Condillac’s statue going from possessing only the sense of smell (l’Odorat) to possessing all five senses.
It is in going back to the 18th century that one is allowed to paradoxically map desire in programming to newer developments in object-oriented languages, such as interfaces used as an alternative to inheritance, and more importantly the use of generics, as in the Java Programming language.
The ontological problem of Condillac and Buffon is how sensation, which is like an economic capital undergoing conversion, can be imprinted on the folds of the brain, a quasi-infinite wax for the storage of instructions, executable as human action once these instructions are persisted to the ‘store’. Buffon's Histoire naturelle vol. II, in its discourse on l’homme, brings us to a being of clay, the moule intérieur (internal mold), which gradually puts the seeming whole of its being for its originary part. And so in Buffon’s image of Adam we have memory finally properly encoded as instructions, analogous to the way in which Java generics allow us to verify, prior to runtime, whether instructions or code will execute without memory leaks. The Adamic ‘first’ statue persists its instructions as memory, but launches these instructions into runtime with full polymorphism of identity and cathexis, but also desiring production up against the body without organs. Let us trace each paragraph in Buffon’s digression: