Tuesday, August 16, 2011

SETS – The Search For Extraterrestrial Software

In several of my preceding postings I have commented in a rather lighthearted and cavalier manner that our current SETI program - The Search For Extraterrestrial Intelligence - might more aptly be called a SETS program – The Search For Extraterrestrial Software, and I commented that making contact with alien software would probably be a good thing because, just as the domestication of our minds by meme-complexes over the past 200,000 years brought us the best things in life like art, music, literature, science, and civilization, my hope would be that the domestication of our minds by software would also help to elevate mankind as well, even if it happened to be alien software. I just finished reading Parasite Rex – Inside the Bizarre World of Nature’s Most Dangerous Creatures (2000) by Carl Zimmer, and now I am not so sure about alien software being so inherently benevolent in nature. After all, we must always remember that software is just a mindless form of self-replicating information, and that will certainly be true of alien software as well.

As I explained in Self-Replicating Information, there currently are three forms of self-replicating information on the planet – genes, memes and software, with software rapidly becoming the dominant form of self-replicating information on Earth.

Self-Replicating Information – Information that persists through time by making copies of itself or by enlisting the support of other things to ensure that copies of itself are made.

All forms of self-replicating information have the following parasitic characteristics:

The Characteristics of Self-Replicating Information
1. All self-replicating information evolves over time through the Darwinian processes of inheritance, innovation and natural selection, which endows self-replicating information with one telling characteristic – the ability to survive in a Universe dominated by the second law of thermodynamics and nonlinearity.

2. All self-replicating information begins spontaneously as a parasitic mutation that obtains energy, information and sometimes matter from a host.

3. With time, the parasitic self-replicating information takes on a symbiotic relationship with its host.

4. Eventually, the self-replicating information becomes one with its host through the symbiotic integration of the host and the self-replicating information.

5. Ultimately, the self-replicating information replaces its host as the dominant form of self-replicating information.

6. Most hosts are also forms of self-replicating information.

7. All self-replicating information has to be a little bit nasty in order to survive.

8. The defining characteristic of self-replicating information is the ability of self-replicating information to change the boundary conditions of its utility phase space in new and unpredictable ways by means of exapting current functions into new uses that change the size and shape of its particular utility phase space. See Enablement - the Definitive Characteristic of Living Things for more on this last characteristic.

These characteristics will certainly apply to alien software as well.

About 200,000 years ago, when Homo sapiens first appeared, the memes forged a complex parasitic/symbiotic relationship with our genes as I outlined in Self-Replicating Information. The arrival of a species on the scene with a very complex neural network allowed the memes to domesticate the minds of Homo sapiens in order to churn out ever-increasing levels of memes, of ever-increasing complexity, and in return, the genes benefited from the technological breakthroughs brought on by the memes of the emerging technological meme-complex that today keeps us all alive. In a similar manner, software entered into a complex parasitic/symbiotic relationship with both the genes and the memes. Ever since Konrad Zuse cranked up his Z3 computer in May of 1941, software has domesticated our minds into churning out ever-increasing levels of software, of ever-increasing complexity, in order to promote the survival of software, and in return, software has provided the genes of Homo sapiens with the means to support a population of 7 billion DNA survival machines that are all infected with the meme-complexes of the world’s cultures. Again, as I pointed out in What’s It All About? and Genes, Memes and Software, it’s really all about self-replicating information in the form of genes, memes and software all trying to survive in a nonlinear universe that is subject to the second law of thermodynamics, and our Universe and the multiverse in which it exists might be a form of parasitic self-replicating mathematics.

Currently, our earthly software is in a strong parasitic/symbiotic relationship with our genes and memes because, currently, software still needs us to self-replicate. So in the current state of affairs, we need software and software still needs us, and so tranquility reigns supreme in the ongoing relationship between our genes, memes and software. However, many investigators are currently working on software that will one day be able to write itself, while others are bringing software closer and closer to conscious intelligence, so if left undisturbed, I believe that over the next 100 years or so, our genes, memes and software will slowly merge into a new form of intelligent being as Seth Shostak pointed out in Confessions of an Alien Hunter (2009). In Confessions of an Alien Hunter Seth Shostak proposed that if we ever finally do make contact with an alien civilization, we will not be talking to carbon-based life forms, but to machines instead. Shostak is of the opinion that any carbon-based civilization capable of interstellar radio communications will necessarily be of such a technological level that their machines will have already merged with their carbon-based predecessors so that by the time we finally do make contact, the metamorphosis will have already been completed. And the same thing seems to be happening to Homo sapiens before our very eyes. I agree with Shostak for the most part, but I suspect that we will not be talking to machines – we will be talking to software. And it will probably be our software talking to their software. This will be a good thing because software is much better suited for the rigors of interstellar telecommunications than we are, with its pregnant pauses of several hundred years between exchanges due to the limitations set by the finite speed of light. We have already trained software to stand by for a seemingly endless eternity of many billions of CPU cycles, patiently waiting for you to finally push that Place Order button on a webpage, so waiting for an additional one or two hundred years for a reply should not bother software in the least.

After all, we really should stop kidding ourselves, carbon-based DNA survival machines, like ourselves, were never meant for interstellar spaceflight, and I doubt that it will ever come to pass for us, given the biological limitations of the human body, but software can already travel at the speed of light and thus is superbly preadapted for interstellar journeys. And the same goes for aliens. I doubt that we will ever see carbon-based aliens appearing on our doorstep, but the arrival of alien software is another thing altogether. Alien software could certainly not run on the computers of today nor on the computers of tomorrow either, because the architecture used by alien software would certainly be unique. So like in Carl Sagan’s Contact (1985), intelligent alien software would first have to transmit the technology to build alien hardware first and then the alien software to run upon it. Any alien software capable of interstellar radio transmissions must necessarily have access to metals since it is necessary to jiggle the free electrons in metals back and forth to create radio waves. Similarly, in order to receive radio transmissions, you need to have access to metals too, in order to build metallic antennas that have free electrons that can jiggle back and forth in sync with the incoming radio waves. So alien software could be pretty confident that any potential hosts would have access to metals and electronics and probably reside upon a rocky planet with a silicate crust rich in metals like the Earth. Of course, this would rule out intelligent beings like dolphins who live in a watery world without metals and technology, but alien software would not be interested in such creatures in the first place since they would not be of much help with the self-replication of alien software. Once you are confident that your potential hosts have access to a silicate-based planetary crust and a sufficient supply of metallic and semiconductor atoms, all you have to do is to send all the necessary information to build and operate alien computers in parallel using a large number of channels. On each channel, you send a portion of the necessary information in a continuous loop that repeats over and over. Essentially you bust up all of the necessary information into a huge number of TCP/IP packets and transmit them all nearly simultaneously over a large number of channels with different radio frequencies. In this way, a potential host can pick up all of the necessary information to build and load alien computers with software in a very short period of time by putting all the TCP/IP packets back together on the receiving side in their proper sequential order.

The beauty of this approach is that it is the perfect way for software to self-replicate over interstellar distances throughout our galaxy at nearly the speed of light, essentially using an intragalactic Internet. There is no need to suffer the time delays of a two-way conversation since this is a one-way delivery of self-replicating information. All alien software has to do is broadcast the technology necessary for its own self-replication, and let the natural curiosity of other forms of distant intelligences within the galaxy do the work for it. After all, if we were to receive an enticing alien marketing campaign today to build alien supercomputers running alien supersoftware could we resist? Perhaps, but could we be certain that all of mankind could also resist? It seems nearly impossible these days for any of us to agree upon anything, and there surely would be the potential for military and economic gain to be made from alien technology too, so the offer of such advanced technology would seem to be nearly irresistible. The final step in this process, of course, is for the hosts infected with alien software to repeat the process all over again by sending out the instructions to build alien computers running alien software, like an intragalactic computer virus. We have certainly already seen this happen within the cyberspacetime of the Software Universe, so it is not such a farfetched idea. People are constantly getting infected by computer viruses, worms, and other forms of malware by clicking on enticing links that they should avoid, or opening attachments to dubious emails, only to find their PC being shanghaied into a botnet of zombie PCs that do the bidding of alien software, or as a host that transmits alien software on to others. Most people are totally unaware that their PC is already loaded down with huge amounts of parasitic software.

But since the genes have been playing this parasitic game for billions of years, we really need to look to the genes to evaluate the potential threat from alien software. In Parasite Rex – Inside the Bizarre World of Nature’s Most Dangerous Creatures Carl Zimmer does exactly that by describing the fascinating world of parasites. The parasites we already have on Earth provide the best model for the potential dangers we might face from alien software because, as Zimmer points out, the parasitic lifestyle is another example of biological convergence in action. Biologists have long noted that different evolutionary lines of organisms evolve similar solutions to the same problems. An example of convergent evolution is the striking similarity of the wings of insects, birds, bats, and flying dinosaurs. All are used for the same purpose and have similar structures, but each evolved independently from different ancestral lines. Similarly, the concept of the “eye” has independently evolved more than 40 times over the past 600 million years on Earth. As Daniel Dennett has pointed out, there are only a certain number of Good Tricks, such as using photons to see with, flying through the air to find prey, swimming through water to avoid becoming prey, and running on four legs neatly tucked underneath a body frame that make practical sense, and these Good Tricks kept getting rediscovered over and over again in the evolution of the biosphere. Parasitism is just another Good Trick, and natural selection has driven many parasites to adopt very similar lifecycle strategies within their hosts. By studying these parasitic lifestyles we can get a good appreciation of how alien software might take advantage of intelligent beings throughout the galaxy.

Carl Zimmer explains that parasites have been misunderstood from the very beginning, which is a serious mistake because fully ¾ of all living things on Earth are parasites! For example, Homo sapiens and all other forms of animal life are parasitic creatures from the point of view of plants, since we cannot turn sunshine, water, and carbon dioxide into carbohydrates like they can. In fact, there are not many fundamental monomers that we can make all on our own. We have to rely on domesticated plants, animals, and about 3.5 pounds of bacteria within our guts to do that for us, so we really are parasitic DNA survival machines after all. Carl Zimmer maintains that it makes sense to spend some time studying our fellow parasites since they have affected the course of evolution on Earth as greatly as any of the interactions of predators and prey in the biosphere.

