ABC (programming language)
ABC is an imperative general-purpose programming language and integrated development environment (IDE) developed at Centrum Wiskunde & Informatica (CWI), 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.
Paradigms | multi-paradigm: imperative, procedural, structured |
---|---|
Designed by | Leo Geurts, Lambert Meertens, Steven Pemberton |
Developer | Centrum Wiskunde & Informatica (CWI) |
First appeared | January 1987 |
Stable release | 1.05.02
/ 1990 |
Typing discipline | strong, polymorphic |
OS | Unix-like, Windows, MacOS, and Atari TOS |
Website | homepages |
Influenced by | |
SETL, ALGOL 68[1] | |
Influenced | |
Python |
ABC had a major influence on the design of the language Python, developed by Guido van Rossum, who formerly worked for several years on the ABC system in the mid-1980s.[3][4]
Features
Its designers claim that ABC programs are typically around a quarter the size of the equivalent Pascal or C programs, and more readable.[5] Key features include:
- Only five basic data types
- No required variable declarations
- Explicit support for top-down programming
- Statement nesting is indicated by indentation, via the off-side rule
- Infinite precision arithmetic, unlimited-sized lists and strings, and other features supporting orthogonality and ease of use by novices
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, and it is ported to Unix, DOS, Atari, and Apple MacOS.
Example
An example function to collect the set of all words
in a document:
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
References
- Biancuzzi, Federico; Warden, Shane (April 2009). Masterminds of Programming: Conversations with the Creators of Major Programming Languages. O'Reilly Media. p. 32. ISBN 978-0-596-51517-1. Retrieved December 14, 2009.
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
- Pemberton, Steven (January 1987). "An Alternative Simple Language and Environment for PCs". IEEE Software. 4 (1): 56–64. doi:10.1109/MS.1987.229797. S2CID 12788361.
- Hamilton, Naomi (2008-05-08). "The A-Z of Programming Languages: Python". Computerworld. IDG Communications. Archived from the original on 2008-12-29. Retrieved 2020-09-04.
... I figured I could design and implement a language 'almost, but not quite, entirely unlike' ABC, improving upon ABC's deficiencies, ...
- Stewart, Bruce (2002-06-04). "An Interview with Guido van Rossum". ONLamp.com. O’Reilly Media. Archived from the original on 2013-03-13. Retrieved 2020-09-04.
... in my head I had analyzed some of the reasons it had failed.
- Pemberton, Steven (2012-02-22). "The ABC Programming Language: a short introduction". Centrum Wiskunde & Informatica (CWI). Amsterdam. Retrieved 2020-09-04.