What should we use to program agents? Does programming agents require a specific paradigm? What are the differences between agents and objects?
Requirements:
- "self-containment" (as a premise to autonomy)
- OO languages (Smalltalk, Java).
- Prototype-based, frame-based (cf Dony)
- Components: Java Beans, COM/Active X
- "liveness" (for situated and reactive behavior)
- Processes, threads, daemons
- explicit knowledge representation
- support for reasoning (for proactive and adaptive behavior)
- expert systems: Lisp, Prolog, JESS
- CSPs and Distributed CSPs
- support for interaction (for social behavior)
- sockets, RPCs
- Blackboards (Hayes-Roth), Tuple spaces (Linda [5], Sun [2], Blitz [8], IBM [3])
- mobility
The challenge is to integrate the above requirements in a simple yet capable framework. The evolution of tools shows that we are getting there slowly:
- Actors (Gul Agha: ABCL/1, Briot for Actalk) (crs Joel) [1]
- Distributed Computing: CORBA, RMI, DCOM
- Jini (Sun) [6][7](cf my presentation [4] based on "Noel's Nuggets")
- Web Services: .NET, Sun One, HPs e-services...
- Peer-to-peer frameworks (JXTA, U-P2P), Grid computing
However none of the above tools still manages to cover all the requirements. We need specific AgentFrameworks and architectures...
Agents vs Actors vs Objects: some criteria to make the distinction:
- asynchronous message passing for Actors and Agents
- typed messages for Agents
- "proactive" message sending for agents, also possible for actors
back to SoftwareAgentCourse
(last edited November 21, 2006)
Find Page by browsing or searching