Draft:Brahms (progamming language)

The Brahms Programming Language
The Brahms programming language is a general artificial intelligence language for developing intelligent distributed systems. Brahms is an Agent-Oriented Language for developing Intelligent Agents. Brahms falls in the category of Belief-Desire-Intention architecture and Cognitive architectures.

Agents are first-class citizens in the Brahms language, which means that they can be passed as a parameter, be assigned to a variable, send messages to and receive messages from other agents. Moreover, Brahms agents are belief-based and allow you to encapsulate intelligent behavior based on their beliefs. We can model an agent organization using group-membership inheritance. You can create many agents, each with their own encapsulated behavior, just as you can create many objects in an object-oriented language.

To learn more about the Brahms programming language, go to the Brahms developer website.

Who developed Brahms?
Brahms was developed in the Intelligent Systems Division at NASA Ames Research Center. The main contributors to the development of Brahms were:


 * Maarten Sierhuis - Co-founder of Ejenta, previously Senior Scientist at NASA Ames Research Center.
 * Bill Clancey - Senior Scientist at the Institute of Human Machine Cognition, previously Chief Scientist for Human-Centered Computing at NASA Ames Research Center.
 * Ron van Hoof - Senior Research Associate at the Institute of Human Machine Cognition, previously Senior Software Engineer at NASA Ames Research Center.
 * Chin Seah - Senior Software Engineer at Ejenta, previously Senior Software Engineer at NASA Ames Research Center.
 * Mike Scott - Senior Software Engineer at at NASA Ames Research Center

What are intelligent agents?
An intelligent agent is a computer program or system that is situated in an environment (i.e. it is able to detect or receive facts about the environment) and that is capable of autonomous action in order to meet its delegated objectives (i.e. goals and actions). Intelligent agents are autonomous in that they can sense, reason, learn and act independently.

What is agent-oriented programming?
Agent-oriented programming (AOP) is a programming paradigm where the development of the software is centered on the concept of "agents." Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which are data structures that contain data, in the form of fields, often known as attributes; and code, in the form of procedures or functions, often known as methods. A distinguishing feature of objects is that an object's methods can access and often modify the attributes of the object with which they are associated (objects have a notion of "this").

In contrast to object-oriented programming, which has objects at its core, AOP has agents at its core. Agents can be thought of as abstractions of objects with special capabilities. Intelligent Agents are agents that are


 * Autonomous: An agent acts independently; and agent's action choices depend on its own experience (through sensing and learning), rather than on knowledge of the environment that has been built-in by the developer. Code is not executed by calling methods, but runs continuously in an individual thread and the agent decides when it should perform some action.
 * Proactive: Agents have capabilities for action selection, prioritization, goal-directed behavior, and decision-making, all without intervention from a higher-level agent or object.
 * Reactive: Agents can can perceive the context (e.g. their environment) in which they operate and can react autonomously to it, as appropriately.
 * Social: Agents are able to engage other agents, systems or people through communication and coordination, and they may collaborate on a task

Brahms Language Concepts
Brahms models may be thought of as statements in a formal language developed for describing an agent's practice. Brahms programs model agent behavior written in the agent-oriented language.

The run-time component - the Brahms engine or virtual machine - can execute a Brahms model. A Brahms model can be used to model and simulate human-machine interaction for what-if experiments, for 'user models', or for developing and executing intelligent agent systems.

A traditional task or functional analysis of a system leaves out context and logistics, especially how environmental conditions come to be detected and how problems are resolved. Without consideration of context, we cannot accurately model how tasks are performed and information actually flows, nor can we properly design software agents that help automate tasks or interact with people as their collaborators. What is wanted is a model that includes aspects of reasoning found in an information-processing model, plus aspects of geography, agent movement, and physical changes to the environment found in a multi-agent simulation. A, so-called, model of work practice focuses on informal, circumstantial, and located behaviors by which synchronization occurs, such that the task distributions of humans and machines flow together to accomplish goals.

Brahms makes this kind of models possible. Brahms relates knowledge-based models of cognition (e.g., task models) with discrete simulation and behavior-based subsumption architecture. Brahms is centered on the concept of 'agents'. Agents' behaviors are organized into activities, inherited from groups to which agents belong. Most importantly, activities locate behaviors of people and their tools in time and space, such that resource availability and informal human participation can be taken into account. Thus Brahms differs from other multi-agent systems by incorporating chronological activities of multiple agents, conversations, as well as descriptions of how information is represented, transformed, reinterpreted in various physical modalities.

The Brahms language allows one to develop one or more intelligent agents.

The Brahms language is structured around the following concepts:


 * Agents and groups
 * Objects and classes
 * Beliefs and facts
 * Workframes
 * Activities
 * Thoughtframes
 * Geography

which can be related to each other in the following way: GROUPS contain

AGENTS who are located in an

→AREA and have

→BELIEFS that lead them to engage in

→→ACTIVITIES that are specified by

→→→WORKFRAMES that consist of

→→→→DETECTABLES that can detect

→→→→→FACTS created by

→→→→→→CONSEQUENCES

→→→→PRECONDITIONS of beliefs that lead to

→→→→ACTIONS, consisting of

→→→→→COMMUNICATION ACTIONS

→→→→→MOVEMENT ACTIONS

→→→→→PRIMITIVE ACTIONS

→→→→→other COMPOSITE ACTIVITIES

→→→→CONSEQUENCES of new beliefs and facts

→→→THOUGHTFRAMES that consist of

→→→→PRECONDITIONS and

→→→→CONSEQUENCES