I’ve been meaning to talk about writing software for a while now, and it’s a subject close to my heart, so bear with me. But first I’ll set the scene.
I recently talked about the potential for hidden universes in my mini-series on the quantum world, and also in the review of Briane Greene’s book. If you recall, Greene talks about a number of different possible explanations for the origins of the universe, including the very distinct possibility that this universe is a simulation in the computer of some advanced race. Yes, I know that sounds all Dr. Who, Tron or the Matrix, but there’s some logic there – in fact, far more logic than is the case with, oh, say, homeopathy. It goes like this: It is true that our universe is either the only one, or there is more one. One of the possibilities is that there are an infinite number of universes, since we have no reason to believe that is less likely than the other possibilities. That makes things interesting, because when infinity is around, interesting things happen. Given an infinite number of universes, races of super-advanced beings, capable of creating and/or simulating universes, are certain to exist. That’s just the way infinity works – the probability of anything is non-zero.
Of course, this is all just a thought experiment and conjecture, and in no way testable at the moment, although some have put forward suggestions for observations which could indicate we are a simulation. One of the capabilities the designer race would have is the ability to arbitrarily changes rules – which to us would appear as changes to the laws of nature. If we noticed such arbitrary changes that might give us a clue. In reality, when we engage in the physical sciences, we are probing those rules, looking for patterns, and ultimately trying to piece together a picture of reality. If this universe is a simulation, then what we are doing is determining the algorithms established by the designer race.
Now at this point you’re thinking (I know; my wife also hates it when I tell her what she’s thinking), this is starting to get religious overtones. Well, you’re right. Such a designer race would be the equivalent of a god, and those arbitrary changes in the laws of nature would be your miracles. It may surprise you that in this scenario I would have no objection to the existence of such a being, mainly because a. we would have some evidence of their existence rather than just asked to have faith, and 2. there would be a natural explanation, not a supernatural one.
Where am I going with this? At the risk of invoking an infinite regression of turtles, I am transported to such a simulated universe on a regular daily basis. And don’t worry, I haven’t been abducted by aliens, nor am I suffering from trekker delusions. Rather I’m talking about the process of writing software, which I have never really seen discussed anywhere.
I find that writing software is a strange, addictive activity, which I’ve been doing for most of my life. I started relatively late in life, at university, and frankly I just didn’t get it at first. After an afternoon spent with someone who knew what they were doing, it suddenly clicked – I could suddenly see the possibilities. And so, just like drugs of dependence, I skipped from one fix to the next. Starting with goddam punch cards and mark sense cards at uni, running rather boring Runge-Kutta approximations, moving into the brave new world of microprocessors and embedded applications, and then into 3rd and 4th generation languages. Then paradigms changed – from spaghetti code, to object-oriented code, which really rang my bell. Fast forward to today and the elegance of dotnet, jave and android technologies. Notice how I kept the memory lane stuff to a couple of sentences – don’t say I don’t look after you.
Regardless of the language or environment, there is a common thread with writing software – I find it incredibly immersive – perhaps the way some people are with video games or poker machines. Had I less willpower, when in the middle of an interesting project, I could easily sit at the keyboard for 24 hours straight – in fact in my 20’s I did some pretty long stints of that sort, regularly missing social engagements. Yes, I know, it has nerd written all over it doesn’t it?
So what does all this have to do with universes and so on? The answer lies in the process of writing software, at least as it applies to me. My view is that the writer emulates the computer in their brain, in effect simulating the running of the program. And in my case, this is a resource-intensive task which blocks out most other stimuli. Fortunately, there are some background (asynchronous, for you coders out there) tasks looping away in my brain which allow the real world to get a look-in, and hence be able to get to work on time, or respond with the automated and well-used ‘yes, I’m coming dear‘.
To me, it is as if a mini-universe is created, and I am transported into it, methodically stepping out the various commands, checking values and especially testing branching logic. Naturally, the better the mastery of the syntax, the more pronounced this effect. A crucial aspect of the work is that you are constantly managing the behaviour of different actors on the stage – that’s the main game. Each component on a screen or in a database or on the web has a behaviour, and the challenge is to make it behave as you wish, and by extension, to ensure that the whole environment is a coherent ‘whole’.
And some day in the future, programmers will be imbuing their ‘actors’ with more and more complex behaviours, and the point may be reached where those actors will believe they have a conscious existence, and begin to try to understand why they do stuff, and what the hell the creator was doing when he confined them to an Apple universe, and then wonder if there are any other universes out there.