| This book is all about a computer programming language called AgentSpeak, and a particular implementation of AgentSpeak called Jason. The AgentSpeak language is intended for developing multi-agent systems. Before we start to investigate how to program with AgentSpeak, it seems appropriate to try to understand in more detail what multi-agent systems are, and some of the ideas that underpin the language.
To better understand what we mean by the terms ‘agent’ and ‘multi-agent systems’, let us consider how agents relate to other types of software. Start by considering functional programs, which are possibly the simplest type of software from the point of view of software development and software engineering. A functional program takes some input, chews over this input, and then on the basis of this, produces some output and halts. A compiler is an example of such a program: the input is some source code (e.g. a .java file), and the output is bytecode (.class files), object code or machine code. When we learn how to program, the types of program we typically construct are of this type: the sorts of exercises we set to programmers in an introductory Java class are things like ‘read a list of numbers and print the average’. Functional programs are so called because, mathematically, we can think of them as functions f : I → O from some domain I of possible inputs (source code programs, in our ‘compiler’ example) to some range O of possible outputs (bytecode, object code, etc).We have a range of well-established techniques for developing such programs; the point is that, from the standpoint of software development, they are typically straightforward to engineer. |