Axum (programming Language)
   HOME

TheInfoList



OR:

Axum (previously codenamed Maestro) is a
domain-specific Domain specificity is a theoretical position in cognitive science (especially modern cognitive development) that argues that many aspects of cognition are supported by specialized, presumably evolutionarily specified, learning devices. The posit ...
concurrent Concurrent means happening at the same time. Concurrency, concurrent, or concurrence may refer to: Law * Concurrence, in jurisprudence, the need to prove both ''actus reus'' and ''mens rea'' * Concurring opinion (also called a "concurrence"), a ...
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
, based on the
Actor model The actor model in computer science is a mathematical model of concurrent computation that treats ''actor'' as the universal primitive of concurrent computation. In response to a message it receives, an actor can: make local decisions, create more ...
, that was under active development by
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
between 2009 and 2011. It is an
object-oriented language Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
based on the .NET
Common Language Runtime The Common Language Runtime (CLR), the virtual machine component of Microsoft .NET Framework, manages the execution of .NET programs. Just-in-time compilation converts the managed code (compiled intermediate language code) into machine instructio ...
using a C-like syntax which, being a domain-specific language, is intended for development of portions of a software application that is well-suited to concurrency. But it contains enough general-purpose constructs that one need not switch to a general-purpose programming language (like C#) for the sequential parts of the concurrent components. The main idiom of programming in Axum is an ''Agent'' (or an ''Actor''), which is an isolated entity that executes in parallel with other Agents. In Axum parlance, this is referred to as the agents executing in separate ''isolation domains''; objects instantiated within a domain cannot be directly accessed from another. Agents are loosely coupled (i.e., the number of dependencies between agents is minimal) and do not share resources like memory (unlike the
shared memory In computer science, shared memory is memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies. Shared memory is an efficient means of passing data between progr ...
model of C# and similar languages); instead a
message passing In computer science, message passing is a technique for invoking behavior (i.e., running a program) on a computer. The invoking program sends a message to a process (which may be an actor or object) and relies on that process and its supporting i ...
model is used. To co-ordinate agents or having an agent request the resources of another, an explicit message must be sent to the agent. Axum provides ''Channels'' to facilitate this. ''Channels'' can be regarded as a directional pathway to communicate between agent instances. The member functions of a ''Channel'' object, after it has been bound to an agent instance, can be used to communicate with it. A ''Channel'' contains input and output ''ports'', which are
queue __NOTOC__ Queue () may refer to: * Queue area, or queue, a line or area where people wait for goods or services Arts, entertainment, and media *''ACM Queue'', a computer magazine * ''The Queue'' (Sorokin novel), a 1983 novel by Russian author ...
s which are used to send data to an agent or receive data from one. To co-ordinate the communication between agents, Axum allows each channel to have a user-defined ''protocol'' for communication. The protocol is defined as a
state machine A finite-state machine (FSM) or finite-state automaton (FSA, plural: ''automata''), finite automaton, or simply a state machine, is a mathematical model of computation. It is an abstract machine that can be in exactly one of a finite number o ...
. The data sent over a channel can be optionally restricted to conform to a certain pre-defined ''schema''. The compiler and runtime will enforce the conformance with the schema. Under the hood, a ''schema'' is translated into a serializable .NET
class Class or The Class may refer to: Common uses not otherwise categorized * Class (biology), a taxonomic rank * Class (knowledge representation), a collection of individuals or objects * Class (philosophy), an analytical concept used differentl ...
that contains only properties and side effect-free methods. The Axum project reached the state of a prototype with working
Microsoft Visual Studio Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such a ...
integration. Microsoft had made a CTP of Axum available to the public, but this has since been removed. Although Microsoft decided not to turn Axum into a project, some of the ideas behind Axum are used in TPL Dataflow in .Net 4.5.


References


External links


Programmers' Guide
{{Common Language Infrastructure .NET programming languages Object-oriented programming languages Concurrent programming languages