Tuesday, 29 May 2012

Artificial Intelligence: Prerequisites.


How do we go about developing "Artificial Intelligence"?

If I recall correctly, Von Neumann once defined Artificial Intelligence very simply as "Advanced Computer Science".

In a different context, Arthur C Clarke said that "Any sufficiently advanced technology is indistinguishable from magic."

Inverting the intended sense of the latter phrase, it seems that, when envisioning what Artificial Intelligence might look like, we naturally seek
conceptually advanced techniques; a brilliant and unified theory of intelligence seemingly being required to produce an intelligent machine.

In other words, we look for the silver bullet, which, as Fred Brooks (again, from a different context) reminds us, does not exist.

Let us be a little more humble then. The development of intelligent machines might well not be so special as to require the development brilliant theoretical underpinnings.

The little I know of biologicial brains leads me to suspect that their function is more readily understood as the aggregate of a few hundred relatively simple processes rather than a small number of stupendously sophisticated ones.

Indeed, to make Artifical Intelligence a reality, we should focus on the prosaic and mundane rather than the exotic.

In my mind, the basic thing that stands in our way is simple software engineering, and the generally rather crude way that we currently go about it.

We need better tools and processes for developing complex software. Not just better languages, but better IDEs, testing frameworks, build servers, static analysis tools, refactoring tools, management tools etc.. etc...

The seemingly exotic, once we are familiar with it, collapses to the banal and the mundane. What is left is just a lot of hard work.

Let us get to it, then.