Publications about ABC

All publications about ABC are gathered here under topic. Within each topic the order is chronological. (B was the working name of ABC during its development phase).


Language definition

Designing a Beginners' Programming Language

Leo Geurts and Lambert Meertens, 18 pages. This was the first article on B. It clarifies some of the design objectives and describes the result of the first iteration in the defining process. Published in New Directions in Algorithmic Languages 1975, ed. S.A. Schuman, IRIA, Rocquencourt (1976). Available from CWI as report IW 46.

Program Text and Program Structure

Lambert Meertens, 11 pages. Proposes the method of stepwise refinement as a means to make the structure of program development explicit in the program text. Published in Constructing Quality Software, ed. S.A. Schuman, North-Holland Publ. Co. (1978). Available from CWI as report IW 78.

Keyword Grammars

Leo Geurts and Lambert Meertens, 12 pages. This is a rather technical derivation of a simple condition for the ``keyword skeletons'' in a language that guarantees the existence of a simple no-backup parser. It influenced the keyword stucture of B. Published in Implementation and Design of Algorithmic Languages, eds. J. André and J.-P. Banātre, IRIA, Rocquencourt (1978). Available from CWI as report IW 86.

Issues in the Design of a Beginners' Programming Language

Lambert Meertens, 18 pages. This article describes some unexpected solutions that were found for problems in the third iteration of designing B. It reinterpretes the original design objectives in the light of some rejected preconceptions. Published in Algorithmic Languages, ed. J.C. van Vliet, North-Holland Publ. Co. (1981). Available from CWI as report IW 161.

Draft Proposal for the B Programming Language

Lambert Meertens, 88 pages. This book is a specification of the whole B language, as it arose from the third design iteration. It is, however, rather technical for the casual reader. In addition it contains some thoughts on a B system. Published by CWI as ISBN 90 6196 238 2. A part of it, the Quick Reference also appeared in the Algol Bulletin number 48, August 1982.

Taal zonder naam

Leo Geurts, 2 pagina's. Een korte schets van een nederlandstalige versie van B als aanzet voor een ideale programmeertaal. Gepubliceerd in de HCC Nieuwsbrief, jaargang 5, nummer 6, blz 20-21, juli 1982.

Language and Environment

Ontwerp van een Programmeeromgeving voor een Personal Computer

Leo Geurts, 13 pagina's. Dit artikel bespreekt de consequenties van de doelstellingen die bij het ontwerpen van de taal B zijn gebruikt bij toepassing op de programmeeromgeving. Benadrukt wordt het belang van een geļntegreerd systeem dat voor verschillende funkties dezelfde communicatiemethode met de gebruiker hanteert. Gepubliceerd in Colloquium Programmeeromgevingen, CWI, Syllabus 30, Amsterdam (1983).

On the Design of an Editor for the B Programming Language

Aad Nienhuis, 16 pages. Gives an overview of the design of the first approximation of the B dedicated editor. Published by CWI, report IW 248/83.

The B Programming Language and Environment

Steven Pemberton, 12 pages. Gives a description of B along with some background to it, and some justification for its existence, arguments about simplicity, interactiveness, programmer productivity, and talks about its suitability for use in schools. Published in CWI Newsletter, Vol. 1, No. 3 (June 1984).

Towards a Specification of the B Programming Environment

Jeroen van de Graaf, 23 pages. This report contains an informal description and a tentative specification of the environment for B. Published by CWI, report CS-R8408.

Taalprimitiva in B voor Grafisch Editen - een Verkenning

M. Andreoli, 26 pagina's. In dit rapport worden mogelijkheden onderzocht commando's aan een taal als B toe te voegen om ``grafisch editen'' (interactieve gegevensinvoer via een grafische interface) op een eenvoudige manier mogelijk te maken. Gepubliceerd door CWI, rapport CS-N8509.

De programmeertaal B

Leo Geurts, 3 pagina's. Korte eenvoudige uitleg van taal en omgeving. Gepubliceerd in de HCC Nieuwsbrief, jaargang 8, nummer 5, mei 1985.

