Differences between AN-1 and AN-2
AN-2 is a consequent improvement of AN-1 and the main difference between them is that Kernel AN-2 is significantly smaller and simpler than Kernel AN-1. Sure, there are others differences between AN-1 and AN-2, but their main difference brings AN-2 as a real advance of AN-1. News are evidents in AN-2 and we can find lots of them. Yielders used in AN-1 are not included in Kernel AN-2 and are defined only in Full AN-2. Moreover Primitive Actions of AN-2 do not take sorts of data as arguments , so there is no depence on "Unified Algebras". Another new is that the use of bindings in AN-2 has been changed. Now produced bindings of AN-1 are regarded as computed values in AN-2 and simply given as transients. Also, cause produced bindings were rarely used in pratice, the hybrid functional and bindings combinators have been dropped altogether in AN-2. Another simplification in AN-2 is to let actions themselves be treated as data, instead of requiring an explicit embedding as abstractions; this also eliminates the need for duplicating all the action combinators as data operations on abstractions. Besides the shown news of AN-2,various other concepts have been eliminated altogether in AN-2. These include commitment, choice from arbitrary data sorts, indirect bindings, snapshots of the current storage, local storage, reuse of cells and agents, message buffers, contracting agents, message senders, message serial numbers, and offers of contracts. With the use of AN-1, a few concepts have been found to be lacking in it, and are now supported by the proposed AN-2. These include global access to storage (appropriate when the 'distributed' actions are actually threads of the same program), an 'otherwise' combinator for recovering from failure, and a combinator for exceptional data sequencing. Each agent now has access to the current time, permitting the intended semantics of delay and timeout constructs to be expressed in AN-2. In contrast to the eight parts of AN-1, AN-2 has only five main parts, concerned with:
The separation of the flow of data and control into the functional and basic facets in AN-1 turned out not to be useful, and it has been abandoned. The other parts of AN-2 correspond closely to single parts of AN-1; the parts of AN-1 concerned with directive or hybrid binding actions have simply been eliminated. AN-2, like AN-1, has two levels: Kernel Action Notation, defined using Modular SOS; Full Action Notation, defined by reduction to Kernel Action Notation. AN-2 is also parameterized by a Data Notation that provides a collection of data sorts, operations, and predicates. |