Computer Science / Incompleteness / Philosophy

Notes on Reductionism, Part 3 – Programmability

File:PHPCode HelloWorld.svg

WordPress is only a tiny part of the internet, but trying to reduce it to physics completely seems to be astonishingly difficult. So let us try a simpler task. We only look at a small box. We accept that this box is an open system. Information is entering the system from the outside and we are no longer trying to explain how this information is coming about. The walls of the box are an interface to the outside and a stream (or set of streams) of information is entering. Can we not at least describe completely what is happening with this information inside the box?

The content of the box is the WordPress system. We can describe it as a set of hardware (a finite set of stuff at the moment I am writing this or you are reading this) and a set of programs. We don’t have access to these programs, but the technicians and programmers at WordPress have. These programs describe what is happening with information you enter into the system and how the system has to react when you access information inside it, for example, by entering a URL in your browser. It looks like this software, together with the description of the hardware it is running on, is a complete theory of the system.

The description seems complete as long as we forgo the requirement of describing all the content. So the strategy we follow here is to divide the system into mechanisms (including hardware and software) and content (or information).

Scientists describing physical systems generally follow a similar approach by dividing a system into a set of laws and initial conditions of all the parameters occurring in those equations. They are not trying to describe all the specific configurations of the systems but the laws according to which the systems develop.

However, there is a problem. In part 1, we have already noted that when you add a blog post, you alter the behavior of the system. A URL that would have resulted in an error message before adding your article now yields your article, once you have pressed the “publish” button. A piece of information is stored inside the system and as a result, the way it responds to another piece of information (the URL) is changed.

Our ability to change the behavior of the system is limited (e.g. we can select another theme for our blog and customize it. But this points us towards a crucial point. We have said that part of the system consists of software. Software is a kind of information. The programmers of the system have access to a programming interface. They can enter new programs or change existing ones. As a result, the way the system behaves can change. If you have been using WordPress for some time, you might have noticed that parts of the system have been changed from time to time.

So the system is programmable. It has a programming interface (although we do not have access to it, or only to very limited subsets of it). This means that information can be entered into the system in such a way that the behavior of the system, i.e. the description of its “laws” that we thought to be complete, can be changed.

Basically, in order to be programmable, a system needs to meet two conditions: it must be able to store information inside it, and this information must be able to influence other information that is entering the system.

If a system is programmable, it is not possible to describe the laws by which it is working once and for all. The system is still a physical system, nothing mysterious is happening inside it. Everything can be described in terms of physical processes at any time, but you cannot describe such a system completely.

The strategy to separate mechanisms from content does not work because the mechanisms can be changed. Some content turns into part of the mechanism. You can describe such a system as having a core and describe the program as content, but then you do not really understand what is going on inside the system. Instead, you have to take the original core and the program together as a modified system, and it is always possible to modify the system further, at least as long as you are not running out of storage capacity.

So systems like computers (laptops, smartphones, tablets, servers) and systems built up from them, like the internet, cannot be described completely because you can always modify the software and you cannot describe all possible modifications of the software beforehand. If the storage capacity of the system is limited, you can in principle (although not in practice) create a complete description (if you have a storage capacity of n bits, you have 2n possible states – a probably extremely large but finite number), but if you can add more storage you can modify the system again.

So at any given time, everything inside a system like WordPress is completely defined in terms of physical components and physical processes and a finite amount of information, but you cannot create a complete and exact theory describing all possible developments of such a system. The system is completely implemented in terms of physics at any given time, but its possible developments cannot be captured by any finite theory.

(The picture is from

2 thoughts on “Notes on Reductionism, Part 3 – Programmability

  1. wowzers your mind is so wonderful! you have such a completely different view of our world, so intricate and analytical and clever, you and your words intrigue and amaze me, leaving me agape 🙂

    • :°) Thank you.
      I am just trying to put my thoughts into a form that can be understood. I am going to continue this line of thoughts over the next days (I hope).

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s