Saturday, June 9, 2018

The Ontology of a Java Program

To someone who cannot let go of the physical world, ontology is an odd subject. It is the philosophical study within the branch of metaphysics that deals with the nature of being. Or as Wikipedia says, "Ontology is the philosophical study of the nature of being, becoming, existence, or reality, as well as the basic categories of being and their relations." But for my purposes I will go no further than to talk about objects and their existence.

For anyone immersed in the objects relations school of computer programming objects is a weighted term. And it is exactly that overtone I wish to look at. But let me take one step back for a moment and observe that until one has successfully strung together a file of symbols that will pass a Java compiler, there is not yet a software module. The moment the compiler first accepts that text file and generates a byte code file, a new module is brought into existence in that file namespace. It has been summoned into existence.

The object-relations school of thought looks at a software module as an object that possesses attributes and behaviors. The byte code object can be copied, moved, executed and deleted (destroyed). Yet does the byte code file have any behaviors? Does any purely descriptive object be said to exhibit any behavior? I am going to say no. But of course the purpose of a byte code file is not to merely exist like some artifact lost in the desert of a file system. It is the essence that imparts some special magic into the machine with a Java Virtual Machine (JVM) running on it which will take that descriptive text and use it to create objects within the memory of that computer. And the original intent of the creator was that this object in the machines memory takes over the capabilities of this machine in a virus like way and bends it to the hidden will of the creator. It transmits the design of a virtual machine to this physical machine and then

 Computer Science is no more about computer than Astrophysics is about telescopes (E.W. Dijkstra)

Ontology is one of the prime areas of metaphysics. How did I end up reading about metaphysics when I intended to understand what makes programs readable? I am here because while we blithely talk about instantiating objects in a Java program, I am taking it in a more literal sense and finding that the language of ontology and then the later issues of sense and reference applicable to these. It cannot be mere coincidence that the two fields overlap in this way.

I am not alone of course. There is this post which directly asks the same question and gives a rather good answer. I found in in June 2018. 
http://www.mathema.com/philosophy/metafisica/is-metaphysics-relevant-to-computer-science/

But let me race on to the thought that sparked this entry, the famous sentence in philosophy about the bald king of France. Is this true or false?

in Java terms, we have two predicates. One would answer the question of whether x is the King of France. The other would answer the question of being bald. The first predicate could never be answered, could never be true, since there is no such person. This gives a null referent for the second predicate. And null referents defy the precondition of any predicate giving an indeterminate response. So in programming terms we exactly see the philosophical notion of the presumed referent.

When listening to the lectures on the philosophy of language and specifically the discussions of fiction that I came to what I think may be a metaphysics different from Searle's. I need to read more about this to see if it is a distinct metaphysics and if so, learn to describe it. 


References:
Ontologies: Principles Methods and Application, Mike Uschold Michael Gruninge, 1996,  The University of Edinburgh
http://www.aiai.ed.ac.uk/publications/documents/1996/96-ker-intro-ontologies.pdf 

https://www.springer.com/cda/content/document/cda_downloaddocument/9780387370194-c1.pdf?SGWID=0-0-45-495101-p173670217

https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-871-knowledge-based-applications-systems-spring-2005/lecture-notes/lect22_ontolog.pdf

https://plato.stanford.edu/entries/computer-science/



No comments:

Post a Comment