Intelligent Software and the Logic of Infinite Monkeys
So what is this whole thing about creating “intelligent” software? To understand where we need to go, we need to understand where we came from. So let’s take a step back and think of the most important thing (apart from learning your syntax) that you need to write your code.
Logic. The most important characteristic of writing any software is the underlying “logic”. In 1957, Herbert Simon and Allen Newell created the GPS (General Problem Solver) which takes in “Logic” and does a “Means-Ends Analysis”. Something like this,
"I want to go to the market to buy some seeds. What’s the difference between what I have and what I want? The distance. How do I reduce the distance? Using an automobile. What automobile do I have? A car. My car ran out of gas. Where to buy gas? In a Gas station..."
And so goes the Means-Ends analysis. This is useful to analyze a given problem and come up with a logic to find the solution. This, to a fair extent, actually reflects the human thought process of arriving at a logic to solve a problem. Given the year it was proposed, Means-Ends analysis was useful. But it does not say what to do when several actions can achieve the same goal, or when no action will completely achieve it.
When a present day software architect sits down to think of architecture for a Web Application, he has innumerable queries running in his mind. Clearly, we need ideas which are smarter than the Means-Ends analysis. Especially, if we want the software to be intelligent enough to understand and react to logic.
But will there ever be a limit to what a software can do? Over the years, many scientists have tried answering that question. The classic case being the Turing Test, that Alan Turing proposed in his seminal paper, “Computer Machinery and Intelligence” in 1950. Despite extensive research, no software program has developed enough sophistication to pass the Turing Test. But there are other schools of thought as well. The Infinite Monkey Theorem states that,
"a monkey hitting keys at random on a typewriter keyboard for an infinite amount of time will almost surely type a given text, such as the complete works of William Shakespeare." (Source: Wikipedia)
In more concrete terms, monkey is a metaphor for a device (or software) that produces a random sequence of letters for infinite time. And the probability of Statistical Independence, in fact, proves mathematically that this theorem is true.
Corollary, if “random” intelligence of the Infinite Monkey Theorem has a probability of greater than Zero, then the probability of “deliberate” intelligence embedded as “Logic” within a software should also be possible at a much lesser and more definite time than infinity. So, we could safely say that the limits of software intelligence can be stretched to alteast such an extent that it passes the Turing test.
In this post, we establish the fact that “Intelligent” software is not a theoretical proposition, but a concrete notion, achievable in finite time. In the next post, we’ll continue to delve deeper into this notion.



Comments
A very thought provoking post.
Intelligent software is one which is just like the human mind that has a very important quality called Self Awareness. Scientists and theorists still have not been able to unravel the mysteries of human mind. Now, assuming that the human mind is wired up using 1’s and 0’s binary logic or “If--- Else if” computer like logic, the development of an intelligent and self aware software is possible in the future as it lies within the logic domain. If not, then we need to look at something which lies above the realm of complex logic matrices.
Posted by: Nikhil Patangay | April 5, 2009 8:02 PM