a++, lambda-bound.com

A++ -- Introduction

Table of contents


A++ has been developed in 2002 by the author of Programmierung pur (ISBN 3-87820-108-7) 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.

Name of the language

The name A++ stands for abstraction plus reference plus synthesis. The three elements of the name designate the primitive operations of the language used to build everything else.

Constitutive Principles of A++

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

Educational Programming Langage

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.

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
    • 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.
    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.

    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.

Programming Paradigms Supported by A++

  • 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 of A++

  • 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 similiar to Scheme. ARS++ is derived from ARS plus Scheme plus Extensions.

The book A++ --- The Smallest Programming Language in the World, published under the ISBN 3-87820-116-8, presents A++ in detail.

The A++ - Interpreter in C can be downloaded from the download page of this site.

For more details see:

  • 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)
    • Complete 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.

Home | ARS Based Programming | Online Documentation | Publication | Interpreter | Download
| Lambda Calculus | Contact | Links
© 1999-2005 Georg P. Loczewski. All Rights Reserved.

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.
access counter