Skip to main content
Log in

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

  • Published:
Annals of Mathematics and Artificial Intelligence Aims and scope Submit manuscript

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Explore related subjects

Discover the latest articles, news and stories from top researchers in related subjects.

References

  1. J. Armstrong, R. Virding and M. Williams, Concurrent Programming in Erlang (Prentice-Hall International, 1993).

  2. M.E. Bratman, D.J. Israel and M.E. Pollack, Plans and resource bounded practical reasoning, Computational Intelligence 4 (1988) 349–355.

    Google Scholar 

  3. L. Cardelli and P. Wegner, On understanding types, data abstraction, and polymorphism, Computing Surveys 17 (1985) 471–522.

    Google Scholar 

  4. N. Carriero and D. Gelernter, Linda in context, Communications of the ACM 32(4) (1989) 444–458.

    Google Scholar 

  5. M. Carro and M. Hermenegildo, Concurrency in prolog using threads and a shared database, in: Proceedings of ICLP99, ed. D.D. Schreye (MIT Press, 1999) pp. 320–334.

  6. D. Chu and K.L. Clark, IC-Prolog II: A multi-threaded Prolog system, in: Proc. of the ICLP'93 Workshop on Concurrent & Parallel Implementations of Logic Programming Systems, eds. G. Succi and G. Colla (1993) pp. 115–141.

  7. K. Clark and F. McCabe, Ontology representation and inference in Go!, Technical Report, www.doc.ic.ac.uk/~klc/ontology.html (2003).

  8. K.L. Clark, P.J. Robinson and R. Hagen, Multi-threading and message communication in Qu-Prolog, Theory and Practice of Logic Programming 1(3) (2001) 283–301.

    Google Scholar 

  9. S. Constantini and A. Tocchio, A logic programming language for multi-agent systems, in: Proc. of JELIA02-8th European Conf. on Logics in AI, Lecture Notes in Artificial Intelligence, Vol. 2424, (Springer, 2002) pp. 1–13.

  10. J. Eskilson and M. Carlsson, SicstusMT-a multithreaded execution environment for SICStus Prolog, in: Principles of Declarative Programming, eds. K.M. Catuscia Palamidessi and H. Glaser, Lecture Notes in Computer Science, Vol. 1490 (Springer, 1998) pp. 36–53.

  11. T. Finin, R. Fritzson, D. McKay and R. McEntire, KQML as an agent communication language, in: Proc. of 3rd International Conference on Information and Knowledge Management (1994).

  12. FIPA, Fipa SL content language specification, Technical Report, Foundation for Intelligent Physical Agents, www.fipa.org (2001).

  13. FIPA, Fipa communicative act library specification, Technical Report, Foundation for Intelligent Physical Agents, www.fipa.org (2002).

  14. M. Fisher, A survey of concurrent MetateM-the language and its applications, in: Temporal Logic, eds. D. Gabbay and H. Ohlbach, Lecture Notes in Artificial Intelligence, Vol. 827 (Springer, 1994) pp. 480–505.

  15. G. D. Giacomo, Y. Lesperance and H. Levesque, Congolog, a concurrent programming language based on the situation calculus, Artificial Intelligence 1-2(121) (2000) 109–169.

    Google Scholar 

  16. M. Hanus, A unified computation model for functional and logic programming, in: Proc. of 24th ACM Symposium on Principles of Programming Languages (POPL'97) (1997) pp. 80–93.

  17. H. Haugeneder and D. Steiner, Co-operative agents: Concepts and applications, in:Agent Technology, eds. N.R. Jennings and M.J. Wooldridge (Springer, 1998) pp. 175–202.

  18. R. Hindley, The principal type scheme of an object in combinatory logic, Trans. AMS 146 (1969) 29–60.

    Google Scholar 

  19. K.V. Hindriks, F.S. de Boer, W. van der Hoek and J.-J.C. Meyer, Formal semantics for an abstract agent programming language, in: Intelligent Agents IV, eds. Singh, A.S. Rao and M. Wooldridge, Lecture Notes in Artificial Intelligence, Springer (1997) pp. 215–230.

  20. D. Kinny, VIP: A visual programming language for plan execution systems, in: Proc. of 1st International Joint Conf. on Autonomous Agents and Multi-Agent Systems (ACM Press, 2002) pp. 721–728.

  21. J. Lloyd, Interaction and concurrency in a declarative programming language, Unpublished report, Department of Computer Science, Bristol University, London (1988).

    Google Scholar 

  22. J. Lloyd, Programming in an integrated functional and logic programming language, Journal of Functional and Logic Programming, (March 1999) 1–49.

  23. F. McCabe, L&O: Logic and Objects (Prentice-Hall International, 1992).

  24. F. McCabe, Go! Reference Manual, Technical Report, Available from author, or http:// sourceforge.net/projects/networkagent/(2003).

  25. F. McCabe and K. Clark, April-Agent PRocess Interaction Language, in: Intelligent Agents, eds. N. Jennings and M. Wooldridge, Lecture Notes in Artificial Intelligence, Vol. 890 (Springer, 1995) pp. 324–340.

  26. D. Miller and G. Nadathur, An overview of ?-prolog, in: Proc. of 5th International Conference and Symposium on Logic Programming, Seattle (1988).

  27. R. Milner, A theory of type polymorphism in programming, Computer and System Sciences 17(3) (1978) 348–375.

    Google Scholar 

  28. M. Minsky, A framework for representing knowledge, in: Psychology of Computer Vision, ed. P.Winston (MIT Press, 1975) pp. 211–277.

  29. A. Omnicini and F. Zambonelli, Coordination for internet application development, Autonomous Agents and Multi-Agent Systems 2(3) (1999) 251–269.

    Google Scholar 

  30. F. Pereira and D.H. Warren, Definite clause grammars compared with augmented transition network, Artificial Intelligence 13(3) (1980) 231–278.

    Google Scholar 

  31. A.S. Rao, AgentSpeak(L): BDI agents speak out in a logical computable language, in: Agents Breaking Away, Lecture Notes in Artificial Intelligence, Vol. 1038 (Springer, 1996) pp. 42–55.

  32. A.S. Rao and M.P. Georgeff, An abstract architecture for rational agents, in: Proceedings of Knowledge Representation and Reasoning (KR&R92) (1992) pp. 349–349.

  33. Y. Shoham, Agent0: An agent-oriented language and its interpreter, in: Proceedings of the National Conference on AI (AAAI-91) (1991) pp. 704–709.

  34. P. Tarau and V. Dahl, Mobile threads through first order continuations, in: Proceedings of APPAIGULP-PRODE'98, Coruna, Spain (1998).

  35. S.R. Thomas, PLACA, an agent oriented programming language, PhD thesis, Department of Computer Science, Stanford University, Stanford (1993).

    Google Scholar 

  36. P. Van Roy and S. Haridi, Mozart: A programming system for agent applications, in: International Workshop on Distributed and Internet Programming with Logic and Constraint Languages, Part of International Conference on Logic Programming (ICLP 99), http://www.mozart-oz.org/ papers/abstracts/diplcl99.html (1999).

  37. T.I. Wang and K.L. Clark, Distributed logic porgramming using mobile agents, in: Proc. of 18th International Conference on Advanced Information Networking and Applications (AINA-2004) (IEEE Press, 2004).

  38. S.N. Willmott, J. Dale, B. Burg, C. Charlton and P. O'Brien, Agentcities: A worldwide open agent network, Agentlink News (8) (November 2001) 13–15.

    Google Scholar 

  39. F.H. Zoltan Somogyi and T. Conway, Mercury: an efficient purely declarative logic programming language, in: Proc. of the Australian Computer Science Conference (1995) pp. 499–512.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Clark, K., McCabe, F. Go! — A Multi-Paradigm Programming Language for Implementing Multi-Threaded Agents. Annals of Mathematics and Artificial Intelligence 41, 171–206 (2004). https://doi.org/10.1023/B:AMAI.0000031195.87297.d9

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/B:AMAI.0000031195.87297.d9

Navigation