AI Programming Systems & Languages - Programming for AI
"It is an interesting time to be an AI researcher. Computer speeds and capacities have increased to the point that tasks that used to take days can now be done in seconds. The pervasive role of computers in everyday life has emphasized the need for people and computers to co-exist and, one hopes, complement rather than hinder each other. Within the field of AI itself, we now have a solid understanding of many of the core issues. AI concepts like search, planning, learning, natural language, and so on have mature theoretical underpinnings and extensive practical histories. In many cases we understand just how hard some of these problems are to solve, and in these cases we often have a good understanding of how approximate solutions can be found and what the tradeoffs are in using them. Supported by these two trends, it is now possible to build AI systems that actually perform tasks that people find difficult (and that require intelligence, however exactly you define it) in reasonable amounts of time."
- George Ferguson and James Allen
An AI system is an orchestrated performance, not unlike a Broadway musical. Both come to life as the result of the choreographed interplay of diverse parts. In the theater, the music and words, scenery and lighting, actors and dancers, all interact to create a purposeful experience. Similarly, the system hardware of your desktop PC sets the stage on which software technologies such as voice recognition, web access, text-to-speech, and 3-D image generators, perform their roles as directed by a complex computer program. The choice of a programming language also has its theatrical counterpart. The decision as to whether the concept should be embodied within a musical, an opera, or drama, obviously sets parameters for what can and cannot be done.
The choice to write it in English, French, Spanish or Italian will determine how many of the cast, crew and audience will understand it without translation, and if translation is provided, will meaning be lost. A programmer faces similar decisions when choosing a programming language. The language must be capable of representing the necessary concepts and it must be able to be understood by the other system components. After all, you wouldn't use a language developed for robot navigation to program a system designed to decode music...or would you ?
And just as advancements in construction and acoustics changed the shape of theater architecture, and the introduction of wireless microphones made possible new staging options, the universe of systems and languages is evolving on every level such that it offers increasingly spectacular performances. For example:
- the personal computer, which greatly expanded the audience;
- time sharing, which allows truly interactive programs;
- list processing languages, which expanded the scope of programs from numerical calculation to symbolic reasoning; * cheap memory, which allows programs to become very large;
- interactive graphics chips, which make computer games and virtual reality possible;
- standard image formats, which allow incorporating images in programs; and,
- inexpensive mass storage, which allows programs to store and access huge amounts of data.
AI scientists are key players in this dynamic environment, where yesterday's dreams are today's realities, and today's dreams are being worked on.