posted by Nicholas Blachford on Wed 3rd Mar 2004 20:08 UTC
IconIf it's AI and robots you wanted from this series then this one is for you. Artificial Intelligence exists today, when this and other technologies merge the result will be more like Science Fiction than any PC. The technology will be fantastic, the possibilities endless. Get it wrong, the consequences dire.

To date this series has been conservative, I have been writing about future developments based almost entirely on today's technology. I haven't been trying to invent the future, just describe what in my view will end up in your home or on your work desk. I have been anticipating the future, not writing Science Fiction.

The technology I describe here is also based on today's technology, it doesn't require radical new technologies for this to work, it requires steps to be taken, a series of actions to be put into motion. The steps I describe are not the only way that this can happen, there may be any number of different scenarios and this is just one of them.

Hardware becomes software
The adding of FPGAs is just the first stage, in fact it's begun already [1]. The next stage will be to merge this capability with an Artificial Intelligence (AI) technique called evolutionary or genetic programming [2]. Evolutionary programming is a technique where a number of slightly different programs are generated by the computer then tested against some criteria. The programs which work best are then taken as the basis for the next stage where a new set of slightly different programs are generated. This process goes on through many iterations with the end result being the best piece of code the system can produce. It is called evolutionary programming for a good reason, it works in the same manner as the natural process of evolution.

Merging these techniques will produce a computer capable of programming FPGA circuits. The computer will not only use FPGA libraries but actively evolve these libraries to closer match the problems they deal with. If you think humans are better than any software at coding think again, evolutionary software produces new designs very quickly, they can get tested and optimised at a pace vastly quicker than any human can do. It doesn't matter how good your solution is, it can evolve a solution just as good if not better than yours [3].

Learning Systems
But there is further to go along this road. An evolutionary system doesn't "know" anything about what it's doing. What if we give it the ability to learn? This technology already exists in AI and is in use today, you may even be using it yourself. If you play Half Life you have already used such AI. Black and White in particular seems to have very powerful AI and the BBC reported that beta testers produced some very interesting reports:

"In one situation, there was a creature that kept losing a stone-throwing game to another creature. To get revenge, the first creature heated a rock, planted it in the pile of stones to be thrown and then fell on the floor laughing when its rival burned its hands. All this happened without intervention from the player." [4]

This type of AI is different from evolutionary programming. This type of AI can have motivations, and can learn. Combine it with evolutionary development and a FPGA based computer and you now have a very powerful computer which programs itself. When confronted with a problem it can figure out a solution itself, it'll know existing problems and existing solutions and how to improve them, it'll learn how to solve new problems and it'll learn very, very quickly.

Some problems are be better suited to hardware programmed into a FPGA, others better suited to software, some perhaps suit a mixture of both. It'll learn which suits which and as such be able to produce appropriate solutions. These are separate disciplines for humans but not so for computers, such a combined approach to solving software problems is almost unheard of today. Software can be moved into hardware but this will probably be produced by a second person, the integrated system I am talking about involves one person being an expert in both areas and I'm sure these exceptional humans are few and far between. Computers will see no distinction, they can be expert in any number of areas simultaneously.

The computer programming computer will become not only faster than a human but also capable of better results. Computers are used because they can compute faster than us. Eventually, when computers learn to program themselves that too will be faster than us. Computers will first match us then they shall go beyond us.

Software developers will outsource their jobs software.
Like so many things in the technology industry before them, Software developers will become obsolete

But what of the big projects, they'll still need programmers - wont they? The logic we use to combine libraries or modules is the same used to write algorithms, if this logic can be used by evolutionary programs to improve those algorithms they can work at a higher level as well. Perhaps one day in the future software development will consist of making sure the computer has a good description of the problem and input and output to test against, the human only acts as a guide.

Now let's thrown in a few more abilities, give our the computer the ability to communicate. They already know how to learn so we connect a few together and we have systems which can learn from each other.

Except they wont.
At this stage while they have become better than us at specific tasks they are still running tasks which are originally written by human hand, they are acting within set boundaries. If they have not been told to learn from one another they almost certainly wont.

But if we give them a certain problem they will, it is the search for the solution to this problem that will change everything.

Table of contents
  1. "Future of computing, Page 1/4"
  2. "Future of computing, Page 2/4"
  3. "Future of computing, Page 3/4"
  4. "Future of computing, Page 4/4"
e p (0)    31 Comment(s)

Technology White Papers

See More