next up previous
Next: Background of the author Up: aplpleorigin Previous: aplpleorigin

Origin of A++

A++ was developed in the years 1996 - 2002 by Georg P. Loczewski working as a systems programmer for the company Bull at the Software-Haus Langen in Germany.

Mr. Loczewski had been been working in the fields of Programming und Programming Methodology as an Instructor, Course Developer, Education Consultant and Systems Programmer for Honeywell HFSI and Bull (Compagnie des Machines Bull) in the USA and Germany since 1970.

The first authentic documentation covering A++ was published in 2002 in German language with the title 'Programmierung pur' (ISBN 3-87820-108-7). See bibliography: [3]. The Second edition followed in 2003.

The first documentation in English had the title: 'A++ The Smallest Programming Language in the World' and was published in 2005 by the S.Toeche-Mittler Verlag in Darmstadt, Germany, (ISBN 3-87820-116-8). See bibliography: [4]. A new augmented edition is available: See bibliography: [5].

The Preface of the 2nd title gives insight into the roots of the A++ development. An excerpt from this preface follows:

The roots of A++ lie back many years however, when I discovered Scheme which was in 1995 or to be more precise a little bit after when I read the book `Scheme and the Art of Programming' by George Springer and Daniel P. Friedmann.
It was not this book that inspired me to launch the ARS or A++ project a couple of years later, it were a few statements by Guy L. Steele Jr., one of the creators of the Scheme programming language, which he made in the foreword of that book.

Describing the origin of Scheme he gives homage to the Lambda Calculus, invented by Alonzo Church in the late 1930's. (See bibliography: [1]) He talks about the importance of the principle of abstraction and makes the following statement in this context on page XV (See bibliography: [6]):

Abstraction consists in treating something complex as if it were simpler, throwing away detail. In the extreme case, one treats the complex quantity as atomic, unanalyzed, primitive. The lambda calculus carries this to a pure, unadulterated extreme. It provides exactly three operations, plus a principle of startling generality.

The emphasis of the selected sentence in this quotation does not appear in the original text.

Following these words which have been quoted here, Guy L. Steele describes the three basic operations of the lambda calculus. He continues to describe the ingenuity of the lambda calculus coming up with another remarkable statement on page XVI:

Abstraction is all there is to talk about: it is both the object and the means of discussion.
Guy L. Steele's praise of the lambda calculus fascinated me, impressed me a lot and never let me loose.
There was one thing however, which bothered me: The definition of `abstraction' as `give something a name' and the operation of abstraction in the lambda calculus do not match, at least according to my understanding. The operation of abstraction in the lambda calculus does not include a `name giving' feature. Lambda abstractions in the lambda calculus are `per se' anonymous. They are assigned a name only indirectly if they are passed as arguments to another lambda abstraction in the synthesis operation.

I am grateful to Guy L. Steele for letting me discover the beauty of ARS, which he describes in the mentioned text, in which he also outlines the origin of Scheme. Scheme is a programming language which has inherited a lot of the beauty and power of the lambda calculus that Guy L. Steele is talking about.

Glenn L. Vanderburg has used the following words to describe Scheme in his advanced text book about Java (See bibliography: [7] on page 593):

Scheme might be considered the queen of programming languages: It is small, pure, and beautiful.
Now there is another thing that bothered me though: it has to do with how Scheme is defined in the official document, the R5RS-Report (See bibliography: [2]). The formal syntax definition starting on page 38 in that document does not show at all the three basic operations of the lambda calculus to be the root or the core of the scheme programming language.

The fascination of ARS, shared with Guy L. Steele, and the two things that bothered me led finally to the development of A++ and even ARS++. ARS++ extends A++ into Scheme and beyond without giving up ARS as root and core of the language, showing up `unadulterated' in its definition[*].

Scheme is small, A++ is even smaller. It was a challenge for me to see how far one could go just using ARS, without creating a programming language with all kinds of whistles and bells definitely tempting a student in the process of being initiated to programming to focus his or her attention on things that are not essential to programming at all.

To develop A++ and extending it to ARS++ and to define an interface to C, C++ and Java called ARSAPI, was a great adventure and learning experience for me,[*]which I would like to share with many other people being engaged in teaching or studying the art of programming. This book covers the first part. All parts together are presented in `Programmierung pur' (`Undiluted Programming').


A++ and the Lambda Calculus
ISBN 978-3-7469-3021-3

A++ The Smallest Programming Language in the World
An Educational Programming Language
ISBN 978-3-7469-3021-3 -- http://www.treditionĀ§.de

next up previous
Next: Background of the author Up: aplpleorigin Previous: aplpleorigin
Georg Loczewski 2018-06-01

Impressum und Datenschutz
access counter