So today I read the article on the Guardian website. It was about how the world's smartest minds could not seem to figure out consciousness. In it, they mentioned the problem of how there seems to be something more than just the physical stuff making up the body. But else could this other thing be?

All I could think of was that these guys did not do much computer programming. Everybody who is doing programming has heard of the binary search algorithm. At school, you first are taught a computer language or two. Next you take a data structures and algorithms class. You can not pass unless you know and can write from memory the binary search algorithm.

In English, it goes something like this. Assume an ordered array of values. Also assume two indices's, initially at the beginning and end of the array. Pick the location at the mid-point of the two indices's. Is it the one we are looking for? If so, quit and return the location index. Otherwise if the value at the mid-point
is greater than the search key, move the upper index to the mid-point. Otherwise, the mid-point value must be less than the search key and we move the lower index to the mid-point. Repeat until either the search key is found or the upper and lower indices's meet.

In essence, this is roughly how you search a phone book for a name. Everyone above the age of ten knows this algorithm.

What is interesting is that the algorithm is the same, no matter the language in which it is described. English, French, Algol or C.

The algorithm is recognizable as essentially the same in the unoptimized version described above or in an improved version where it is noticed that having once examined the mid-point, it is no longer necessary to consider it again and the indices's can be moved one location before or after the mid-point.

The algorithm is the same even in the human version wherein the pages of the phone book are searched without exactly choosing a mid-point. Instead, a rough estimate of the mid-point is chosen and that works just about as well.

So is the algorithm a thing? Yes, of course. It is recognizable. You read some unknown code and all of a sudden, the algorithm pops out of the confusion of its coding and you see the idea that the writer was attempting to reach. You can then look at the code in a new light and determine if the expression of the idea was accurate and free of mistake.

Is the algorithm a physical thing? Not at all. There can be expressions of the idea which somewhat become physical in marks of ink on paper or in coded holes in paper or even the the arrangement of a linear encoding of magnetic flux, displayed in the pulsing of electrons encountering a glowing phosphor screen.

As was alluded to above, even the representations of the algorithm are somehow at the limits of physicality.

One can even speak of the intelligence of the algorithm or in other words, the appropriateness of the algorithm to the problem domain.

For example, the algorithm depends on the amount of time required to access the array elements being roughly the same. The algorithm could become self-aware if the access to the array elements were abstracted into a function and the execution of the access function timed. If the algorithm were to be enhanced to account for this time, it could notice a violation of the basic constraints if the access times varied by much from the norm. It could even raise an alert and signal alarm at the discrepancy.

Suppose that some bone-headed programmer were to implement the binary search algorithm in layers of abstraction. But instead of representing the data in an array, the dunderhead was to layer the binary search function over a linked-list data representation. Recall that to find an item in a linked list, one must start at the first element and then examine additional elements until either the search key is located or the end of the list is reached. This form of layering obviously violates the equal access provision and would be a "stupid" algorithm. Or a “ugly” composition of otherwise decent ideas.

As a parenthetical note, I take this previous example from an actual discovery in examining some purchased code for which my company had paid something like $50,000 dollars. When I mentioned this to my counterpart, the support engineer of the seller, he acknowledged the error but countered with the observation that the stupidity in the code was not significant as the number of items in the list
was never large enough to matter. Needless to say, my expectations regarding the code, the engineer, and the company were reset in a downwards direction.

So in conclusion, an instrumented algorithm with an awareness of time, can be aware of deviations. Deviations can produce an alarm which can be sensed by other parts of the system. This kind of a system is at some level, "self-aware". And it is based on ideas which are non-physical and in some sense eternal or outside of time. Ideas which can be composited or layered.

So the question now is this. Can ideas be composited naturally or do they require a programmer?

To argue the first case is to argue for evolution and the second, for a god.

But in the first case, evolution, you still reach the point of the existence of a programmer.

Which in the limit, becomes a god, provided that communications costs are held sufficiently low and the efforts of all programmers can combine in a non-stupid manner. Probably not with money being the motivating force but rather a love of beauty and elegance at the core of their efforts.