From Wikipedia, the free encyclopedia
| ABC | |
|---|---|
| Paradigms | multi-paradigm: imperative, procedural, structured |
| Designed by | Leo Geurts, Lambert Meertens, Steven Pemberton |
| Developer | Centrum Wiskunde & Informatica (CWI) |
| First appeared | January 1987; 39 years ago |
| Stable release | 1.05.02 / 1990; 36 years ago |
| Typing discipline | strong, polymorphic |
| OS | Unix-like, Windows, MacOS, and Atari TOS |
| Website | homepages |
| Influenced by | |
| SETL, ALGOL 68[1] | |
| Influenced | |
| Python | |
ABC is an imperative general-purpose programming language and integrated development environment (IDE) developed at Centrum Wiskunde & Informatica (CWI), in Amsterdam, Netherlands by Leo Geurts, Lambert Meertens, and Steven Pemberton.[2] It is interactive, structured, high-level, and intended to be used instead of BASIC, Pascal, or AWK. It is intended for teaching or prototyping, but not as a systems-programming language. ABC was developed from the B language, an earlier creation by Meertens and Pemberton (unrelated to Thompson and Ritchie's language of the same name) which was the first language to use indentation for block structure.[3]
ABC had a major influence on the design of the Python language, whose creator, Guido van Rossum, had worked for several years on the ABC system in the mid-1980s.[4][5]
Its designers claim that ABC programs are typically around a quarter the size of the equivalent Pascal or C programs, and more readable.[6] Key features include:
ABC was originally a monolithic implementation, leading to an inability to adapt to new requirements, such as creating a graphical user interface (GUI). ABC could not directly access the underlying file system and operating system.
The full ABC system includes a programming environment with a structure editor (syntax-directed editor), suggestions, static variables (persistent), and multiple workspaces, and is available as an interpreter–compiler. As of 2020, the latest version is 1.05.02, for Unix, MS-DOS, Atari ST, and MacOS.
An example function to collect the set of all words in a document:[7]
HOW TO RETURN words document:
PUT {} IN collection
FOR line IN document:
FOR word IN split line:
IF word not.in collection:
INSERT word IN collection
RETURN collection
ABC has been through multiple iterations, with the current version being the 4th major release. Implementations exist for Unix-like systems, MS-DOS/Windows, Macintosh, and other platforms. The source code was made available via Usenet in the late 1980s/early 1990s.
He [Lambert Meertens] was clearly influenced by ALGOL 68's philosophy of providing constructs that can be combined in many different ways to produce all sorts of different data structures or ways of structuring a program. – Guido van Rossum
... I figured I could design and implement a language 'almost, but not quite, entirely unlike' ABC, improving upon ABC's deficiencies, ...
... in my head I had analyzed some of the reasons it had failed.