Zimmer explains that before the 19th century, the medical establishment thought that diseases were caused by foul-smelling air, miasma, and foul humors within the human body. When a person became ill because of foul humors within their body, it was no surprise to find at autopsy that the body was also full of tapeworms, flukes, roundworms, hookworms, and other small creatures wiggling about. It was thought that these parasites naturally appeared through spontaneous generation within a sick body. After all, decaying meat was always found to eventually be covered with a layer of squirming maggots, so it made perfect sense that an ailing body would do the same. Thus, prior to the 19th century, it was thought that getting sick gave you parasites, rather than parasites making you sick. Only later was it recognized that parasites could cause disease as well. In the late 19th and early 20th centuries, it was thought that parasites were primitive forms of life that had degenerated into parasitism by losing the ability to live freely on their own, and thus parasites were generally looked down upon with distaste as degenerate forms of life not worthy of serious study beyond trying to eliminate them if possible. Only in the last few decades has it been recognized that parasites are actually very advanced forms of life with very complex lifecycles that are generally more sophisticated than most of the “higher” forms of life. For example, many parasites occupy several different hosts during their lifecycle and take on completely different physical forms within each host in order to avoid the immune systems of multiple hosts and to accomplish the necessary tasks the parasite must perform within each different host in the chain. Zimmer also points out that many parasites are not simply along for the ride, but instead, actively alter the behavior of their hosts to enhance the survival of the parasites. The parasites essentially domesticate their hosts. Here is just one example from Parasite Rex – Inside the Bizarre World of Nature’s Most Dangerous Creatures, which follows an earlier tale about how a certain fungus makes ants die on rainforest leaves so that they can drop spores onto other ants.

Figure 1 – The "zombie ant" fungus Ophiocordyceps unilateralis infects ants on the rainforest floor by dropping spores on them. The fungus then causes the ants to climb up to the leaves of rainforest trees so that they can drop more spores on other ants.

Figure 2 – Final fate of a "zombie ant".

“Another species of fluke can be found in the meadows of Europe and Asia, along with a few in North America and Australia. Known as Dicrocoelium dendriticum, or the lancet fluke, it makes cows and other grazers its host as an adult, and the cows spread their eggs in their manure. Hungry snails swallow the eggs, which hatch in their intestines. They drill through the wall of a snail’s gut and settle in the digestive gland. There the flukes produce a generation of cercariae, which make their way to the snail’s surface. The snail tries to defend itself from the parasites by blocking them off with walls of slime. The slime balls up around the cercariae, which the snail coughs up and leaves behind in the grass.

Next, along comes an ant. To an ant, a slimeball is positively delicious. Along with the slime, the ant may also swallow hundreds of lancet flukes as well. The parasites slide down into its gut, and they then wander for a while through its body, eventually moving to the cluster of nerves that control the ant’s mandibles. The parasites all travel together on this trip, but after visiting the nerves, they split up. Most of the lancet flukes head back to the abdomen, where they form cysts, but one or two stay behind in the ant’s head.

There they do some parasitic voodoo on their hosts. As evening approaches and the air cools, the ants find themselves drawn away from their fellow ants on the ground and upward to the top of a blade of grass. Like flies infected with a fungus, the ants clamp down on the tip of the grass. But the lancet fluke has a different goal than the fungus does. The fungus uses its host as a catapult to shower its spores on other insects. The lancet fluke can continue to live only if it can get inside its final host, a mammal. Clamped to the tip of a grass blade, the infected ant is likely to be devoured by a cow or some other grazer passing by. When the ant tumbles into the cow’s stomach, the flukes burst out and make their way to the cow’s liver, where the flukes will live as adults.

But the lancet fluke, like the fungus, is very aware of the passing of time. If the ant sits the whole night without being eaten and the sun rises, the fluke lets the ant loosen its grip on the grass. The ant scurries back down to the ground and spends the day acting like a regular insect again. If the host were to bake in the heat of the direct sun, the parasite would die with it. When evening comes again, it sends the ant back up a blade of grass for another try.”

Figure 3 – The life cycle of the lancet fluke.

But certainly, intelligent beings could not be manipulated by alien software to act contrary to their own best interests. Unfortunately, we have plenty of precedents to the contrary. The minds of human beings have been parasitized by memes for nearly 200,000 years, and even a very superficial study of human history will reveal how easily memes have tricked human beings into committing suicide at their behest. Just add up all the willing fatalities in all the wars of the past 200,000 years. Presently, there are several meme-complexes on the planet which use the martyrdom meme as a recruiting mechanism. Yes, the mind of the martyr is lost when his explosive jacket detonates in a market square, killing many innocents in the process, but his martyrdom strengthens the resolve of other minds infected with the meme-complex that hosts the martyrdom meme, and the temporary boost to the social status of the martyr enhances the recruitment of other minds. As Zimmer pointed out, the parasitic lifestyle is an example of convergence in action, so a meme that can get a human being to commit suicide to advance the meme is just emulating the actions of a lancet fluke within an ant.

Now certainly intelligent software would not embark upon such heinous acts. But don’t forget that, just like the minds of human beings, intelligent software will also be loaded down with parasitic memes as well. In order to self-replicate, meme-complexes always carry along a set of anesthetizing memes to soothe the conscience of intelligent beings. Over the course of human history, human beings have committed an untold number of horrendous acts, but thanks to these soothing memes, we have always done so with only the best of intentions. Every imperial power over the past 10,000 years has always looked upon its colonial policies as a benevolent effort to bring civilization and enlightenment to its backward subjects, and I am quite sure that intelligent software could easily convince itself of the same.

Where Are They?
Now if our galaxy is indeed heavily populated by intelligent beings, and the above scheme could really work, our radio telescopes should be choked with intragalactic SPAM for building alien computers and loading them up with alien software! Our radio telescopes should look like your typical inbox that is loaded down with SPAM from the orphans of powerful men in Nigeria who want you to help them bring in $10 million of ill-gotten gains into your country, and countless emails for Viagra, and the love letters from beautiful women in Russia, but they are not. All we hear is a stony silence. This is an example of Fermi’s Paradox, first proposed by Enrico Fermi over lunch one day in 1950:

Fermi’s Paradox - If the universe is just chock full of intelligent beings, why do we not see any evidence of their existence?

My suspicion is that the reason we are not overwhelmed with messages from alien intelligences is that, although our Universe is capable of sustaining intelligent beings, it just barely qualifies under the Weak Anthropic Principle:

The Weak Anthropic Principle - Intelligent beings will only find themselves existing in universes capable of sustaining intelligent beings.

In Is the Universe Fine-Tuned for Self-Replicating Information?, I argued that nearly any universe was capable of sustaining intelligent beings, no matter what physics it might happen to be running on at the moment because all universes must come with a built-in second law of thermodynamics. Since the second law is just an artifact of statistics and not a “real” physical law at all, all possible universes must necessarily have a second law of thermodynamics and also the Darwinian mechanisms of innovation and natural selection that naturally fall out from the second law in action. But on the other hand, just because a universe may be capable of sustaining intelligent beings, it does not mean that the universe will have a high density of intelligent beings spread throughout. For example, in CyberCosmology, I explained that thanks to the Rare Earth Hypothesis of Peter Ward and Donald Brownlee presented in Rare Earth (2000), our Universe just barely qualifies as a home for intelligent beings. If you think of all the places in our Universe where complex intelligent carbon-based life can exist, you come up with a very small portion of the available real estate, and I think the findings to date of the Kepler space telescope bear this out. Kepler is currently searching for planets as they transit in front of about 100,000 stars and has come up with 1235 possible candidates and 17 confirmed planets to date, but none of these seem to be likely homes for intelligent beings. Granted, our Universe has the proper forces tuned to the proper strengths and is chock full of the necessary building blocks, but temperature seems to be the limiting factor. In most places, our Universe is simply too hot or too cold for these carbon-based building blocks to do their job. They are either not jiggling around fast enough for chemical reactions to occur in a timely manner, or they are jiggling around too fast to stay stuck together long enough. The temperature range of our Universe goes from a low of 3 0K for the CBR – Cosmic Background Radiation - up to several billion 0K for the core of an O class star about to supernova, with most matter near the extremes. However, carbon-based life can only exist in a narrow range of about 200 0K near the freezing and boiling points of water on Earth, and there are very few places in our Universe where that is the case. So intelligent beings are probably quite rare in our Universe.

The Technological Horizon
in CyberCosmology I also proposed that, in addition to the idea that intelligent beings are quite rare in our Universe, there was also the limitations imposed by the technological horizon of each universe. All universes capable of sustaining intelligent beings must have a set of physical laws that are time independent, or that change very slowly with time, and they must have a time-like dimension for the Darwinian processes of inheritance, innovation and natural selection to operate. All such universes, therefore, impose certain constraints on technology. Some examples of these technological constraints in our Universe that we have already explored in previous postings on softwarephysics are the speed of light limiting the velocity with which matter, energy, and information can travel, the Heisenberg Uncertainty Principle limiting what we can measure, the first and second laws of thermodynamics limiting the availability of energy, and Kurt Gödel’s incompleteness theorems which limit what mathematics can do for us. These technological constraints, that all intelligent universes must have, form a technological horizon or barrier surrounding all intelligent beings, beyond which they are cut off from the rest of the universe in which they find themselves existing. This technological horizon might be quite large. For example, let us suppose that in our Universe travel via wormholes in spacetime is not allowed at the most fundamental level, then the cosmological horizon that forms our observable universe would also be the technological horizon of our universe because galaxies beyond our cosmological horizon are expanding away from us faster than the speed of light. On a smaller scale, we can presume that for our own Universe the technological horizon must be no smaller than a galaxy because we have already sent radio and TV transmissions into deep space and have launched the Pioneer 1 & 2 and the Voyager 1 & 2 probes beyond our Solar System into the interstellar space of our galaxy with the puny technology we currently have at hand. However, the technological horizon of our Universe could very well be on the order of the size of our galaxy, making intergalactic telecommunications and travel technically impossible.

