Abstract
Today we are witnessing a fundamental turn of software towards concurrency, distribution and interaction in every-day programming. This calls for introducing further abstraction layers on top of mainstream programming paradigms, to tackle more effectively the complexities that such turn implies. To this purpose, agent-oriented programming can be framed as an evolution of actors and concurrent objects, introducing a further level of human-inspired concepts for programming software systems. In that perspective, a program is conceived like an organization of human workers (agents), proactively doing some tasks and working together inside a possibly distributed environment—sharing resources and tools. In this paper we describe a new programming language called simpAL which allows for investigating agent-oriented programming as a general purpose paradigm for developing software systems.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Agha, G.: Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge (1986)
Agha, G.: Concurrent object-oriented programming. Commun. ACM 33(9), 125–141 (1990)
Agha, G., Callsen, C.J.: Actorspace: an open distributed programming paradigm. SIGPLAN Not. 28(7), 23–32 (1993)
Agha, G., Frolund, S., Kim, W., Panwar, R., Patterson, A., Sturman, D.: Abstraction and modularity mechanisms for concurrent computing. IEEE Parallel Distributed Technology: Systems Applications 1(2), 3–14 (1993)
Agha, G., Hewitt, C.: Concurrent programming using actors. In: Yonezawa, A., Tokoro, M. (eds.) Object-oriented Concurrent Programming, pp. 37–53. MIT Press, Cambridge (1987)
Agha, G., Yonezawa, A., Wegner, P. (eds.): Research Directions in Concurrent Object-Oriented Programming. The MIT Press (1993)
Armstrong, J.: Erlang. Communications of the ACM 53(9), 68–75 (2010)
Bellifemine, F., Caire, G., Poggi, A., Rimassa, G.: Jade: A software framework for developing multi-agent applications. lessons learned. Information & Software Technology 50(1-2), 10–21 (2008)
Bellifemine, F.L., Caire, G., Greenwood, D.: Developing Multi-Agent Systems with JADE. Wiley (2007)
Boissier, O., Bordini, R.H., Hübner, J.F., Ricci, A., Santi, A.: Multi-agent oriented programming with jacamo. Science of Computer Programming 78(6), 747–761 (2013)
Bordini, R., Dastani, M., Dix, J., El Fallah Seghrouchni, A. (eds.): Multi-Agent Programming Languages, Platforms and Applications, vol. 1, 15. Springer (2005)
Bordini, R., Dastani, M., Dix, J., El Fallah Seghrouchni, A. (eds.): Multi-Agent Programming Languages, Platforms and Applications, vol. 2. Springer (2009)
Bordini, R.H., Hübner, J.F.: BDI agent programming in AgentSpeak using jason (Tutorial paper). In: Toni, F., Torroni, P. (eds.) CLIMA 2005. LNCS (LNAI), vol. 3900, pp. 143–164. Springer, Heidelberg (2006)
Bordini, R., HĂĽbner, J., Wooldridge, M.: Programming Multi-Agent Systems in AgentSpeak Using Jason. John Wiley & Sons, Ltd. (2007)
Bordini, R.H., Dastani, M., Dix, J., El Fallah Seghrouchni, A.: Special Issue: Multi-Agent Programming, vol. 23 (2). Springer (2011)
Briot, J.-P., Guerraoui, R., Lohr, K.-P.: Concurrency and distribution in object-oriented programming. ACM Comput. Surv. 30(3), 291–329 (1998)
Chin, B., Adsul, B.: Responders: Language support for interactive applications. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 255–278. Springer, Heidelberg (2006)
Ciancarini, P.: Coordination models and languages as software integrators. ACM Comput. Surv. 28(2), 300–302 (1996)
Damiani, F., Giannini, P., Ricci, A., Viroli, M.: A calculus of agents and artifacts. In: Cordeiro, J., Ranchordas, A., Shishkov, B. (eds.) ICSOFT 2009. CCIS, vol. 50, pp. 124–136. Springer, Heidelberg (2011)
Dastani, M.: 2apl: a practical agent programming language. Autonomous Agents and Multi-Agent Systems 16(3), 214–248 (2008)
Dastani, M., van Riemsdijk, M.B., Dignum, F.P.M., Meyer, J.-J.C.: A programming language for cognitive agents goal directed 3APL. In: Dastani, M., Dix, J., El Fallah-Seghrouchni, A. (eds.) PROMAS 2003. LNCS (LNAI), vol. 3067, pp. 111–130. Springer, Heidelberg (2004)
Frolund, S., Agha, G.: Abstracting interactions based on message sets. In: Ciancarini, P., Wang, J. (eds.) ECOOP-WS 1994. LNCS, vol. 924, pp. 107–124. Springer, Heidelberg (1995)
Gamma, E.: Design patterns: elements of reusable object-oriented software. Addison-Wesley Professional (1995)
Gelernter, D.: Generative communication in Linda. ACM Transactions on Programming Languages and Systems 7(1), 80–112 (1985)
Gelernter, D., Carriero, N.: Coordination languages and their significance. Commun. ACM 35(2), 97–107 (1992)
Google. Dart programming language specification, Online document, available at: http://www.dartlang.org/docs/spec/ (last retrieved: April 12, 2012)
Haller, P., Odersky, M.: Event-based programming without inversion of control. In: Lightfoot, D.E., Ren, X.-M. (eds.) JMLC 2006. LNCS, vol. 4228, pp. 4–22. Springer, Heidelberg (2006)
Haller, P., Odersky, M.: Scala actors: Unifying thread-based and event-based programming. Theoretical Computer Science (2008)
Haller, P., Odersky, M.: Scala actors: Unifying thread-based and event-based programming. Theoretical Computer Science 410(23), 202–220 (2009)
Hickey, R.: Agents and asynchronous actions (in clojure), Online document, available at: http://clojure.org/agents (last retrieved: September 1, 2011)
Hindriks, K.V.: Programming rational agents in GOAL. In: Bordini, R.H., Dastani, M., Dix, J., El Fallah Seghrouchni, A. (eds.) Multi-Agent Programming: Languages, Platforms and Applications, vol. 2, pp. 3–37. Springer (2009)
Jennings, N.R.: An agent-based approach for building complex software systems. Commun. ACM 44(4), 35–41 (2001)
Jennings, N.R., Wooldridge, M.: Agent-oriented software engineering. Artificial Intelligence 117, 277–296 (2000)
Johnson, R.E., Foote, B.: Designing reusable classes. Journal of Object-Oriented Programming 1(2) (1988)
Karmani, R.K., Agha, G.: Actors. In: Padua, D.A. (ed.) Encyclopedia of Parallel Computing, pp. 1–11. Springer (2011)
Karmani, R.K., Shali, A., Agha, G.: Actor frameworks for the JVM platform: a comparative analysis. In: Proceedings of the 7th International Conference on Principles and Practice of Programming in Java, PPPJ 2009, pp. 11–20. ACM, New York (2009)
Kay, A.C.: The early history of smalltalk. In: Bergin Jr., T.J., Gibson Jr., R.G. (eds.) History of programming languages—II, pp. 511–598. ACM, New York (1996)
Miller, M.S., Tribble, E.D., Shapiro, J.S.: Concurrency among strangers. In: De Nicola, R., Sangiorgi, D. (eds.) TGC 2005. LNCS, vol. 3705, pp. 195–229. Springer, Heidelberg (2005)
Mitchell, J.: Concepts in Programming Languages. Cambridge University Press (2002)
Omicini, A., Ossowski, S.: Objective versus subjective coordination in the engineering of agent systems. In: Klusch, M., Bergamaschi, S., Edwards, P., Petta, P. (eds.) Intelligent Information Agents. LNCS (LNAI), vol. 2586, pp. 179–202. Springer, Heidelberg (2003)
Omicini, A., Ricci, A., Viroli, M.: Artifacts in the A&A meta-model for multi-agent systems. Autonomous Agents and Multi-Agent Systems 17(3), 432–456 (2008)
Omicini, A., Ricci, A., Viroli, M., Castelfranchi, C., Tummolini, L.: Coordination artifacts: Environment-based coordination for intelligent agents. In: Jennings, N.R., Sierra, C., Sonenberg, L., Tambe, M. (eds.) AAMAS 2004, vol. 1, pp. 286–293. ACM (2004)
Pierce, B.C.: Types and programming languages. MIT Press, Cambridge (2002)
Pokahr, A., Braubach, L., Lamersdorf, W.: Jadex: A BDI reasoning engine. In: Bordini, R., Dastani, M., Dix, J., Seghrouchni, A.E.F. (eds.) Multi-Agent Programming. Kluwer (2005)
Rao, A.S.: AgentSpeak(l): BDI agents speak out in a logical computable language. In: Perram, J., Van de Velde, W. (eds.) MAAMAW 1996. LNCS, vol. 1038, pp. 42–55. Springer, Heidelberg (1996)
Rao, A.S., Georgeff, M.P.: BDI Agents: From Theory to Practice. In: First International Conference on Multi Agent Systems, ICMAS 95 (1995)
Ricci, A., Piunti, M., Viroli, M.: Environment programming in multi-agent systems: an artifact-based perspective. Autonomous Agents and Multi-Agent Systems 23, 158–192 (2011)
Ricci, A., Piunti, M., Viroli, M., Omicini, A.: Environment programming in CArtAgO. In: Bordini, R.H., Dastani, M., Dix, J., El Fallah-Seghrouchni, A. (eds.) Multi-Agent Programming: Languages, Platforms and Applications, vol. 2, pp. 259–288. Springer (2009)
Ricci, A., Santi, A.: Designing a general-purpose programming language based on agent-oriented abstractions: the simpAL project. In: Proc. of AGERE! 2011, SPLASH 2011 Workshops, pp. 159–170. ACM, New York (2011)
Ricci, A., Santi, A.: Programming abstractions for integrating autonomous and reactive behaviors: an agent-oriented approach. In: Proc. of AGERE! 2012, pp. 83–94. ACM, New York (2012)
Ricci, A., Santi, A.: A programming paradigm based on agent-oriented abstractions. International Journal on Advances in Software 5, 36–52 (2012)
Ricci, A., Santi, A.: Typing multi-agent programs in simpAL. In: Dastani, M., Hübner, J.F., Logan, B. (eds.) ProMAS 2012. LNCS, vol. 7837, pp. 138–157. Springer, Heidelberg (2013)
Ricci, A., Santi, A.: Concurrent object-oriented programming with agent-oriented abstractions the aloo approach. In: Proc. of AGERE! 2013, ACM, New York (2013)
Ricci, A., Santi, A.: Concurrent OOP with agents. In: Proceedings of the 4th Annual Conference on Systems, Programming, and Applications: Software for Humanity, SPLASH 2013. ACM, New York (to appear, 2013), Extended abstract
Ricci, A., Viroli, M., Piancastelli, G.: simpA: An agent-oriented approach for programming concurrent applications on top of java. Sci. Comput. Program. 76, 37–62 (2011)
Santi, A., Ricci, A.: Programming distributed multi-agent systems in simpAL. In: Flavio, D.P., Giuseppe, V. (eds.) Proceedings of the 13th Workshop on Objects and Agents (WOA 2012). CEUR Workshop Proceedings, vol. 892, Sun SITE Central Europe, RWTH Aachen University (2012)
Shoham, Y.: Agent-oriented programming. Artificial Intelligence 60(1), 51–92 (1993)
Sutter, H., Larus, J.: Software and the concurrency revolution. ACM Queue: Tomorrow’s Computing Today 3(7), 54–62 (2005)
Syme, D., Petricek, T., Lomov, D.: The F# asynchronous programming model. In: Rocha, R., Launchbury, J. (eds.) PADL 2011. LNCS, vol. 6539, pp. 175–189. Springer, Heidelberg (2011)
Varela, C., Agha, G.: Programming dynamically reconfigurable open systems with salsa. SIGPLAN Not. 36(12), 20–34 (2001)
Wegner, P., Zdonik, S.B.: Inheritance as an incremental modification mechanism or what like is and isn’t like. In: Gjessing, S., Chepoi, V. (eds.) ECOOP 1988. LNCS, vol. 322, pp. 55–77. Springer, Heidelberg (1988)
Yonezawa, A.: ABCL – an object-oriented concurrent system. MIT Press series in computer systems. MIT Press (1990)
Yonezawa, A., Briot, J.-P., Shibayama, E.: Object-oriented concurrent programming in ABCL/1. In: Meyrowitz, N.K. (ed.) Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 1986), Portland, Oregon, pp. 258–268. ACM (1986)
Yonezawa, A., Shibayama, E., Takada, T., Honda, Y.: Modelling and programming in an object-oriented concurrent language ABCL/1. In: Yonezawa, A., Tokoro, M. (eds.) Object-oriented Concurrent Programming, pp. 55–89. MIT Press, Cambridge (1987)
Yonezawa, A., Tokoro, M. (eds.): Object-oriented concurrent programming. MIT Press (1987)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Ricci, A., Santi, A. (2014). From Actors and Concurrent Objects to Agent-Oriented Programming in simpAL. In: Agha, G., et al. Concurrent Objects and Beyond. Lecture Notes in Computer Science, vol 8665. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-44471-9_17
Download citation
DOI: https://doi.org/10.1007/978-3-662-44471-9_17
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-44470-2
Online ISBN: 978-3-662-44471-9
eBook Packages: Computer ScienceComputer Science (R0)