Ampersand Language

From HandWiki
Short description: Information System Specification Language


Ampersand is a specification language that focuses on information systems. Its main purpose is to generate information systems correctly by minimizing the human effort and human mistakes involved in programming.

An Ampersand user specifies a domain in terms of relations and constraints, which is equivalent to defining an ontology. She then specifies interfaces that define the functionality of the system. A compiler is available as free open-source software to generate a working application from a specification. This compiler generates web applications and documentation. An Ampersand user specifies constraints in relation algebra, which enhances its applicability to automated theorem proving and Program analysis.

Key features

Declarative means that the language is free of side effects. So, users can add, update, or delete any rule in the code without affecting other rules, which makes rules composable. Declarative programming sets Ampersand apart from imperative programming

Ampersand is a reactive specification language[1]. It does not follow pre-specified threads of action but reacts to events from outside and inside the system.

Reactive programming sets Ampersand apart from single-threaded and multi-threaded computing.

The word static refers to type checking at compile-time. The type system of Ampersand[2] presents errors at compile time as type errors, saving modelers' effort and enhancing the quality of the generated code[3].

Static type checking is the opposite of dynamic type checking, which is typically done at runtime.

Each rule in Ampersand is a constraint on a dataset, which works as an invariant.

Ampersand is related to the business rules approach[5], although Ampersand uses constraints for more than decision-making only. A difference with many other constraint-based languages is the use of relation algebra, whereas other constraint-based systems use predicate logic.

  • Formal

Ampersand is a formal language, based on Relation Algebra (also known as the Calculus of Relations) to ensure that business rules can be defined precisely and that a compiler can generate an information system.

Scientific foundations of Ampersand have been published in the International Conference on Relation Algebraic Methods in Computer Science (RAMiCS) from 2011 onwards.

References

  1. Stef Joosten, Relation Algebra as programming language using the Ampersand compiler, Journal of Logical and Algebraic Methods in Programming, Volume 100, 2018, Pages 113-129, ISSN 2352-2208, [1]. Springer.
  2. Joosten, S.M.M., Joosten, S.J.C. (2015). Type Checking by Domain Analysis in Ampersand. In: Kahl, W., Winter, M., Oliveira, J. (eds) Relational and Algebraic Methods in Computer Science. RAMICS 2015. Lecture Notes in Computer Science, vol 9348, Pages pp 225–240, pub: Springer, Cham. https://doi.org/10.1007/978-3-319-24704-5_14.
  3. Hanenberg, S., Kleinschmager, S., Robbes, R. et al. An empirical study on the impact of static typing on software maintainability. Empir Software Eng 19, 1335–1382 (2014). https://doi.org/10.1007/s10664-013-9289-1
  4. F. Rossi, P. van Beek, and T. Walsh, eds., Handbook of Constraint Programming, Elsevier Science, 2006.
  5. Lex Wedemeijer, Stef Joosten, and Jaap van der Woude, Rule Based Design, Open Universiteit Nederland, January 2013, ISBN: 978 94 91825 90 3.