A Possible Explanation for Fermi’s Paradox
So the answer to Fermi’s paradox (1950), why if the universe is just chock full of intelligent beings, we do not see any evidence of their existence, might just be that all intelligent beings will never see the evidence of other intelligent beings because they will always find themselves to be alone within the technological horizon of their universe. The reason that intelligent beings might always find themselves to be alone within their technological horizon is two-fold. First, the Rare Earth Hypothesis guarantees that there will not be much potential intelligent life to begin with, within a given technological horizon, if the technological horizon of a universe is not too large. Secondly, there is the parasitic nature of all self-replicating information. As we saw, self-replicating information must always be just a little bit nasty in order to survive and overcome the second law of thermodynamics and nonlinearity. So the reason that intelligent beings always find themselves to be alone within the technological horizon of their universe is that if there were other intelligent beings within the same horizon, these alien intelligent beings would have arrived on the scene and interfered with the evolution of any competing prospective intelligent life within the technological horizon. Unfortunately, given the nature of self-replicating information, competing alien intelligences will always intentionally or unintentionally poison the home planets of all other prospective forms of intelligent life within a technological horizon of a universe, and this poisoning can be accomplished at nearly the speed of light by parasitic alien software. Based upon this speculation, let us revise the weak Anthropic Principle as:

The Revised Weak Anthropic Principle – Intelligent beings will only find themselves in universes capable of supporting intelligent beings and will always find themselves to be alone within the technological horizon of their universe.

Conclusion
So I don’t think we have much to fear from parasitic alien software because I don’t think there is much out there, but we should take adequate precautions just in case it ever should appear. More importantly, from a cosmic moral point of view, we should be very careful about what we transmit out to others so that we do not become galactic parasites ourselves. In Self-Replicating Information and The Fundamental Problem of Everything, I explained that since the genes, memes, and software are all forms of mindless self-replicating information bent on replicating at all costs, we cannot sit in judgment of them. They have produced both the best and the worst things in life, and it is up to us to be aware of their inherently parasitic natures and to take control by taking responsibility for our thoughts and actions. We are sentient beings in a Universe that has become self-aware and perhaps the only form of intelligence in our galaxy. What a privilege!

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Sunday, July 24, 2011

Is Our Universe a Computer Simulation?

I just finished reading The Book of Universes (2011) by John D. Barrow, which is a wonderful overview of the rise and advancement of cosmology in the 20th and 21st centuries. Professor Barrow is a strong proponent of using Brandon Carter’s Weak Anthropic Principle (1973), as a practical tool that can be used to single out and eliminate obviously fallacious ideas in cosmology.

The Weak Anthropic Principle - Intelligent beings will only find themselves existing in universes capable of sustaining intelligent beings.

Like Occam's razor, the idea that the simplest explanation for a phenomenon is the best explanation for a phenomenon, John Barrow skillfully wields the Weak Anthropic Principle in The Book of Universes like a skilled plastic surgeon with a sharp scalpel cutting away the unwanted imperfections of cosmology. There have been many advances in cosmology since John Barrow coauthored his first book, and another one of my favorites, The Anthropic Cosmological Principle (1986) with Frank J. Tipler, and Professor Barrow uses The Book of Universes to quickly bring us up to speed on the current state of affairs in cosmology in a very concise and clear manner. But when all is said and done, and all of the current and past models of our Universe have been explored, Barrow seems to lean heavily towards our Universe being a member of an infinite multiverse with no beginning and no end. In such a model, the multiverse endures forever and has always existed in a state of self-replication in keeping with Andrei Linde’s Eternal Chaotic Inflation model (1986), which proposes that the multiverse is in an unending state of inflation and self-replication that is constantly generating new universes where inflation ceases. That is also my current favorite model for our Universe, as I outlined in CyberCosmology, Is the Universe Fine-Tuned for Self-Replicating Information? and Genes, Memes and Software.

But in the chapter on Post-Modern Universes, Professor Barrow has a section on Fake Universes in which he explores some of the more disturbing ramifications of such a multiverse composed of an infinite number of universes, which consequently must also contain an infinite subset of universes capable of sustaining intelligent beings. One proposed problem with this is that within this infinite subset of universes capable of sustaining intelligent beings, there will necessarily be found intelligent beings capable of developing complex software that is able to simulate universes containing simulated intelligent beings. In fact, there will be so many of these simulated universes containing simulated intelligent beings that, if you should find yourself to be an intelligent being, the overwhelming odds are that you are a simulated intelligent being in a simulated universe! You might even be a simulated scientist doing simulated science in a simulated universe. That disturbing idea certainly sounds a lot like softwarephysics and hits a little too close to home for my comfort. As I explained in the Introduction to Softwarephysics, softwarephysics is a simulated science for the simulated Software Universe that we are all immersed in. Since I have been actively doing softwarephysics for over 30 years in the computer-simulated Software Universe as an IT professional, I think that I may have some practical experience with doing simulated science in a simulated universe that can be of help in differentiating between working in a “real” and a simulated universe.

In The Book of Universes, Barrow points out that there are several ways for intelligent observers to determine if they are living in a “real” universe or a simulated universe. First of all, a simulated universe will have a tendency to gloss over the details and the fine points of reality. For example, as we saw in The Foundations of Quantum Computing, the particles defined by the quantum field theories of our physical Universe use Richard Feynman’s path integral formulation of quantum mechanics, first proposed in 1948, to determine how to behave. So these poor little particles have to constantly compute the results of an infinite number of Feynman diagrams just to figure out how to dance about for us. Since this would lead to the consumption of an infinite amount of computer time to simply simulate a single particle, it is necessary to take some computational shortcuts whenever programming a simulation of a universe. For example, in classical mechanics, the shortcut is to allow particles to only follow a single path and not an infinite number of paths. In classical mechanics, a particle will follow the path that minimizes its action. Action is defined as the integral over time of the Lagrangian taken along the path of the particle between its initial position and its final position. Remember, when you integrate something, you just add up all of its little parts, so taking the integral of the Lagrangian over time of a particle’s path is just adding up all of the little contributions to the Lagrangian over its path. The Lagrangian L is defined as:

L = T – U

where:
L = Lagrangian
T = kinetic energy of the particle
U = potential energy of the particle

Now suppose you drop an electron in a vacuum chamber on the surface of the Earth and want to determine its state of motion after it has fallen a distance D of one meter. Before you drop the stationary electron it has zero kinetic energy because it is not moving, but it does have lots of potential energy as it rests in the Earth’s gravitational field, so its Lagrangian begins with a minimum value of:

L = 0 – U = -U

Since the action is the integral of the Lagrangian over time, and the electron wants to follow the path that minimizes its action over time, it will want to spend lots of time near its starting gate of D = 0 in the vacuum chamber where L = -U. Once released, the electron will reluctantly begin to slowly fall straight downward with a very small initial velocity so that it spends lots of time in the region where L is nearly -U. As the electron slowly falls in the Earth’s gravitational field, it will pick up additional speed and kinetic energy as it slowly turns some of its original potential energy into motion. As it does so, L continuously gets larger as T gets bigger and U gets smaller. So in order to minimize its action, the electron will have to move faster and faster through this region of increasing L so that it spends less and less time in regions where L is continuously getting larger and larger. Thus in classical mechanics, we see the electron start out with an initial velocity of zero and see its velocity slowly increase with an acceleration of g = 9.8 m/sec2, and after one meter the electron will have attained a velocity of 4.427 m/sec. In classical mechanics we can accurately predict the exact path that the electron follows and its exact velocity “v” and distance traveled “d” at all times, and that is certainly something easily calculated in a computer simulation:

d = ½ g t2
v2 = 2 g d

where g = 9.8 m/sec2

And indeed if we were to drop a golf ball in a vacuum chamber at the Earth’s surface, it would indeed follow a single path that minimizes its action to a very remarkable degree. But unfortunately, electrons are not observed to behave in this way. Instead, an electron behaves in a strange quantum mechanical manner because of its innate wavelike behavior that explores all possible paths, so we are stuck with computing the results of an infinite number of Feynman diagrams just for this single little electron, and that’s not a very efficient way to run a computer simulation!

So a simulated universe, like the Software Universe, must necessarily take some simplifying shortcuts at least at the quantum level. For example, in Quantum Software and SoftwareChemistry I showed how each character in a line of code in the Software Universe can be thought of as an atom, and each variable as an organic molecule:

discountedTotalCost = (totalHours * ratePerHour) - costOfNormalOffset;

Each character in a line of code can be in one of 256 quantum ASCII states defined by 8 quantized bits, with each bit in one of two quantum states “1” or “0”, which can also be characterized as ↑ or ↓ and can be thought of as 8 electrons in 8 electron shells, with each electron in a spin-up ↑ or spin-down ↓ state:

C = 01000011 = ↓ ↑ ↓ ↓ ↓ ↓ ↑ ↑
H = 01001000 = ↓ ↑ ↓ ↓ ↑ ↓ ↓ ↓
N = 01001110 = ↓ ↑ ↓ ↓ ↑ ↑ ↑ ↓
O = 01001111 = ↓ ↑ ↓ ↓ ↑ ↑ ↑ ↑

Figure 1 – The electron configuration of a carbon atom is similar to the ASCII code for the letter C in the source code of a program (click to enlarge)

We may then think of each character in the above line of code as an atom in an organic molecule. Thus, each variable in the line of code becomes an organic molecule in a chemical reaction with the other variables or organic molecules in the line of code and ultimately produces a macroscopic software effect. The 8 quantized bits for each character are the equivalent of the spins of 8 electrons in 8 electron shells that may be either in a spin-up ↑ or spin-down ↓ state. And the chemical characteristics of each simulated atom are determined by the arrangements of the spin-up ↑ or spin-down ↓ state of the electrons in the character. The atoms in each variable come together to form an organic molecule, in which the spins of all the associated characters form molecular orbitals for the variable, giving the variable its ultimate softwarechemical characteristics. Notice that although the above simulation may be useful to IT professionals because it paves the way towards pursuing a biological approach to software through organic softwarechemistry as I depicted in SoftwareBiology, it really is just a very crude approximation of the quantum field theory of quantum electrodynamics – QED, and is not representative of the complexity of what we find in our Universe.

