What Is A++ and How Does It Teach Programming Through ARS?
A++ is an educational programming language built on the lambda calculus, designed for one purpose: helping people who want to learn programming understand the essentials of the art of programming as quickly and thoroughly as possible. It suits learners who want a deep grasp of core concepts and transferable patterns before (or instead of) wrestling with the many convenience features of mainstream languages. It is not aimed at people who need a language for practical, production-style software work.
The core idea: essentials instead of features
Most languages come with what the A++ project describes as "bells and whistles" — many soft features that are genuinely useful for coping with practical programming problems. A++ deliberately strips these away. Being based on the lambda calculus, it is presented as a hard-core language made of elements that cannot be further split up or disintegrated.
The reasoning behind this: learning the art of programming is not accomplished by becoming familiar with all the handy soft features a language offers. It comes from learning how to cope with programming problems by continuously applying three operations from beginning to end.
ARS Based Programming
A++ organizes programming around three concepts, abbreviated ARS:
- Abstraction — capturing a pattern or behavior as a reusable unit.
- Reference — using what has been abstracted.
- Synthesis — combining abstractions into larger constructs.
Programming with the focus on applying Abstraction, Reference and Synthesis is called ARS Based Programming. In A++, the project states, ARS Based Programming becomes "ultimately visible to a programmer" — the language is structured so these three operations are not hidden behind incidental syntax.
The claim for learners is twofold: quick, deep comprehension of programming, and pattern-recognition skills that apply in most other programming languages.
Implementations
A++ has been implemented in Scheme, Java, C++, C, Perl and Python, using ARS based programming techniques. The Perl and C implementations are presented in detail in the book on A++ (see below); the other implementations are covered in Programmierung pur (Undiluted Programming), published in 2003.
That spread matters for the educational argument: the same ARS approach is shown to carry across very different language families, which supports the idea that what you learn in A++ transfers rather than being tied to one tool.
Books and learning entry points
The language is introduced in A++ – The Smallest Programming Language in the World, which covers both the language and its implementation. It was first published in Darmstadt, Germany in October 2004 (ISBN 3-87820-116-8), with a 2nd edition published in April 2018 by tredition GmbH, Hamburg.
The site also lists newer titles (July 2018), including:
| Title | ISBN |
|---|---|
| A++ The Smallest Programming Language in the World | 978-3-7469-3021-3 |
| A++ and the Lambda-Calculus | 978-3-7469-3811-0 |
| A++ Die kleinste Programmiersprache der Welt | 978-3-7469-3199-9 |
| Programmieren lernen mit A++ | 978-3-7469-3098-5 |
| A++ und systemnahe Programmiersprachen | 978-3-7469-3600-0 |
| Von A++ nach ARS++ | 978-3-7469-3644-4 |
Who should consider it
A++ fits you if:
- You want to understand what programming is at a fundamental level before committing to a mainstream language.
- You are interested in the lambda calculus as a practical foundation rather than only as theory.
- You want patterns you can carry into other languages.
It probably does not fit you if:
- You need to build practical applications now and want a language with extensive libraries and convenience features.
- You are looking for a first language chosen for employability rather than conceptual depth.
For a systematic path in, the book A++ – The Smallest Programming Language in the World is the documented starting point, with A++ and the Lambda-Calculus as the natural companion for the theoretical basis.