Annals of Mathematics and Artificial Intelligence

, Volume 41, Issue 2, pp 171–206

Go! — A Multi-Paradigm Programming Language for Implementing Multi-Threaded Agents

  • K.L. Clark
  • F.G. McCabe

DOI: 10.1023/B:AMAI.0000031195.87297.d9

Cite this article as:
Clark, K. & McCabe, F. Annals of Mathematics and Artificial Intelligence (2004) 41: 171. doi:10.1023/B:AMAI.0000031195.87297.d9


Go! is a multi-paradigm programming language that is oriented to the needs of programming secure, production quality, agent based applications. It is multi-threaded, strongly typed and higher order (in the functional programming sense). It has relation, function and action procedure definitions. Threads execute action procedures, calling functions and querying relations as need be. Threads in different agents communicate and coordinate using asynchronous messages. Threads within the same agent can also use shared dynamic relations acting as Linda-style tuple stores. In this paper we introduce the essential features of Go!. We then illustrate them by programming a simple multi-agent application comprising hybrid reactive/deliberative agents interacting in a simulated ballroom. The dancer agents negotiate to enter into joint commitments to dance a particular dance (e.g., polka) they both desire. When the dance is announced, they dance together. The agents' reactive and deliberative components are concurrently executing threads which communicate and coordinate using belief, desire and intention memory stores. We believe such a multi-threaded agent architecture represents a powerful and natural style of agent implementation, for which Go! is well suited.

agent programmingmulti-paradigm programmingthreads

Copyright information

© Kluwer Academic Publishers 2004

Authors and Affiliations

  • K.L. Clark
    • 1
  • F.G. McCabe
    • 2
  1. 1.Department of ComputingImperial CollegeLondonUK
  2. 2.Fujistu Labs of AmericaSunnyvaleUSA