An Alternative Simple Language and Environment for PCs

Steven Pemberton, 9 pages. This article is the first place to go if you want to know more about ABC. It describes the background to ABC, gives an overview of the language, and presents the ABC editor and the programming environment the language is embedded in. Published in IEEE Software, Vol. 4, No. 1, January 1987, pp. 56-64, and ABC Newsletter 6.

Graphics for ABC

J. Zwaan, and R. Zwart. This report gives the first steps towards a graphical facility for the programming language ABC. It discusses which features are to be included as primitives in a graphical extension to the language, the way pictures could be represented and gives directions towards an implementation. CWI Report CS-R9255, CWI, Amsterdam, 1992.

The ABC structure editor: Structure-based editing for the ABC programming environment

L.G.L.T. Meertens, S. Pemberton, and G. van Rossum. ABC is an interactive programming language where both ease of learning and ease of use stood high amongst its principle design aims. The lan guage is embedded in a dedicated environment that includes a structure-based editor. In with the design aims, the editor had to be easy to learn, demanding a small command set, and easy to use, demanding a powerful command set and strong support for the user in composing programs, with out enforcing a computer-science understanding of issues of syntax and the like. Some novel design rules have led to an interesting editor, where the user may enter and edit text either structurally or non-structurally, without having to use different `modes'. CWI Report CS-R9256, CWI, Amsterdam, 1992

Programmer's Handbook

All articles referenced here were eventually gathered in The ABC Programmer's Handbook mentioned at the end.

An Overview of the B Programming Language, or B without Tears

Leo Geurts, 11 pages. In informal introduction to the language suitable for people that are already proficient with some other high-level language like Pascal or C. It was published in SIGPLAN Notices Vol. 17, No. 12, December 1982, or is available from the CWI, report IW 208/82.

Description of B

Lambert Meertens and Steven Pemberton, 38 pages. Informal definition of B, which can be used as a reference book, and as an introduction for people with ample programming experience. Published in SIGPLAN Notices, Vol. 20, No. 2, February 1985, pages 58 - 76. Available from CWI, note CS-N8405.

A User's Guide to the B System

Steven Pemberton, 10 pages. A brief introduction to using the B implementation, including the B-dedicated editor. Published by CWI, note CS-N8404.

B Quick Reference Card

A single card including all the features of the language, the editor, and the implementation, for quick reference when using B.

The B Programmer's Handbook

Leo Geurts, Lambert Meertens, and Steven Pemberton, 80 pages. A handbook containing a quick look at B, a guide to using the current implementations of B, and a description of B, thoroughly revised and updated. Published by CWI, ISBN 90.6196.295.1.

The ABC Programmer's Handbook

Leo Geurts, Lambert Meertens, Steven Pemberton, 185 pages. Prentice-Hall, 1990, ISBN0-13-000027-2. A rewritten version of The B Programmer's Handbook, now with a chapter of example programs. Republished by Bosko Books (ISBN 0-9547239-4-5).

Programmer's Tutorial

Part 2 of the publication that comprises this topic never made it. Together with some additional material the first part was used in several courses.

Computer Programming for Beginners -Introducing the B Language- Part 1

Leo Geurts, 85 pages. This is a text-book on programming for people who know nothing about computers or programming. It is self-contained and may be used in courses or for self-study. The focus is on designing and writing programs, and not on entering them in the computer, and so on. It introduces the language, and how to write small programs. Published by CWI, note CS-N8402.

Cursus programmeren voor beginners - Een kennismaking met de programmeertaal B, Deel 1

Leo Geurts, 85 bladzijden. This is a translation of Computer Programming for Beginners - Part 1. Dit rapport bevat een beginnerscursus programmeren, gebaseerd op de nieuwe programeertaal B. De meeste elementaire programmeertechnieken en de meeste eigenschappen van B komen aan bod. De tekst vereist geen voorkennis, en is zowel voor cursussen als voor zelfstudie geschikt. Gepubliceerd door het CWI, Notitie CS-N8407.


Incremental Polymorphic Type-Checking in B

Lambert Meertens, 11 pages. B allows you to use variables without having to declare them, and yet gives you all the safety that declarations would supply. This paper describes how this is achieved, but is very technical. Definitely not for the faint-hearted. Published in the conference record of the 10th ACM Principles of Programming Languages, pages 265-275, 1983, and also by CWI, report IW 214/82.

Making B Trees Work for B

Timo Krijnen and Lambert Meertens, 13 pages. This describes a method of implementing the values of B. It is rather technical. Published by CWI, report IW 219/83.

On the Implementation of an Editor for the B Programming Language

Frank van Harmelen, 18 pages. Gives details of a pilot implementation of the B dedicated editor. Published by CWI, report IW 220/83.

An Implementation of the B Programming Language

Lambert Meertens and Steven Pemberton, 8 pages. This gives an overview of the implementation and some of the techniques used in it. Published in USENIX Washington Conference Proceedings (January 1984). Published by CWI, note CS-N8406.

The Cleaning Person Algorithm

Tim Budd, 12 pages. This paper describes an algorithm that permits values to migrate easily between primary and secondary memory (or disk), permitting the B system to act as if the amount of memory was essentially limitless. Published by CWI as report CS-R8610.


Back issues are no longer available.

Issue 1

A Short Introduction to the B Language
A Glimpse at the B Environment
Implementation Plans for B

Issue 2

The Mark 1 Implementation
Examples of B
The Highlights of B
A Comparison of Basic and B
A Comparison of Pascal and B

Issue 3

IBM PC Progress
What is in the Name of B?
A File-Maintainance Program in B
A Proposal for Matrix/Vector Functions in B
Speeding up the B Implementation

Issue 4

New Unix Release
B For the IBM PC
Eh? B be 'ABC', see? (pdf)
A Program Example: Polynomials
(Extremely) Simple Logic Programming in B
~1 <> 1, A Nice Distinction?

Issue 5

>>> From B to ABC (pdf)
The Cleaning Person Algorithm
Backtracking in B: The Budd Challenge
Primality Testing in B

Issue 6

Progress Towards ABC
A Chess Program in B
Approximate Numbers
My Experiences with ABC (includes a self-reproducing program)
An Alternative Simple Language and Environment for PCs

These are PDF files:

Number 7 (revised reprint; pdf)

Information about obtaining, installing and using the various ABC implementations.
A Short Introduction to ABC
An Adventure Program
A Histogram Program

Number 8 (pdf)

About the ABC Type system and checker
A Grammar-analysis program

Eight Queens
A General-purpose Data-base

Publications Using ABC

The Art of Lisp Programming

Robin Jones, Clive Maynard, Ian Stewart. A textbook for anyone who has a passing acquaintance with procedural languages, such as BASIC or Pascal, but who has not met a functional language like Lisp before. In addition to providing a step-by-step introduction to Lisp, this book is unique in illustrating the use of Lisp through the development of a realistic project: the design and implementation of a Lisp-based interpreter for the language ABC. Springer Verlag, Berlin etc, 1990, ISBN 0-387-19568-8 and ISBN 3-540-19568-8.


Peter Landrock, Knud Nissen. An introduction to cryptography, with example programs in ABC. In Danish. Abacus Publishers, Vejle, Denmark, 1990, ISBN 87-89182- 24-3.

Using ABC to Prototype VDM Specifications

Aaron Kans and Clive Hayton. ABC is a high-level, easy-to-use imperative language, designed originally as a replacement for BASIC. Although intended primarily as a teaching language, it has many powerful attributes that make it suitable as a language for the rapid prototyping of formal specifications. This paper illustrates how ABC was used to prototype specifications written in the formal specification language of VDM. ACM SIGPLAN Notices, Volume 29, No 1., January 1994.

This page last modified: 2012-03-05