A++ -- Introduction
A++ has been developed in 2002 by the author of
with the purpose to serve as a
learning instrument rather than as a programming language used to solve practical problems.
It 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.
The name A++ stands for abstraction
synthesis. The three elements of the name designate the primitive
operations of the language used to build everything else.
An educational programming language is a programming
language that is designed primarily as a learning instrument and not so much as a tool for writing real world application programs.
- ARS (basic operations)
- + Reference
- + Synthesis
- Lexical Scope
In this sense A++, Pascal, Scheme and Logo may be considered
to belong to this category of programming languages.
- Pascal has been traditionally used in many schools, colleges and universities in computer science classes to teach students the fundamentals of programming.
- More and more computer science teachers today prefer Scheme as the programming language of choice whenever students have to be introduced to the world of computer programming.
They argue that learning Pascal requires students to spend too much brainpower on the syntax of a language than on the essentials of programming.
They also believe that Pascal as a programming language is less expressive than Scheme, imposing on students too many limits
thus demanding from them to spend much of their intellectual energy
coping with the idiosyncracies of a language instead of letting them
concentrate on the solution of a given problem.
- Logo is a language especially designed to introduce children to programming.
A device called
'turtle' is used to make programming for children very attractive. It is amazing how fast children learn to
program the 'turtle' to draw all kinds of pictures on the screen, starting with simple lines and later
the fanciest pictures after having been familiarized with basic programming constructs.
Logo is not a 'dumb' language however that can only be used to draw lines. It is very similiar to Scheme
in its expressiveness and power and can there be used by experienced programmers as well to
write complex application programs. Logo is especially suited for applications in the field of
symbolic programming and artificial intelligence.
- A++ in particular is a programming language designed to provide a tool for basic training in programmingenforcing a rigorous confrontation with the essentials of programming.
Programming in A++ students learn
An interpreter is available in Scheme, Java, C,
C++ and Python offering an ideal environment for basic training in
programming, enforcing a rigorous confrontation with the fundamentals
of programming languages.
- that programming problems can be solved using the powerful patterns derived from ARS (Abstraction, Reference and Synthesis)
- and that neither
- the knowledge of the syntax of a programming language
- nor the familiarity with all the primitive functions of a language implementation makes up the art of programming.
In none of the programming languages used traditionally in introductory programming classes
students are forced as rigorously as in A++ to come to a deep understanding of the
essentials of programming.
This rigorous approach has the advantage, that students become thoroughly familiar
with powerful programming patterns very fast, enabling them to learn and productively
apply the popular programming languages of the real world in a very short time.
- 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)
- Logical abstractions
- (true, false, if, not, and, or),
- Numerical abstractions
- (natural numbers, zerop, succ, pred, add, sub, mult),
- Relational abstractions,
- 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
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++
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 similiar to
Scheme. ARS++ is derived from ARS
The book A++ --- The Smallest Programming Language in the World, published under the
ISBN 3-87820-116-8, presents A++
The A++ - Interpreter in C can be downloaded from the download page of this site.
New book: A++ -- The Smallest Programming Language in the World: Printed version
- Part I: A++ -- The Language
- Part II: A++ -- The Implementation
(Implementation of A++ in Perl and C including an introduction to Perl and C)
table of contents in PDF-format.
New book: A++ -- The Smallest Programming Language in the World: Online version (Part I of printed version)
Resources Related to ARS Based Programming and A++:
For a detailed directory of resources, sites and publications, on ARS Based Programming
and A++ visitors are referred to this page.