ABC (programming language)
Paradigm | multi-paradigm: imperative, procedural, structured |
---|---|
Designed by | Leo Geurts, Lambert Meertens, Steven Pemberton |
Developer | CWI |
Stable release | 1.05.02
|
Typing discipline | strong, polymorphic |
Website | homepages |
Influenced by | |
SETL & ALGOL 68[1] | |
Influenced | |
Python, Agena |
ABC is an imperative general-purpose programming language and programming environment developed at CWI, Netherlands by Leo Geurts, Lambert Meertens, and Steven Pemberton. It is interactive, structured, high-level, and intended to be used instead of BASIC, Pascal, or AWK. It is not meant to be a systems-programming language but is intended for teaching or prototyping.
ABC has only five basic datatypes. It does not require variable declarations. It has explicit support for top-down programming. Statement nesting is indicated by indentation. It provides infinite precision arithmetic, unlimited sized lists and strings, and other features supporting orthogonality and ease of use by novices. Its designers claim that ABC programs are typically around a quarter the size of the equivalent Pascal or C programs, and more readable.
ABC was originally a monolithic implementation, leading to an inability to adapt to new requirements, such as creating a Graphical User Interface. ABC could not directly access the underlying file system and operating system.
ABC includes a programming environment with syntax-directed editing, suggestions, persistent variables, and multiple workspaces.
ABC is available as an interpreter/compiler, currently at version 1.05.02. ABC has been ported to Unix, DOS, Atari, and Apple Macintosh.
ABC also had a major influence on the design of the Python programming language; Guido van Rossum, who developed Python, previously worked for several years on the ABC system in the early 1980s.[2][3]
Example
An example function words 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
Notes
- ^ "He 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
Masterminds of Programming: Conversations with the Creators of Major Programming Languages. O'Reilly Media. 2009. p. 32. ISBN 0-596-51517-0.
{{cite book}}
:|access-date=
requires|url=
(help); External link in
(help); Unknown parameter|chapterurl=
|chapterurl=
ignored (|chapter-url=
suggested) (help); Unknown parameter|coauthors=
ignored (|author=
suggested) (help); Unknown parameter|month=
ignored (help) - ^ http://www.computerworld.com.au/index.php/id;66665771
- ^ http://www.onlamp.com/lpt/a/2431
See also
References
This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.
External links
Books