Introduction

Welcome to Aion.

This document is intended to provide detailed information on how to best use Aion to design, develop, document, and deploy algorithms, models, and simulations.

What Is Aion

Traditional methodologies for developing algorithms and models require the user to first design the algorithm “on paper,” then recode the algorithm in a language such as FORTRAN, C++, MatLab, or Python. Often, due to schedule pressures, the design is not well documented or becomes out of date as the code evolves.

The traditional methodologies lead to algorithms or models that:

  • are poorly documented or not documented at all,

  • are complex and often difficult for even domain experts to understand,

  • hinder collaboration between team members causing and slower development, and

  • often lead to a less agile process.

Even worse, traditional methodologies that are well suited for rapid algorithm or model development often use interpreted languages that run slower than compiled languages. Code developed using these interpreted languages are also difficult or impossible to deploy on embedded systems.

Ultimately a program is a re-representation of a set of mathematical statements into a format that is easier for a computer to understand. Aion allows you to write your algorithm or model using natural mathematical syntax. Aion converts your mathematics directly into executable machine code, often with performance comparable to hand-coded C, C++ or FORTRAN. Additionally, Aion allows you to include rich markup with diagrams, tables, and lists. You can combine your documentation and implementation together in a single very readable format using a tool that blends the features of a traditional Word Processor with capabilities found in software debugging tools like Microsoft Visual Studio (TM) or Apple XCode (TM). You can create algorithms or models without ever needing to use traditional programming languages or traditional software development tools.

Aion can convert your algorithm or model directly into compiled executable machine code that you can deploy into your application or embedded system. In most cases, performance should be comparable to code written in traditional compiled programming languages.