Skip to content

Automata Features

Eric Steen edited this page Jun 3, 2020 · 1 revision

Based on the Actor Model 1, a singular Elixir Process(Actor) embodies all 3 essential elements of computation: processing, storage, communications. It does so using very lightweight, isolated processes, each with its own stack, heap, communications facilities (mailbox), and garbage collector. The Erlang VM (BEAM), with pre-emptive scheduling, acts somewhat as on operating system on top of an operating system. Pre-emption is good because it prevents bad actors from starving the rest of the system, allowing for higher degrees of concurrency and better interactive performance.

Performance Features:

  • Concurrency
    • The world is concurrent. For example: we see, hear, and move at the same time. Many global financial instruments are fluctuating at this instance. Concurrency was a core factor in the design of Erlang, making it easy to reason about and debug.
  • High availability
    • Elixir is capable of 99.9999999% uptime (31 milliseconds/year of downtime). The main point of the Erlang model is an application that can be expected to run forever, as stated by the inventor — Joe Armstrong (RIP). Talk about unstoppable software!
  • Fault Tolerance
    • OTP Supervision Trees and the "fail fast" principle provide strong guarantees for error recovery and self healing systems.
  • Scalability & Distribution
    • Elixir can handle millions of processes (134 million +/-) utilizing all cores without breaking a sweat on a single machine, and easily distributes work onto multiple machines with its builtin distribution mechanisms, and there is CRDT support with Horde.
    • Behavior trees provide value chain efficiency/scalability (in both design/development and operations/testing) compared to previous state of the art AI control techniques.
  • Modularity
    • Modular BT's allow the designer to hierarchically combine independently developed, tested, deployed, and reusable unit behaviors that provide more valuable emergent properties in the large.
  • Flexibility
    • A design goal of Automata is to allow high flexibility via extreme abstraction (to enable design space evolution, support diversity in applications)
  • Simplicity of Implementation
    • Elixir's meta-programming facilities enable very user-friendly API's so developers don't need to know the details of BT's or Automata Theory to get things done, and BT's themselves lend efficiency to the development value chain.
  1. Actor Model
Clone this wiki locally