Generated by DeepSeek V3.2| ABC (programming language) | |
|---|---|
| Name | ABC |
| Paradigm | Imperative programming, Structured programming |
| Designer | Leo Geurts, Lambert Meertens, Steven Pemberton |
| Developer | Centrum Wiskunde & Informatica |
| Released | 0 1987 |
| Influenced by | ALGOL 68, SETL, Pascal (programming language) |
| Influenced | Python (programming language), Lua (programming language) |
ABC (programming language). ABC is an imperative programming language and integrated environment developed at the Centrum Wiskunde & Informatica in the Netherlands during the 1980s. Designed as a teaching language and a replacement for BASIC, it emphasizes clarity, simplicity, and ease of use for non-professional programmers. Its most significant legacy is its direct influence on the design of the widely used Python (programming language).
The development of ABC began in the early 1980s at the Centrum Wiskunde & Informatica (then known as the Mathematisch Centrum) under the leadership of Lambert Meertens. The project was initiated by Leo Geurts and later joined by Steven Pemberton, with the goal of creating a language suitable for teaching and general-purpose scripting. The team was influenced by their experiences with languages like ALGOL 68 and SETL, as well as the pedagogical aims of Niklaus Wirth's Pascal (programming language). The first implementation was completed around 1987, with the language intended to run on the Acorn BBC Micro and other contemporary systems. Development was partly supported by the European Commission under projects like ESPRIT.
ABC was built around core principles of orthogonality, simplicity, and a "no-surprises" philosophy. A key feature is its integrated environment, which combines an editor, interpreter, and persistent workspace, predating similar systems in later languages. It supports arbitrary-precision arithmetic and a powerful, unified concept of tables and lists for data manipulation. The language deliberately omits complex features found in its contemporaries, such as pointers (computer programming) and user-defined data types, to reduce cognitive load. Its design reflects the minimalist approach championed by pioneers like Edsger W. Dijkstra and the ALGOL tradition.
The syntax of ABC is notable for its use of indentation to denote block structure, a feature it pioneered and later passed to Python (programming language). Commands are structured using English keywords like **HOW TO** for defining functions and **IF**/**ELSE** for conditionals, making it highly readable. Semantically, it is dynamically typed and uses a clean, consistent model where all composite data structures are treated as either lists or tables. The language supports operations from SETL, such as set union and intersection, integrated seamlessly into its core. Error handling is straightforward, with clear messages, aligning with its educational origins.
The most profound influence of ABC is on Guido van Rossum, who worked with the language at the Centrum Wiskunde & Informatica and later created Python (programming language). Python adopted ABC's use of indentation, its high-level data types, and its overall philosophy of readability and simplicity. Elements of ABC can also be seen in other languages, such as the table structures in Lua (programming language). While ABC itself never achieved widespread commercial use, its ideas became foundational in modern scripting languages, impacting projects at organizations like Google and the Python Software Foundation.
A simple function in ABC to compute the factorial of a number demonstrates its clear syntax: ``` HOW TO RETURN factorial n: PUT 1 IN result FOR i IN {1..n}: PUT result * i IN result RETURN result ``` This example shows the use of indented blocks, the **HOW TO** construct for definition, and the **FOR** loop iterating over a range. The language's design for teaching is evident in its avoidance of symbols like semicolons or braces, using plain English instead.
Category:Programming languages Category:Procedural programming languages Category:Educational programming languages