| ABC | |
|---|---|
| Paradigms | multi-paradigm:imperative,procedural,structured |
| Designed by | Leo Geurts,Lambert Meertens,Steven Pemberton |
| Developer | Centrum Wiskunde & Informatica (CWI) |
| First appeared | January 1987; 38 years ago (1987-01) |
| Stable release | 1.05.02 / 1990; 35 years ago (1990) |
| Typing discipline | strong,polymorphic |
| OS | Unix-like,Windows,MacOS, andAtari TOS |
| Website | homepages |
| Influenced by | |
| SETL,ALGOL 68[1] | |
| Influenced | |
| Python | |
ABC is animperative general-purposeprogramming language andintegrated development environment (IDE) developed atCentrum Wiskunde & Informatica (CWI), inAmsterdam,Netherlands by Leo Geurts,Lambert Meertens, andSteven Pemberton.[2] It is interactive, structured,high-level, and intended to be used instead ofBASIC,Pascal, orAWK. It is intended for teaching or prototyping, but not as a systems-programming language.
ABC had a major influence on the design of the languagePython, developed byGuido van Rossum, who formerly worked for several years on the ABC system in the mid-1980s.[3][4]
Its designers claim that ABCprograms are typically around a quarter the size of the equivalentPascal orC programs, and more readable.[5] Key features include:
ABC was originally amonolithic implementation, leading to an inability to adapt to new requirements, such as creating agraphical user interface (GUI). ABC could not directly access the underlyingfile system andoperating system.
The full ABC system includes a programming environment with astructure editor (syntax-directed editor), suggestions,static variables (persistent), and multiple workspaces, and is available as aninterpreter–compiler. As of 2020[update], the latest version is 1.05.02, forUnix,MS-DOS,Atari ST, andMacOS.
An example function to collect the set of allwords in a document:[6]
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 collectionABC 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 byALGOL 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.