Thursday, March 15, 2007

Autonomous Agent and Semantic Automation

Semantic automation is the act of mapping a well-understood notion to a linguistic construct. For instance, the type constructor class is a semantic automation for the notion of abstract data type. A construct for defining template classes is a further generalization of the notion of class towards the concept of abstract data type.

A more illustrative example would be writing the C language for-loop using only if-else and go-to statements. Here, the engineer will be exposing the control structure of a well-understood notion, mixed with the intended statements (the loop body). When a defect needs to be fixed, one has to be concerned with the control structure statements, just as well as the intended statements.

Presently, the implementation of the simplest form of an autonomous agent requires proxies, adaptors and quite a few other complex coding techniques. The coding techniques are analogous to the control statements of the for-loop mentioned above. It is a major challenge to locate the source of a defect. First, one has to determine whether the defect is in the statements relevant to the autonomous agent, or the much larger code related to its control structure.

Even with all the irrelevant complexity, one can only implement very simple forms of autonomous agents in the context of a virtual machine. In other words, even though the notion of strong mobility is well understood, its semantic automation is not within the reach of virtual machine technology.

An autonomous agent is a process, and not a class or a bundle of classes. As a process, an autonomous agent terminates its execution on one node, and continues its execution on another node precisely in the state that it left its origin. The semantic automation of this abstraction is completely out of scope of the capabilities of a virtual machine. Indeed, a virtual machine has no concept of a process. In fact, even threads are mapped to the threads of the platform on which the virtual machine runs.

The technology that can materialize the semantic automation of the notion of an autonomous agent is a distributed operating system. As such, the operating system can remove the process representing an autonomous agent from one node, and add it to the list of processes at another node. The transport will be transparent to the process of autonomous agent. The transport is equivalent to the notion of a process waiting for its execution slice.

The linguistic construct for the semantic automation of an autonomous agent is actually quite simple. Consider the statement “travel IP-address”, where IP-address is the address to reach the destination node. The semantics is that, when an autonomous agent visits this statement, the transport will take place, retaining the state of the agent at the destination node. So now the question is, how does one go about implementing the travel statement?

As mentioned earlier, the automation of the travel statement requires support at infrastructure level, in the form of a distributed operating system that manages its own processes and threads. The relationship between the language that provides the linguistic construct, and the distributed operating system will be analogous to that of C language and UNIX. Note that we are speaking of a relationship not the level of abstraction of the language. The C language is quite low-level.

The operating system and the language for the semantic automation of the notion of autonomous agent have been developed and successfully tested for a number of years. For more information please visit ZHMicro.