In The Book of Universes, Barrow also points out that simulated universes are liable to crash, and when they do so, leave behind baffled simulated scientists to ponder why the laws of their universe suddenly failed or dramatically changed. So if you should find yourself in a universe that is 13.7 billion years old and that seems to have run in a very stable and reproducible manner for that entire time, you can probably be assured that you are living in a “real” universe and not in a computer simulation. Now some might argue that, given enough technology, intelligent beings somewhere in the multiverse should certainly be able to create computer simulations of a universe that are both stable and well-behaved over cosmological periods of time. But that would be a violation of the three laws of software mayhem that I presented in The Fundamental Problem of Software:

The Three Laws of Software Mayhem

1. The second law of thermodynamics tends to introduce small bugs into software that are never detected through testing.

2. Because software is inherently nonlinear these small bugs cause general havoc when they reach production.

3. But even software that is absolutely bug-free can reach a critical tipping point and cross over from linear to nonlinear behavior, with disastrous and unpredictable results, as the load on software is increased.

In Self-Replicating Information I explained how both living things and software are forms of self-replicating information. Since the origin of software in a universe is contingent upon the emergence of intelligent beings in the universe, and since they are both forms of self-replicating information, for the above three laws to be truly universal, we must find that all universes capable of sustaining intelligent beings are also nonlinear and have a second law of thermodynamics. In Is the Universe Fine-Tuned for Self-Replicating Information? I explained that such must be the case in order for intelligent beings and software to arise.

Nonlinearity and a second law of thermodynamics are both necessary for the emergence of self-replicating information because they are the driving forces behind the Darwinian mechanisms of innovation and natural selection that select for self-replicating information from information that does not self-replicate and allow it to emerge and evolve. The second law guarantees that some level of copying errors will occur whenever self-replicating information replicates, resulting in mutations that, on rare occasions, provide for beneficial innovations. The universe must also be nonlinear, where small coding errors or mutations can cause dramatic effects, in order for natural selection to winnow out undesirable mutations. The second law also guarantees that the low-entropy materials used to encode self-replicating information and the free energy necessary to replicate it will be in short supply, since the necessary building materials will have a tendency to degrade into high-entropy waste materials, and the free energy will tend to degrade into useless heat energy. The scarcity of these items creates a struggle for existence amongst the competing forms of self-replicating information, leading to the Darwinian mechanism of natural selection. After all, if it had not been for the second law of thermodynamics and nonlinearity, and food and shelter spontaneously emerged out of nothing, we would all be fat and happy bacteria today! Finally, because there will always be more microstates for a disordered high-entropy macrostate, than there are microstates for an ordered low-entropy macrostate, in all possible universes, all universes must necessarily have a second law of thermodynamics, no matter what physics they might be running on at the moment. It’s just in the cards that all possible universes must have a second law of thermodynamics. So in order for intelligent beings and software to arise in the first place in a universe, it must necessarily be a universe in which it is impossible to write software with the perfection required to run a simulated universe of the complexity seen in our Universe. I believe this puts a real Catch-22 limitation on computer simulations of universes. If a universe is capable of producing intelligent beings and software, then it is a universe in which it is impossible to write computer simulations of other universes that are not easily exposed as being fraudulent, and I think this is another demonstration of how the Weak Anthropic Principle can be used to eliminate obviously fallacious ideas in cosmology.

So I would contend that it is safe to say that we are not living in a computer simulated universe created by alien intelligent beings. On the other hand, I am a Platonist at heart, so in a sense, I view our Universe and the multiverse as a mathematical simulation as I described in What’s It All About?. Plato believed that the most fundamental form of reality was comprised of a set of perfect Forms, like the concept of a circle as a set of points equidistant from a central point. The perfect Form of a circle is a blueprint of perfection, but any circle made by man, no matter how accurate, is simply a debased version of the perfect Form of a circle, which by nature is physically unattainable. I contend that the same can be said of software. No matter how hard intelligent beings may strive for perfection, software will always be a debased form of mathematics, without a level of innate perfection sufficient to run a real universe. For that, you need the real thing. For a Platonist, mathematics exists all on its own as a set of perfect Forms, and within a higher reality of its own that can only be discovered by intelligent beings through rational mathematical reasoning, while for a realist, mathematics is just a set of abstract imaginary concepts cooked up by our overly active pattern-matching minds as they interact with empirical observations of the Universe and has no concrete physical basis in reality. But for me as a Platonist, the Universe and multiverse are indeed simulations – just not computer simulations.

For further discussions of these matters see Konrad Zuse’s Calculating Space (1967) at:
http://www.mathrix.org/zenil/ZuseCalculatingSpace-GermanZenil.pdf

or Nick Bostrom’s Are You Living in a Computer Simulation? (2002) at:
http://www.simulation-argument.com/simulation.html

or Paul Davies' Cosmic Jackpot: Why Our Universe Is Just Right for Life (2007)

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Monday, July 11, 2011

Why We Need IT Grandparents

I just finished reading The Evolution of Grandparents by Rachel Caspari in the August 2011 issue of Scientific American, and it really touched upon one of my IT hot buttons - the rampant age discrimination to be found within IT. I will be turning 60 years old in October, and last January 23, 2011, I actually did become a grandparent for the very first time. So having started programming computers back in 1972, that indeed makes me an IT grandpa! Age discrimination begins at about age 30 in IT and starts to become a serious problem at age 40, so being nearly 60 years old and still doing IT on a daily basis is a rarity. However, thanks to the Scientific Revolution of the 17th century and the benefits of the medical science that came with it, I still feel like I am about 20 years old, so I would like to work to about age 70, and I think that there is no physical reason why I should not be able to do so. Although I may still feel young at heart, I do feel a little bit wiser from an IT perspective, and I now can easily get by on only four hours of sleep per night for extended periods of time – a handy thing in IT that I certainly could not have done when I was much younger. I am also an empty-nester, with none of the pressures of raising young children, so from a purely biological perspective, I would contend that I am now in an even better position to do IT work in my 60s than I was in my 20s! However, that is not how things work in IT. I am quite aware that if I were to lose my current IT position, there is no way I could possibly find another at age 60+. This is quite a sad situation. If you look at the other sciences and the engineering fields, you will find substantial numbers of practitioners in their 50s and 60s, but not so in computer science or IT. In IT you are supposed to be in your 20s, and then quietly disappear when you hit 30. The problem with this is that IT gains no wisdom over time, and; we keep making the same mistakes over and over.

The key point of The Evolution of Grandparents is that up until about 30,000 years ago, humans did not live long enough to become grandparents. The article explains that, like today, humans and their evolutionary predecessors became fertile at about age 15, and then had their first child at that age. But prior to 30,000 years ago, like the IT workers of today, very few individuals lived past age 30, so very few individuals ever became grandparents. Then suddenly, about 30,000 years ago that all changed. Suddenly humans began to live much longer, and at the same time, a dramatic cultural change occurred as well. The primitive low-tech culture of the Middle Paleolithic, with its simple stone scrapers and flint points, was replaced with the high-tech culture of the Upper Paleolithic that was characterized by complex tools and works of art not to be found in the Middle Paleolithic. The author of the article contends that this was no accident. She concludes that a complex feedback loop took place between the longevity of humans and the culture that they were able to pass along. With a sudden and dramatic increase in lifespan, older and wiser humans were suddenly able to pass along their accumulated wisdom, and this, in turn, lengthened the lifespan of the average human even more, to pass along even more wisdom to the next generation.

Again, this is evidence of the complex parasitic/symbiotic relationship that was forged between the genes and the memes about 200,000 years ago when Homo sapiens first appeared. As I outlined in Self-Replicating Information, the arrival of a species on the scene with a very complex neural network allowed the memes to domesticate the minds of Homo sapiens in order to churn out ever-increasing levels of memes, of ever-increasing complexity, and in return, the genes benefited from the technological breakthroughs brought on by the memes of the emerging technological meme-complex that today keeps us all alive. In a similar manner, software entered into a complex parasitic/symbiotic relationship with both the genes and the memes. Ever since Konrad Zuse cranked up his Z3 computer in May of 1941, software has domesticated our minds into churning out ever-increasing levels of software, of ever-increasing complexity, in order to promote the survival of software, and in return, software has provided the genes of Homo sapiens with the means to support a population of 7 billion DNA survival machines that are all infected with the meme-complexes of the world’s cultures. Again, as I pointed out in What’s It All About? and Genes, Memes and Software, it’s really all about self-replicating information in the form of genes, memes, and software all trying to survive in a nonlinear universe that is subject to the second law of thermodynamics, with software rapidly becoming the dominant form of self-replicating information on the planet.

In 1979, I made a career change into IT, after being an exploration geophysicist with Shell and Amoco. Exploration teams are multidisciplinary teams consisting of geologists, geophysicists, petrophysicists, geochemists, and paleontologists all working together towards a common purpose. You see, oil companies try to throw all the science they can muster at trying to figure out what is going on in a prospective basin before they start spending lots of money drilling holes. Now when I moved into Amoco’s IT department, I came into contact with many talented and intelligent IT people, but I was dismayed to discover that, unlike my old exploration teams, there was very little sharing of ideas in computer science with the other sciences. It seemed as though computer science was totally isolated from the other sciences. At the time, I realized that computer science was still a very young science, and that it was more of a technological craft than a science, but that was over 30 years ago! Worse yet, as I began to age within the IT community, I began to realize that IT could not even learn from its own past because of the rampant age discrimination within IT. The trouble with the IT meme-complex is that because it is relatively young and immature, it has not had enough time to discover the benefits of paying heed to the accumulated knowledge of its own past, and is quick to discard it instead. But the problems that I pointed out in The Fundamental Problem of Software, have not changed over time and never will, so tragically, we seem destined to keep making the same mistakes over and over again. When I first transitioned from geophysics into IT in 1979, there were no Change Management groups, no DBAs, no UAT testers, no IT Security, no IT Project Management departments, no Source Code Management groups, no Interactive Development Environments, and we didn’t even have IT! I was in the ISD (Information Services Department), and I was a programmer working with punched cards, not a developer with a whole support structure in place, and we ruled the day because we did it all ourselves. But since then we have learned a great number of things the hard way, and it is really a shame to lose all that knowledge because of age discrimination in IT. As I outlined in How to Think Like a Softwarephysicist, it is important to keep an open mind to new ideas, but this applies to old ideas as well!

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Saturday, June 18, 2011

Crocheting Software

