ARS Based Programming:

ars based programming,

Fundamental And Without Limits

Home | Lambda Bound | A++ | Book on A++  (available in English now!)  | Lambda Calculus & A++ | ARS++ | ARSAPI | Book on ARS |
Demo Program | Download | Contact | Links
© 1999-2005 Georg P. Loczewski. All Rights Reserved.

Other languages: Deutsch

ARS Based Programming is built on three principles: Abstraction, Reference and Synthesis (ARS) which are derived from the Lambda Calculus. This approach to programming is covered in detail in the book `Programmierung pur' (`Undiluted Programming') which has been published in April 2003 by the S.Toeche-Mittler Verlag in Darmstadt, Germany.

This site introduces ARS Based Programming and three tools intended to help learning and applying this approach:
  1. A++, a minimal programming language with interpreter for basic training enforcing rigorous confrontation with the essentials of programming;
  2. ARS++, a full blown programming language including a virtual machine and compiler, extending A++ into a language that is fully ars-compatible with a functionality going beyond that of Scheme with the power of coping with the challenges of real world programming;
  3. ARSAPI, a bridge between ARS and popular programming languages like Java, C and C++, consisting of definitions and patterns recommended to express ARS in the target language.

A++ standing for `abstraction plus reference plus synthesis' is used as a name for the smallest programming language in the world that is built on ARS. It's definition follows below and more detailed information is available in the description of 'Programmierung pur' here

ARS is an abstraction from the Lambda Calculus, taking its three basic operations, and giving them a more general meaning. Whereas the Lambda Calculus gives functional programming its theoretical foundation, ARS is capable to provide a theoretical base for all three major programming paradigms, i.e. functional, object oriented and imperative programming.

Generalized basic operations of the Lambda Calculus (ARS):
give something a name.

ARS, ars based programming

mention something by name.
combine two things to make a complex.


ARS is a generalized form of the basic operations of the Lambda Calculus in that respect, that the definition of abstraction retains the full meaning of the word (`give something a name') and that all three operations can be applied anywhere in a program without restrictions.

The following definitions in EBNF notation define A++ as a programming language in contrast to the Lambda Calculus.

<expression> ::= <abstraction> |    (1)
<reference> |
<abstraction> ::= '('define <variable> <expression>')' | (2)
<expression> {<expression>}')'
<reference> ::= <variable> (3)
<synthesis> ::= '(' <expression> {<expression>} ')' (4)
<variable> ::= <symbol> (5)

For further details on A++ see description of 'Programmierung pur' on this site or on the official A++ web-site.

EBNF Notation:

  • | vertical bar stands for 'or'
  • [ ... ] brackets mark optional expressions
  • { ... } curly braces mark repeated expressions: 0 or n-times
  • ' ... ' single quotes mark literal text
  • ( ... ) braces are used for grouping
  • < ... > angle brackets mark terms

The generalizations of the Lambda Calculus are threefold:

  • An abstraction can be assigned a name, and such an abstraction with its name definition may appear anywhere in a program.
  • The body of a lambda abstraction may consist of more than one lambda expression.
  • A synthesis may combine more than one lambda expression.

Fundamental Programming Without Limits

Fundamental programming without limits based on ARS results from a consequent application of the basic operations of the Lambda Calculus, abstraction, reference and synthesis (ARS). It consists of simple but nevertheless powerful programming patterns that can be applied to almost any programming language.
The book Programmierung pur presents these principles of programming and applies them to five programming languages: Scheme, Java, Python, C and C++

Basic Principles of Programming
Programming Paradigms
General Programming Patterns

The documentation of this site is released under the terms of the GNU Free Documentation License. More details on the copyright license are given here.