Documentation of Ampersand

Updated 2 months ago

You are welcome...

... to read the Ampersand documentation

To actually read the documentation, please click on the green Read button at the top right hand of this page, or download the PDF.

Currently, the focus of this documentation is primarily on how to use this language and the software that supports it. While this focus may change over time, we do not (yet) have such intentions.

... to contribute to this documentation

If you have anything to fix or details to add, just post a comment next to the paragraph. We really appreciate if you do so, because our readers know best what it is they are looking for in the docs.

You can do that by clicking the '+' icon that appears when you hover above the paragraph. Don't be shy! Try it out!

About Ampersand

The purpose of Ampersand is to help you develop information systems that actually do what its intended users want them to do. It allows you to offer information systems to the business that provably comply to the rules by which they conduct their business. How cool is that!

Using Ampersand allows you to communicate to the business its own jargon in order to understand its ways of working. You make your understanding explicit by writing it down in rules and interface specifications. Then, Ampersand generates a real and working prototype of the information system. Both you and business users may exercise this application. Together you judge whether or not the prototype exhibits all desired functionalities. After a few iterations, the prototype will demonstrate that you have actually understood the business requirements. If needed, you can then still generate a document containing the functional specifications for this information system, that professional IT-engineers can use to construct a business grade application from. However, for small applications the prototype may well serve the business purpose already...

The design of the Ampersand language has a particular philosophy. You will work with business rules. This lets you communicate effectively with users and other business stakeholders. The language Ampersand consists of the following elements:

  1. The language is strongly and statically typed. This helps a programmer to write correct code and enables an efficient implementation of that code.
  2. The language is based on relation algebra, because relation algebra has two useful interpretations. One interpretation is in natural language. That helps to involve business stakeholders. The other interpretation is working software. That is necessary to generate a web application and its database directly from an Ampersand script.
  3. The language is declarative. This yields clarity in the semantics, which do not rely on side effects.
  4. The language offers incremental development. The programmer makes progress by adding restrictions. At any point he can generate software and use that as a working prototype for the definitive information system.
  5. The language offers compositionality. Each system is a composition of design patterns. As a result, larger systems can be assembled from parts. Each part can be developed independently and reused.
  6. Documentation can be embedded in the specification.


Unless otherwise specified, everything in this repository is covered by the following licence:

Ampersand Documentation by the the Ampersand team is licensed under a Creative Commons Attribution 4.0 International Licence.

Based on a work at