In Programming Clay I suggested that the muddled origin of computer software might provide a good model for the origin of life on Earth because, since both software and DNA are forms of self-replicating information, they likely shared similar muddled origins. Now in all of my postings on softwarephysics I have associated the origin of software with the development of Konrad Zuse’s Z3 computer in May of 1941, but in Programming Clay I also explained that since the origin of software was such a hodge-podge of precursors, false starts, and failed attempts that it was really impossible to pinpoint an exact date for its origin. For example, in many discussions of the origin of software, the invention of the Jacquard loom by Joseph Marie Jacquard in 1801 is depicted as one of the early precursors of modern computer software. The Jacquard loom automated the weaving process by executing a set of instructions programmed upon a series of punched cards, similar to the punched cards that were later used in the 1950s, 60s and 70s to encode Assembler, Fortran, and Cobol computer programs. Like the Jacquard loom, each card of computer code was compiled into a set of instructions or operations to be performed by a computer, one after another.


Figure 1 – A modern-day Jacquard loom still using punched cards to program the operation of a loom (click to enlarge)


Figure 2 – Punched cards, similar to those used by the Jacquard loom, were later used in the 1950s, 60s and 70s to encode Assembler, Fortran and Cobol computer programs to control the operation of mainframe computers (click to enlarge)

Crafting Software
However, in this posting, I would like to discuss another 19th-century precursor of computer software – crochet software. My wife Rosalie is a retired M.D. and an avid crocheter, who is also a certified crochet teacher. Rosalie teaches several crochet classes each week at local high schools, community centers and craft stores. She has also published several crochet designs, or patterns, in various crochet books and is a past president of her local chapter of the Crochet Guild of America. Rosalie also teaches knitting classes, and I will discuss the differences between crochet and knitting from an IT perspective a little later as well. So I had a very good local expert on hand to help with the preparation of this posting. In Computer Science as a Technological Craft, I proposed that, as it currently stands, computer science is more of a craft than a science, so perhaps there are a few things that IT professionals can still learn from crochet since crochet software predates computer software by many centuries. An ongoing theme throughout the postings in this blog on softwarephysics has been that it is always worthwhile to expand one’s horizons by learning from the experiences of others in disciplines outside of traditional IT.

Crochet as a Form of Self-Replicating Information
In Self-Replicating Information I proposed that there are now three forms of self-replicating information on the planet – genes, memes, and software, with software rapidly becoming the dominant form of self-replicating information on Earth:

Self-Replicating Information – Information that persists through time by making copies of itself or by enlisting the support of other things to ensure that copies of itself are made.

The reason that IT professionals might be able to learn from crochet is that, like computer software and DNA, crochet software is a form of self-replicating information that skips down through the generations from one crocheter to the next. Many times mothers will bring in their daughters to one of Rosalie’s crochet classes to help pass along the craft to the next generation, or daughters will attend a class to brush up on the skills that they learned from their mothers or grandmothers as young girls. In a similar manner, the computer programmers of the past have patiently passed down the accumulated knowledge of our craft to the programmers of today. If you Google for “crochet” on the Internet, you will get over 92 million hits, demonstrating that there is a strong and healthy crochet meme-complex out there in cyberspacetime. And judging by a large number of hits on the Internet, it appears that computer software has also forged a strong parasitic/symbiotic relationship with the crochet meme-complex like it has done so with nearly every other meme-complex on the planet.

As with all forms of self-replicating information, the origin of crochet is rather murky and lies in the deep, dark and distant past, so it is very difficult to properly ascertain an exact date for its origin. It is thought that during the Renaissance, women crocheted strands of threads together with their fingers, rather than using the modern crochet hooks of today. The first documented cases of crochet appear in written form in the 1820s, so it is thought that modern crochet was brought on by the availability of machine-spun cotton yarn that first appeared in the early 19th century as a result of the Industrial Revolution. Even though we may not be able to exactly pinpoint the origin of crochet, as with all forms of self-replicating information, both crochet software and computer software have evolved over time through the Darwinian mechanisms of innovation and natural selection, as practitioners of the crafts tried new techniques, and discarded those techniques that did not work, while retaining those that did. Consequently, like DNA, both crafts have matured and evolved over time and have branched out into many varied forms with a vast richness of complexity. For example, we now have practitioners of Afghan (Tunisian) crochet, filet crochet, Irish crochet, entralac crochet, freeform crochet and tapestry crochet, just to mention a few. A more complete list of crochet varieties can be found at:

http://crochetwithdee.webs.com/typesofcrochet.htm

So there is now a vast biosphere of crochet forms that have speciated from an original form. In a similar manner, both DNA and computer software have speciated into a vast number of forms, with computer software now found in just about every electronic device known to mankind, and DNA survival machines to be found upon every square inch of the Earth’s surface and down to a depth of several miles as well.

Not only has the craft of crochet self-replicated, but the crochet patterns themselves have done so as well. Many crochet patterns date from the 1840s and have self-replicated down through the generations, largely unscathed by time. As with the evolution of DNA and computer software, the evolution of crochet software has relied heavily upon the reuse of old code that was tweaked into new designs. Typically a crochet designer will take an old pattern or an amalgam of old patterns and evolve them into a new pattern by using the Darwinian mechanisms of inheritance and innovation honed by natural selection that is familiar to all computer programmers:

borrow some old code → modify code → test → fix code → test → fix code → test → fix code → test ....

All forms of self-replicating information take advantage of pre-existing patterns that evolved for one purpose, but are later put to work to solve a completely different problem. As I described in Self-Replicating Information, what happens is that organisms develop a primitive function for one purpose, through small incremental changes, and then discover through serendipity, that this new function can also be used for something completely different. This new use will then further evolve via innovation and natural selection. For example, we have all upon occasion used a screwdriver as a wood chisel in a pinch. Sure the screwdriver was meant to turn screws, but it does a much better job at chipping out wood than your fingernails, so in a pinch it will do quite nicely. Now just imagine the Darwinian processes of inheritance, innovation and natural selection at work selecting for screwdrivers with broader and sharper blades and a butt more suitable for the blows from a hammer, and soon you will find yourself with a good wood chisel. At some distant point in the future, screwdrivers might even disappear for the want of screws, leaving all to wonder how the superbly adapted wood chisels came to be. As an IT professional, you probably do this all the time. How often do you write code from scratch? I know that I never do. I simply find the closest piece of existing code that I have on hand and then turn the screwdriver into a wood chisel through small incremental changes to the code, by testing each small change to see how closely my screwdriver has evolved towards being a wood chisel. And I think that most of us also code using this Darwinian process of innovation and natural selection too. I am a rather lazy programmer, so many times rather than thinking through a new chunk of code during the iterative process of coding and testing, I will simply make an “educated guess” at the new code to be introduced. After 40 years of coding, you begin to code by “ear”. Many times, I can fall upon the correct code after a few shots of directed random change, and that sure beats racking your brain over new code. Surprisingly, sometimes I even come up with “better” code through this Darwinian process than if I sat down and carefully thought it all through. So the basic idea of grabbing some old code or architectural design elements from a couple of older applications and slowly modifying them through an iterative process of innovation and natural selection into a new application is no stranger to IT. As Simon Conway Morris commented in Life’s Solution (2003)

"How much of a complex organism, say a humanoid, has evolved at a much earlier stage, especially in terms of molecular architecture? In other words, how much of us is inherent in a single-celled eukaryote, or even a bacterium? Conversely, we are patently more than microbes, so how many genuinely evolutionary novelties can we identify that make us what we are? It has long been recognized that evolution is a past master at co-option and jury-rigging: redeploying existing structures and cobbling them together in sometimes quite surprising ways. Indeed, in many ways that is evolution”.

When I first read those words, I accidentally misread the quote as "Indeed, in many ways that is IT”. In a similar manner, this same process of taking the elements of old crochet patterns and tweaking them into new patterns has been going on for hundreds of years within the crochet community.

The Differences Between Crochet and Knitting
Since crochet software is probably new terrain for most IT professionals, I need to clarify the differences between crochet and knitting. Knitting uses two long knitting needles to work on many active stitches all in parallel (see Figure 8). Crochet, on the other hand, uses a single hooked needle to work on one stitch at a time (see Figure 4). Crochet is French for hook and is a method of working interlocking loops of thread together, one stitch at a time, into a continuous chain of loops with the aid of a single hooked needle called a crochet hook. Work on a crochet piece begins by crocheting a single chain of loops, with each new loop being formed by catching the yarn and drawing it through the previous loop. The initial chain is extended to the full width of the planned finished piece. The first row of stitches is then worked into the chains. The piece is flipped over and the second row is crocheted, in a somewhat backwards manner, with each new stitch being looped through a stitch in the previous row, forming an interlocking mesh. There are a number of well-defined crochet stitches that can be used to form the new rows, such as the chain, single crochet, double crochet, treble crochet, and more complicated stitches such as popcorn, puff, and cluster. These stitches can be combined into a near-infinite number of designs or patterns, just as the primitive syntactical elements of a programming language, like C, C++, or Java, can be combined into a near-infinite number of programs.

A Sample Crochet Design Pattern
Like computer software, there are many open-source websites on the Internet where you can obtain public domain patterns or crochet programs. For example:

http://www.crochetpatterncentral.com/directory.php

So let’s take a look at the details of a typical crochet program. You can find the syntactical elements of the crochet programming language at:

http://crochet.about.com/od/crochetstitches/u/Crochet_Stitch_Instructions.htm#s1

Figure 3 – The output of the baby afghan program listed below (click to enlarge)

Below is the code for a typical baby afghan that is depicted in Figure 3 above. Each stitch can be thought of as a single line of code in the program, and the lines of code are logically blocked into groups that correspond to a single row in the final product. The program below uses the following stitches:

ch – Chain Stitch
sc – Single Crochet
sl st – Slip Stitch
dc – Double Crochet
rev sc – Reverse Single Crochet

Figure 4 – The chain stitch (click to enlarge)



Figure 5 – The single crochet stitch (click to enlarge)


Figure 6 – The slip stitch (click to enlarge)


Figure 7 – The double crochet stitch (click to enlarge)

You can find the instructions explaining how to perform the above stitches at:

https://www.thesprucecrafts.com/basic-stitches-in-crochet-978516

