Revision 848550607 of "A++" on enwiki

{{multiple issues|
{{No footnotes|date=January 2011}}
{{Notability|date=January 2011}}
}}

'''A++''' stands for '''abstraction plus reference plus  synthesis''' which is used as a name for the minimalistic  programming language that is built on ARS.
'''ARS''' is an abstraction from the [[Lambda calculus|''Lambda Calculus'']], taking its three basic operations, and giving them a ''more general meaning'', thus providing a foundation for the three major programming paradigms: [[functional programming]], [[object-oriented programming]] and [[imperative programming]].

'''ARS Based Programming''' is used as a name for programming which consists mainly of applying patterns derived from ARS to programming in any language.

== History ==
A++ was developed by Georg  P. Loczewski in the years from 1998 - 2002 working as a software developer for Bull's Software-Haus in Langen, Germany and as a freelance programmer with the purpose to serve as a learning instrument rather than as a programming language used to solve practical problems.

The first published documentation appeared in German in January 2003 with the title 'Programmirung pur --- Programmieren fundamental und ohne Grenzen' ('Undiluted Programming') having the ISBN 3-878820-108-7 (919 pages). A description of the contents of the book is available in English at: http://www.lambda-bound.com/book/engl/nusinfo.html

In the year 2005 followed an introduction to A++ in English with the title: 'A++ The Smallest Programming Language in the World --- An Educational Language (242 pages) having the ISBN 3-87820-116-8. Both titles were published by the S.Toeche-Mittler Verlag in Darmstadt, Germany.
.
The develpment of A++ is based on the 'Lambda Calculus' by Alonzo Church and is influenced by Guy L. Steele's Programming Language Scheme.
More details on the history of the develpment are available on the official A++-Website 'www.aplusplus.net' on page http://www.aplusplus.net/aplpleorigin/aplpleorigin.html

A++ is supposed to be an efficient tool to become familiar with the core of programming and with programming patterns that can be applied in other languages needed to face the real world.

== Purpose ==

A++ is a language similar to C++, with its interpreter available in Scheme, Java, C, C++ and Python, and offers an ideal environment for basic training in programming, enforcing rigorous confrontation with the essentials of programming languages.

== Constitutive principles ==

*   '''ARS''' (basic operations)
**  ''Abstraction''
**  ''+ Reference''
**  ''+ Synthesis''
*   '''Lexical Scope'''
*   '''Closure'''

== Programming paradigms supported ==

* '''Functional programming''', ''(directly supported)''
** (writing expressions to be evaluated),
* '''Object-oriented programming''' ''(directly supported)''
**(sending messages to objects),
* '''Imperative programming''' ''(directly supported)''
**(writing statements to be executed), including structured programming.
* '''Logic programming''' ''(indirectly supported)''
**(rule based programming)

== Core features ==

* '''Logical abstractions'''
**(true, false, if, not, and, or),
* '''Numerical abstractions'''
**(natural numbers, zerop, succ, pred, add, sub, mult),
* '''Relational abstractions''',
**(equalp, gtp, ltp, gep)
* '''Recursion''',
* '''Creation and processing of lists'''
**(cons, car, cdr, nil, nullp, llength, remove, nth, assoc),
* '''Higher order functions'''
**(compose, curry, map, mapc, map2, filter, locate, for-each),
* '''Set operations'''
**(memberp, union, addelt),
* '''Iterative control structure'''
**('while').

== Development of applications with A++ ==

The purpose of A++ is not to be used as a programming language to write applications for the needs of the real world. Nevertheless it is possible to write simple application programs in A++ like object oriented implementations of a simple account handling and a library management system.

To write real world application programs the language ARS++ is provided, which extends A++ to a language similar to Scheme. ARS++ is derived from ''ARS plus Scheme plus Extensions''.

== See also ==

* [[ARS-based programming]]
* [[Educational programming language]]
* [[ARS plusplus|ARS++]]

== External links ==
* A++ Web-Site:  http://www.aplusplus.net
* History of A++: http://www.aplusplus.net/aplpleorigin/aplpleorigin.html
* book online: http://www.aplusplus.net/bookonl/
* Article on PROGOPEDIA: http://www.progopedia.com/language/a-plus-plus/
* Georg P. Loczewski, http://www.lambda-bound.com/book/lambdacalc/lcalconl.html ''The Lambda Calculus and A++''

[[Category:Educational programming languages]]