Philosophical Realism and Its Implications on Programming

In the world of philosophy, realism holds that there are objective realities or truths that exist independently of human thoughts and perceptions. This is in contrast to anti-realism, which posits that reality is constructed by human cognition. But how does a concept as abstract as philosophical realism relate to the concrete world of programming? Let’s dive in.

Philosophical Realism: A Brief Overview

Philosophical realism posits that entities and truths exist outside of our minds. A simple example is the belief that an apple remains an apple, regardless of whether anyone is there to see or think about it. It continues to possess its essential “apple-ness” independently of human thought.

From Philosophical to Computational Realism

In the realm of computing and programming, realism manifests in interesting ways. Consider the distinction between high-level and low-level programming languages:

  • High-level languages, like Python or Java, are closer to human language and abstract away most of the underlying hardware details. They operate under a kind of computational “anti-realism” where the focus is on the human understanding of the problem, not necessarily the “reality” of the machine.
  • Low-level languages, like Assembly or C, demand a closer understanding of the machine’s operations. Here, the programmer must confront the “real” nature of the computer – its memory management, processor instructions, etc.

Implications of Realism on Programming

  1. Object-Oriented Programming (OOP): OOP can be seen as a realist’s approach to software design. Objects, with their properties and methods, are crafted to model and represent real-world entities. The emphasis on encapsulation, inheritance, and polymorphism strives to capture and emulate the inherent complexities of real-world interactions.

  2. Virtual Reality and Augmented Reality: These technologies challenge our conception of realism. As the lines between the virtual and real worlds blur, programmers are tasked with creating software that can seamlessly integrate and interact with our objective reality.

  3. Semantic Web: The effort to make web content universally understandable by machines rests on a kind of realism. The aim is to create a universally accepted ontology or ‘reality’ of concepts so disparate systems can understand and interpret them consistently.

  4. Bug Tracking and Error Handling: Realism would argue that there are objective, discoverable reasons why software fails. It’s not just a random occurrence but has a basis in the code’s relationship with the reality of the computing environment.

  5. AI and Machine Learning: Training models, especially in supervised learning, is about adjusting them to better fit the “reality