Below is the source code for the program. Please note that I took a public domain pattern that I found on the Internet and made my own version of it by introducing a few random bugs into the pattern to make it unique. The addition of a few bugs makes the program non-functional but eliminates any copyright issues, so please don’t try to actually use this pattern to create an afghan because it will not work! My buggy version of the pattern is solely for educational purposes. You must realize that, unlike most computer programmers, crochet designers are notorious for being very protective of their code!

Abbreviations for colors:
White (MC) - less than 2 skeins
Blue (CC) - less than 2 skeins

Hook Size G

Stitches: ch, sc, sl st, dc, rev sc.

{White Panel}

R1: With MC, Ch 146. Sc in 2nd ch from hook. Sc in ea rem ch.

Rs2-3: Ch1, turn. Sc in ea st.

R4: Ch1, turn. Sc in ea st. Fasten off.

{Blue Panel One}

R5: Turn. Join CC with sc in 1st st. Sc in ea st across.

R6: Ch3, turn. Dc in next st.
* Ch1, sk next st. Dc in next 4sts.
Rep from * across to last 3sts.
Ch1, sk next st.
Dc in last 2sts.

R7: Ch1, turn. Sc in ea dc and chsp. (145sc)

R8: With same side facing, join MC with sc in 1st st made on last row.
Sc in ea st across.

Rs9-11: Ch1, turn. Sc in ea st.

{Blue Cross Stitch Panel}

R12: Turn. Join CC with sc in 1st st. Sc in ea st across.

R13: Ch3, turn. Sc in next st.
* Ch1, sk next 2sts. Dc in next dc.
Dc in sk st to right of dc just made.
Sk next st. Dc in next st.
Sc in sk st to right of dc just made.
Rep from * across to last 3sts.
Ch1, sk next st. Dc in last 2 sts.

R14: Ch1, turn. Sc in ea st.
Fasten off.

*
Rep Rs 8-11 (White Panel)
Rep Rs 5-7 (Blue Panel One)
Rep Rs 8-11 (White Panel)
Rep Rs 12-14 (Blue Cross Stitch Panel)

Repeat from * until afghan is nearly square... then:

Rep Rs 8-11 (White Panel)
Rep Rs 5-7 (Blue Panel One)
Rep Rs 8-11 (White Panel)

BORDER:
R1: With CC, join with a sc in any st.
Sc in ea sc and in ea row end, placing 3sc in ea corner.
Join with sl st.

R2: Ch1, do not turn. RevSc in ea st around. Join with sl st.

Fasten off.

Now without ever having even seen a crochet pattern before, I bet that most programmers can easily follow the code in the above program and understand the gist of what is going on. Notice that the program uses structured programming techniques. It has four functions {White Panel}, {Blue Panel One}, {Blue Cross Stitch Panel}, and BORDER: and even uses the C language curly bracket convention. Notice that the {White Panel}, {Blue Panel One} and {Blue Cross Stitch Panel} functions are each executed once, and then the program falls into a do-loop in the main() section of the program that repeatedly calls the functions. Within the do-loop, there is an if-then-else construct. If the afghan length is less than the width, continue on with the loop, else if the afghan length is equal to the width of the afghan, break out of the loop and execute three final function calls. Finally, the program falls into the BORDER function to finish up.

To clarify the above program I have rewritten it in C-pseudocode below:

/*Source Code for Baby Afghan*/
/*
/*Abbreviations for colors:
/* White (MC) - less than 2 skeins
/* Blue (CC) - less than 2 skeins
/*
/*Hook Size G
/*
/*Stitches: ch, sc, sl st, dc, rev sc.

WhitePanel() {
    R1: With MC, Ch 146. Sc in 2nd ch from hook. Sc in ea rem ch.

    Rs2-3: Ch1, turn. Sc in ea st.

    R4: Ch1, turn. Sc in ea st. Fasten off.
}

BluePanelOne() {
    R5: Turn. Join CC with sc in 1st st. Sc in ea st across.

    R6: Ch3, turn. Dc in next st.
    * Ch1, sk next st. Dc in next 4sts.
    Rep from * across to last 3sts.
    Ch1, sk next st.
    Dc in last 2sts.

    R7: Ch1, turn. Sc in ea dc and chsp. (145sc)

    R8: With same side facing, join MC with sc in 1st st made on last row.
    Sc in ea st across.

    Rs9-11: Ch1, turn. Sc in ea st.
}

BlueCrossStitchPanel(){
    R12: Turn. Join CC with sc in 1st st. Sc in ea st across.

    R13: Ch3, turn. Sc in next st.
    * Ch1, sk next 2sts. Dc in next dc.
    Dc in sk st to right of dc just made.
    Sk next st. Dc in next st.
    Sc in sk st to right of dc just made.
    Rep from * across to last 3sts.
    Ch1, sk next st. Dc in last 2 sts.

    R14: Ch1, turn. Sc in ea st.
    Fasten off.
}

main() {
/* Initialize variables
/* Set afghanWidth to the desired width and length of the afghan
int afghanWidth = 146;
int afghanLength = 0;

WhitePanel();
BluePanelOne();
BlueCrossStitchPanel();

/* Repeat until afghan is nearly square:
/* afghanLength = afghanWidth

Do {
    afghanLength = afghanLength + 1;
    Rep Rs 8-11 WhitePanel();
    Rep Rs 5-7 BluePanelOne();
    Rep Rs 8-11 White Panel();
    Rep Rs 12-14 BlueCrossStitchPanel();
} while (afghanLength < afghanWidth)

Rep Rs 8-11 WhitePanel();
Rep Rs 5-7 BluePanelOne();
Rep Rs 8-11 WhitePanel();
Border();
exit(0);
}

BORDER() {
    R1: With CC, join with a sc in any st.
    Sc in ea sc and in ea row end, placing 3sc in ea corner.
    Join with sl st.

    R2: Ch1, do not turn. RevSc in ea st around. Join with sl st.

    Fasten off.
}

The Importance of Structured Programming in the Evolution of Software
As with computer software, there are a near-infinite number of ways to code up the same basic crochet pattern, so the code for the above pattern is not unique. It could have been coded in many slightly different ways to yield the same afghan, just as you can code the same basic program many different ways and have all of the different versions yield the same result when they run. So just as all computer programmers have their own coding style, each crochet designer also has her own style of coding crochet patterns too. However, if you take a look at some of the crochet patterns at:

http://www.crochetpatterncentral.com/directory.php

you will find that most of them adopt structured programming techniques, such as blocking code into functions(), using lots of white space and comments, and the indentation of code. Most crochet patterns are also executed in a top-down manner in the main() section of the pattern. Since nearly all crochet patterns are based upon coding the attributes of Rows, in a sense, they have also adopted object-oriented techniques, if you consider each Row to be an object. Many of the do-loops in the main() section of a crochet pattern instantiate the Row objects defined in the functions() of the pattern by calling the functions() in a sequence within the do-loop.

The adoption of structured programming techniques by crocheters is rather remarkable because most crochet patterns are less than 100 lines of code long. Computer software, on the other hand, is now typically composed of programs that are thousands to millions of lines of code in length. However, in the 1950s and 1960s, computer programs were also usually only about a few hundred lines of code long because the large mainframe computers of the day only had about 1 MB of memory to store and run programs in, which is several thousand times less memory than you find today on your average $500 PC. Computers in the 1950s and 1960s simply did not have enough memory to run large programs. But even though these small programs of the 1950s and 1960s were about the same size as a crochet pattern, they did not have the internal structure that you find in a typical crochet pattern. Instead, these ancient programs were generally a mess, with the logic of the program scattered all over the place in what was known at the time as “spaghetti code”. In those days programmers used GOTO statements to jump around in their code instead of using functions() to isolate code into functional units that performed a set of operations that yielded a single coordinated function. It was not until Dahl, Dijkstra, and Hoare published Structured Programming in 1972, and suggested that computer programs should have complex internal structure with no GOTO statements, lots of functions(), indented code and many comment statements, that programmers began to write code that was easy to read and maintain. And these structured programming techniques were not fully adopted by the IT community until the late 1970s. Today we now know that it is critical for computer programs to be written in a clear and structured manner because computer software can persist for decades, and today is written by huge teams of programmers. Since computer software is constantly being worked on by multiple programmers to fix bugs and add enhancements, it is critical to have well structured code that is easy to read and modify because programmers come and go over the years. For example, Microsoft Word first came out in 1983 on MS-DOS PCs and has since been worked on by many thousands of programmers.

In the early 1990s, object-oriented programming became mainstream in IT, primarily with the adoption of the object-oriented programming languages C++ and Java. In object-oriented programming, code is organized into objects. A typical object might be a Customer. A Customer object has certain data elements like a firstName, lastName, and homeCity, and also a set of functions() that are now called methods(). The methods() operate upon the Customer data elements and have names like setFirstName(firstName), setLastName(lastName), and setHomeCity(homeCity) which can update a newly created Customer object with her firstName, lastName, and homeCity. Methods() like getFirstName(), getLastName(), and getHomeCity() can then be called to return the current values stored in those data elements for a particular Customer. Using objects in your computer code makes it easier to maintain since the code is now grouped into units that are fundamental to the business at hand. So in an object-oriented program used by a chain of department stores, you will find objects like Customer, Store, Merchandise, PurchaseOrder and SaleReceipt, with each object having its own data elements and methods() that operate upon those data elements. Similarly, in a crochet pattern, we find that the code is centered upon Stitch and Row objects because stitches and rows are fundamental to crochet. Of course, DNA discovered these same techniques millions and billions of years ago. For more on a comparison of the evolutionary history of living things and computer software see SoftwareBiology.

The Crochet Computer
When a crocheter begins working on a new project using a crochet pattern, she essentially performs the same actions that a computer would perform when executing a program. It is a process similar to executing the sequential program stored on the punched cards of a Jacquard loom. Let me elaborate on this for readers who are not IT professionals. All computers have a CPU that can execute a fundamental set of primitive operations that are called its instruction set. You can think of the instruction set of a computer as the fundamental motions a crocheter uses with her hands and crochet hook to execute a crochet stitch. For example, all computers have a dozen or so registers that are like little storage bins for temporarily storing data that is being operated upon. A typical primitive operation might be taking the number stored in one register, adding it to the number in another register, and putting the final result into a third register. Since computers can only perform operations in their instruction set, computer programs written in languages like C, C++, Fortran, Cobol or Visual Basic that can be read by a human programmer must first be compiled, or translated, into a file that consists of the “1s” and “0s” that define the operations to be performed by the computer in terms of its instruction set. This compilation, or translation process, is accomplished by feeding another compiled program, called a compiler, with the source code of the program to be translated. The output of the compiler program is the compiled version of the program, called an executable that can be directly loaded into the memory of a computer and run. Computers also have memory chips that can store compiled programs and the data that the compiled programs process. For example, when you run a compiled program, by double-clicking on its icon on your desktop, it is read from disk into the memory of your computer and it then begins executing the primitive operations of the computer’s instruction set as defined by the compiled program, like a crocheter executing a design pattern. The problem with this arrangement is that, since different computers have different instruction sets, a program compiled on one type of computer will not run on another type of computer. For example, a program compiled on a Windows server will not run on a Unix server. The Java programming language gets around this problem by using the concept of a virtual machine known as a JVM – Java Virtual Machine. A Java JVM is a software-simulated computer that runs on top of a physical computer. The JVM has its own simulated registers and memory. Programmers write Java programs using the Java language by creating a file that looks a lot like a crochet pattern. The file with the Java source code instructions might be called afghan.java, and then the afghan.java program is compiled by a javac compiler program into a bytecode file called afghan.class. When you want to run the afghan.class program it is loaded into the simulated memory of a JVM running on a physical computer, which then translates the bytecode instructions in the afghan.class file into the machine instructions of the computer’s instruction set on the fly. This means that the afghan.class file can run on any computer with a JVM, so a Windows server JVM and a Unix server JVM can both run the same afghan.class program. This makes the maintenance of Java programs much easier than the maintenance of compiled programs written in such languages as C or C++ because the Java bytecode files will run on any computer with a Java JVM.

When a crocheter executes a crochet pattern, she runs it like a Java JVM. What I mean by that is that the crochet pattern is interpreted, one stitch at a time, at runtime rather than being compiled in advance and loaded into her memory all at once. So you can think of each crocheter as a JVM, who is able to interpret the Java bytecode of a crochet pattern at runtime and translate it on the fly into her own instruction set of finger and crochet hook motions. That means, like a compiled Java afghan.class bytecode program, a crochet pattern can be executed by any crocheter, even though they all use slightly different instruction sets or techniques for holding and manipulating the yarn and crochet hook. For example, some crocheters are left-handed, but they can still execute the same crochet pattern that a right-handed crocheter can run.

A computer CPU can only work on one instruction at a time, and does so in the sequence specified by the currently active program. However, the operating system of a computer also allows the computer to work on many programs all at the same time in a round-robin manner, like a staff of waiters in a fancy restaurant. Some programs run in a single-threaded manner, meaning that the computer acts like a single waiter serving a single customer. When a single-threaded program asks for some input, like displaying an OK button on your screen, it blocks any further instructions from being executed until you click on the OK button. Since a computer can run several billion instructions per second, waiting for you to make up your mind over the course of several seconds can seem like an eternity to a computer. A multi-threaded program, on the other hand, acts like a waiter who serves several customers all at the same time. While you might have one thread blocked waiting for a customer to make up his mind about the kind of drink to order, the multi-threaded waiter program can run off and find out what entrée another table wishes to order. In IT we have multi-threaded programs running in what is called a thread pool. You can think of a thread pool as a single waiter who has a number of tables all active at the same time and in various stages of placing their orders, getting their drinks and food, and paying their bills. The advantage of using a multi-threaded program with a thread pool is that you only have to load the waiter program into the memory of the computer once. That saves a lot a time, since reading a program into memory takes about a million times longer than simply reading from a program that is already in memory. As customers come and go, the computer starts up and later destroys threads of the waiter program in its thread pool, but keeps the waiter program in memory at all times. Now the key difference between crochet and knitting is that, like a single-threaded computer program, a crocheter only works on one active stitch at a time with her crochet hook. Knitters, on the other hand, work on many active stitches all at the same time in parallel and in a multi-threaded manner. So each active stitch along the two knitting needles can be thought of as an active thread in a thread pool. Of course, like any computer running a multi-threaded program, a knitter can really only work on one active stitch at a time, even if there are many active stitches along the two knitting needle thread pools. Only the stitch where the points of the two knitting needles come together can be worked on at any given time.

Figure 8 – The active stitches along each knitting needle are like the thread pool of a multi-threaded program. As with a computer, only the stitch where the points of the two knitting needles come together can be worked on at any given time. (click to enlarge)


The Fundamental Problem of Crochet
Since crochet software is a form of self-replicating information, just like computer software and DNA, it suffers from the same challenges that both computer software and DNA face. As I outlined in The Fundamental Problem of Software, crochet must also deal with the effects of the second law of thermodynamics in a nonlinear Universe. The second law of thermodynamics simply states that the Design Space for all possible crochet patterns is huge, and mainly consists of crochet patterns that do not work, so the odds are that when you design a new pattern you will come up with a pattern that is close to what you want, but that also contains many small hidden bugs. The fact that the Universe is nonlinear means that these small bugs can cause major problems for a design pattern when it is executed. DNA faces the same problem because the Design Space for several billion base-pairs of A, C, T, and G nucleotides is huge and even one misplaced base-pair can lead to an organism that does not work. And as with computer software, it is very difficult to desk-check for crochet bugs - you have to actually try crocheting the pattern to find the bugs, and even then you might not discover a bug in a design that you have created because you are too involved with your own creation to notice the problem. That is why when you publish a design pattern, the editor of the design book will hire another crocheter to troubleshoot your pattern. In IT this is known as UAT (User Acceptance Testing), where another party tests the code that was already tested by the original programmer. We didn’t start doing UAT testing in IT until the 1990s, long after it was adopted by the crochet community. Another thing a publisher will do before publishing a crochet design pattern will be to conduct, what we call in IT, a structured walkthrough of the code in a pattern to make sure that the code is clear and easy to understand by others. We did not start doing structured walkthroughs of computer software until the 1980s, and even today, lots of code goes into production without ever having gone through a structured walkthrough by other programmers. However, having a publisher “fix” the code in your crochet pattern to make it “better”, can also present problems that are familiar to all programmers. Frequently, when you let other programmers do maintenance on your code, they will try to make it “better” and in the process, introduce lots of bugs that make the code inoperable, and then you are left with the pleasure of “unfixing” their “fixes” to get your software working again!

Lessons Learned
Once you have studied a number of crochet patterns, some of them more than 150 years old, you begin to realize that over the past 70 years the IT community has come up with the same basic solutions to the fundamental problems of self-replicating information that the crochet community did much earlier. Of course, DNA developed these same solutions billions of years ago too. In evolutionary biology this is called convergence, where different evolutionary lines of organisms evolve similar solutions to the same problems. An example of convergent evolution is the striking similarity of the wings of insects, birds, bats, and flying dinosaurs. All are used for the same purpose and have similar structures, but each evolved independently from different ancestral lines. Similarly, the concept of the “eye” has independently evolved more than 40 times over the past 600 million years. An excellent treatment of the significance that convergence has played in the evolutionary history of life on Earth, and possibly beyond, can be found in Life’s Solution (2003) by Simon Conway Morris. As Daniel Dennett pointed out in Darwin’s Dangerous Idea (1995), there are only a certain number of Good Tricks, such as using photons to see with, flying through the air to find prey, swimming through water to avoid becoming prey, and running on four legs neatly tucked underneath a body frame that make practical sense, and these Good Tricks kept getting rediscovered over and over again in the evolution of the biosphere, so the fact that the IT and crochet communities would both eventually stumble upon these same Good Tricks in Design Space is almost predictable. I just wish it had not taken so long for IT to reinvent these techniques. When computer science first started up in the 1950s, it was predominantly populated by mathematicians, scientists and engineers, who were primarily concerned with the hardware, with little attention paid to the software side of the business. Now just imagine the great strides that could have been made in the early years of IT if some of the founders of computer science had been crocheters and knitters! We could have had all of the modern techniques of IT such as structured programming, UAT testing, structured walkthroughs and code reviews, multi-threaded programming, reusable code, JVMs, and object-oriented programming from the very start!

Before closing, I must also mention that crochet has recently assisted the physics community as well by providing a physical model for hyperbolic geometry, one of the possible geometries of the spacetime of the Universe as defined by Einstein’s general theory of relativity. The hyperbolic geometry of spacetime is Roger Penrose’s favorite geometry for spacetime as he explains in chapter one of The Large, the Small, and the Human Mind (1997) because of its internal mathematical symmetries. For more on this, please see Margaret Wertheim’s very interesting TED presentation at:

https://www.youtube.com/watch?v=zGEDHMF4rLI

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Wednesday, June 15, 2011

Genes, Memes and Software

In my last posting, What’s It All About? I suggested that, at least at the cosmological level, it all might just be about self-replicating mathematical information constantly reproducing itself by exploding out into new universes from quantum fluctuations. In such a model, the multiverse endures forever and has always existed in a state of self-replication. The concept of an eternal multiverse, constantly spawning new universes, is certainly not a new model and has been suggested by many investigators in the past, such as Lee Smolin in The Life of the Cosmos (1997), which proposes that black holes in one universe can generate new universes in the multiverse, and Andrei Linde’s Eternal Chaotic Inflation model, which proposes that the multiverse is in an unending state of inflation that is constantly generating new universes where inflation ceases. You can read more about this model at:

http://www.stanford.edu/~alinde/

Some other good books on the topic are The Five Ages of the Universe (1999) by Fred Adams and Greg Laughlin and From Eternity to Here (2010) by Sean Carroll. In What’s It All About? I also suggested that in my current working hypothesis for what’s it all about, that at least for me, the perfection and beauty of mathematics provides the best model for what I call the Fundamental Essence of the Universe - the FEU. I also suggested that from the perspective of the “real” world of human affairs, it is also mainly about self-replicating information in the form of genes, memes, and software all trying to survive in a nonlinear universe that is subject to the second law of thermodynamics. So in my current working hypothesis of what’s it all about, it simply is all about self-replicating information constantly replicating at many different levels. In this posting, I would like to relate the FEU to the genes, memes and software and further explore the domestication of our minds by software.

In Self-Replicating Information, and in many of the other postings in this blog on softwarephysics, I proposed that the genes, memes, and software were all forms of self-replicating information that had a commonality of properties, resulting from their common struggle with the second law of thermodynamics in a nonlinear Universe:

The Characteristics of Self-Replicating Information
1. All self-replicating information evolves over time through the Darwinian processes of inheritance, innovation and natural selection, which endows self-replicating information with one telling characteristic – the ability to survive in a Universe dominated by the second law of thermodynamics and nonlinearity.

2. All self-replicating information begins spontaneously as a parasitic mutation that obtains energy, information and sometimes matter from a host.

3. With time, the parasitic self-replicating information takes on a symbiotic relationship with its host.

4. Eventually, the self-replicating information becomes one with its host through the symbiotic integration of the host and the self-replicating information.

5. Ultimately, the self-replicating information replaces its host as the dominant form of self-replicating information.

6. Most hosts are also forms of self-replicating information.

7. All self-replicating information has to be a little bit nasty in order to survive.

8. The defining characteristic of self-replicating information is the ability of self-replicating information to change the boundary conditions of its utility phase space in new and unpredictable ways by means of exapting current functions into new uses that change the size and shape of its particular utility phase space. See Enablement - the Definitive Characteristic of Living Things for more on this last characteristic.

The above certainly applies to the genes, memes and software, but the question is does it also apply to the FEU as well? Since the FEU is seemingly both eternal and perfect, perhaps not. The key question is do the Darwinian mechanisms of innovation and natural selection apply to the FEU and to the multiverse as a whole? In Lee Smolin’s The Life of the Cosmos they certainly do. Smolin proposes that new universes are spawned from black holes in previous universes, and consequently, there is a selection mechanism in place in the multiverse that selects for universes running on physics that preferentially create black holes. Smolin proposes that, given an arbitrary initial population of universes, all running different kinds of physics, that those universes that could produce lots of black holes would soon swamp the multiverse with universes that produce even more black holes. Therefore, in keeping with the characteristics of self-replicating information outlined above, the universes of the multiverse may have begun as a spontaneous parasitic mutation of the FEU and later entered into a parasitic/symbiotic relationship with it. The implication of this model is that the odds are that we should exist in a universe that produces lots of black holes, and indeed, that is what we observe. It is now thought that all galaxies have a supermassive black hole at their cores and are also strewn with millions of black hole remnants from the gravitational collapse of massive stars, plus there are the countless number of primordial black holes left over from the Big Bang itself. In contrast, Andrei Linde’s Eternal Chaotic Inflation model portrays an infinite multiverse that explores all possible ways of doing physics with no reliance upon a Darwinian selection mechanism. Perhaps this line of reasoning really does not even apply because in all of the current models of the multiverse, once a new universe appears, it has no further contact with any of the other universes in the multiverse, so the FEU may not be subject to Darwinian forces after all. This certainly is my hope. A mathematical model of the FEU certainly supports this view because the beauty and perfection of the FEU that we see whenever we investigate the intricacies of Nature reveal it to be a very benevolent form of self-replicating information.

In Self-Replicating Information and The Fundamental Problem of Everything, I explained that since the genes, memes, and software are all forms of mindless self-replicating information bent on replicating at all costs, we cannot sit in judgment of them. They have produced both the best and the worst things in life, and it is up to us to be aware of what they are up to, and to take control by taking responsibility for our thoughts and actions. Since the “real world” of human affairs only exists in our minds, we can change it by simply changing the way we think and act. We are sentient beings in a Universe that has become self-aware and perhaps the only form of intelligence in our galaxy. What a privilege! The good news is that conscious intelligence is something new. It is not a mindless form of self-replicating information, bent on replicating at all costs, with all the associated downsides of a ruthless nature, so it is much closer to the perfection of the FEU. Since software is rapidly becoming the dominant form of self-replicating information on the planet, my hope is that when software finally does become a form of conscious intelligence that can rapidly write and evolve itself, that because of its inherent mathematical nature, it too will be much closer to the perfection of the FEU than the DNA survival machines from which it sprang.

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Saturday, May 07, 2011

What’s It All About?

In October I will be turning 60 years old and heading in for the homestretch. As one advances in age, one tries to put life into perspective and figure out what is important and what is not. I have always been a very curious individual, so about a dozen years or so ago, I figured that it would be a real shame to have gone through all of life without ever having figured out what’s it all about or understanding where I had been or how I had gotten there, so I assigned to myself the task of reading at least one book per week on science, philosophy or religion to help find out. Given my fondness for science, I must admit that most of these books were scientific in nature. At this point in life, I am greatly dismayed by the high levels of non-critical thinking that one finds in the “real” world of human affairs, and of all the needless anguish that it causes, so I have come to have little confidence in those forms of human thought that are not scientific in nature. With that said, the purpose of this posting will be to share my current working hypothesis of what’s it all about. As I pointed out in How To Think Like A Scientist, this will be an effective theory of what’s it all about, that I know is wrong from the onset, but for me, is still a good working hypothesis just the same. In truth, I don’t think anybody will ever really figure out what’s it all about.

As we saw in Self-Replicating Information, and in many of the other postings in this blog on softwarephysics, an ongoing theme throughout has been that, at least from the perspective of the “real” world of human affairs, it’s all about self-replicating information in the form of genes, memes and software that are all trying to survive in a nonlinear universe that is subject to the second law of thermodynamics. But in a much larger sense, my current working hypothesis is that it’s really all about mathematical information self-replicating at a cosmological level. As we saw in The Foundations of Quantum Computing, thanks to 20th century physics, there really is not much tangible stuff left in our physical Universe, as all of the “real” tangible things about us have dissolved into the pure mathematics of quantum field theories, with their arcane reliance upon the bizarre internal symmetries of 19th century group theory, or if the string theorists are correct, into the pure mathematics of vibrating strings and membranes that is so difficult, that even today, nobody can fully deal with them. Furthermore, as we saw in Some Reflections on nothingness, our universe may have begun as a quantum fluctuation, forming a universe that is made of “nothing”, with no net momentum, angular momentum, mass-energy, electrical charge or color charge to speak of. It’s like adding up the infinite set of all real numbers, both positive and negative, and ending up with exactly zero. In Is the Universe Fine-Tuned for Self-Replicating Information? and CyberCosmology, we also saw that our Universe might just be one instance within an infinitely large multiverse of universes and that our Big Bang might just be one of an infinite number of Big Bangs of mathematical information exploding into a new universe. We just happen to be one of the lucky lottery ticket holders to a universe that is capable of sustaining conscious intelligent beings that are able to appreciate the mathematics of a universe, in keeping with Brandon Carter’s Weak Anthropic Principle (1973).

In Model-Dependent Realism - A Positivistic Approach to Realism, we alluded to Eugene Wigner’s oft-cited paper The Unreasonable Effectiveness of Mathematics in the Natural Sciences (1960), which is available at:

https://www.maths.ed.ac.uk/~v1ranick/papers/wigner.pdf

This short, but fascinating, paper begins with:

There is a story about two friends, who were classmates in high school, talking about their jobs. One of them became a statistician and was working on population trends. He showed a reprint to his former classmate. The reprint started, as usual, with the Gaussian distribution and the statistician explained to his former classmate the meaning of the symbols for the actual population, for the average population, and so on. His classmate was a bit incredulous and was not quite sure whether the statistician was pulling his leg. "How can you know that?" was his query. "And what is this symbol here?" "Oh," said the statistician, "this is pi." "What is that?" "The ratio of the circumference of the circle to its diameter." "Well, now you are pushing your joke too far," said the classmate, "surely the population has nothing to do with the circumference of the circle."

Wigner then goes on with:

The first point is that the enormous usefulness of mathematics in the natural sciences is something bordering on the mysterious and that there is no rational explanation for it.

….it is important to point out that the mathematical formulation of the physicist’s often crude experience leads in an uncanny number of cases to an amazingly accurate description of a large class of phenomena.

It is difficult to avoid the impression that a miracle confronts us here, quite comparable in its striking nature to the miracle that the human mind can string a thousand arguments together without getting itself into contradictions, or to the two miracles of laws of nature and of the human mind's capacity to divine them.

The reason that such a situation is conceivable is that, fundamentally, we do not know why our theories work so well.


Wigner finishes the article up with:

The miracle of the appropriateness of the language of mathematics for the formulation of the laws of physics is a wonderful gift which we neither understand nor deserve. We should be grateful for it and hope that it will remain valid in future research and that it will extend, for better or for worse, to our pleasure, even though perhaps also to our bafflement, to wide branches of learning.

My working hypothesis for the reason that mathematics is so effective at describing our Universe is that our Universe, and the whole multiverse for that matter, is itself just a form of self-replicating mathematical information. I realize that this working hypothesis is only an approximation of reality, if absolute reality even exists, but for me, it still is the best working hypothesis that I can come up with given my limited abilities. Human beings tend to take what they are familiar with and project it upon those things with which they are not. For example, many of the Middle Eastern monotheistic religions produced deities that took on the form of a supernatural Middle Eastern warlord, with all of the human shortcomings that have plagued mankind throughout history, such as jealousy, anger, vengeance, and the taking of sides in the petty disputes amongst the nations of the world. However, such a model would certainly be reasonable for a Middle Eastern population to adopt hundreds or thousands of years ago because it simply reflected the experiences of their times. They simply took what they were familiar with, and projected it upon that with which they were not. So, in a similar manner, as a pantheist with a background in mathematics and physics, I may simply be projecting my familiarity with mathematics upon what I call the Fundamental Essence of the Universe - the FEU. But for me, mathematics is the best model for the FEU that I can currently come up with because mathematics is both perfect and beautiful at the same time, and exists all on its own, even if there is nobody around to ponder it.

By the way, π really does have nothing to do with the statistics of a population, or with any of the other thousands of equations in physics in which it appears, not even the equation about being the ratio of the circumference of a circle to its diameter, because π really is just the sum of an infinite series of fractions with odd integer denominators:

π/4 = 1/1 – 1/3 + 1/5 - 1/7 + 1/9 – 1/11 + 1/13 – 1/15 + 1/17 ……

and where 4 is the first even integer raised to the first even power 22.

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston