ABC (programming language): Difference between revisions
counterexample of what? unclear and unnecessary, removed. |
Rescuing 1 sources and tagging 0 as dead. #IABot (v1.4beta3) |
||
Line 22: | Line 22: | ||
'''ABC''' is an [[imperative_programming|imperative]] general-purpose [[programming language]] and [[integrated development environment|programming environment]] developed at [[Centrum Wiskunde & Informatica|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 (programming language)|Pascal]], or [[AWK]]. It is not meant to be a systems-programming language but is intended for teaching or prototyping. |
'''ABC''' is an [[imperative_programming|imperative]] general-purpose [[programming language]] and [[integrated development environment|programming environment]] developed at [[Centrum Wiskunde & Informatica|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 (programming language)|Pascal]], or [[AWK]]. It is not meant to be a systems-programming language but is intended for teaching or prototyping. |
||
The language had a major influence on the design of the [[Python (programming language)|Python programming language]]; [[Guido van Rossum]], who developed Python, previously worked for several years on the ABC system in the early 1980s.<ref>[http://www.computerworld.com.au/index.php/id;66665771 The A-Z of Programming Languages: Python]. ''"...I figured I could design and implement a language 'almost, but not quite, entirely unlike' ABC, improving upon ABC's deficiencies..."'', Computerworld (2008-08-05). Retrieved on 2014-07-08.</ref><ref>[http://www.onlamp.com/pub/a/python/2002/06/04/guido.html An Interview with Guido van Rossum]. ''"... in my head I had analyzed some of the reasons it had failed..."'' ONLamp.com. Retrieved on 2013-07-08.</ref> |
The language had a major influence on the design of the [[Python (programming language)|Python programming language]]; [[Guido van Rossum]], who developed Python, previously worked for several years on the ABC system in the early 1980s.<ref>[http://www.computerworld.com.au/index.php/id;66665771 The A-Z of Programming Languages: Python] {{webarchive|url=https://web.archive.org/web/20081229095320/http://www.computerworld.com.au/index.php/id%3B66665771 |date=2008-12-29 }}. ''"...I figured I could design and implement a language 'almost, but not quite, entirely unlike' ABC, improving upon ABC's deficiencies..."'', Computerworld (2008-08-05). Retrieved on 2014-07-08.</ref><ref>[http://www.onlamp.com/pub/a/python/2002/06/04/guido.html An Interview with Guido van Rossum]. ''"... in my head I had analyzed some of the reasons it had failed..."'' ONLamp.com. Retrieved on 2013-07-08.</ref> |
||
==Features== |
==Features== |
Revision as of 21:09, 23 June 2017
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 |
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.
The language 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]
Features
Its designers claim that ABC programs are typically around a quarter the size of the equivalent Pascal or C programs, and more readable. Key features include:
- Only five basic data types.
- Does not require 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. ABC could not directly access the underlying file system and operating system.
The full ABC system includes a programming environment with syntax-directed editing, suggestions, persistent variables, and multiple workspaces - and is available as an interpreter/compiler, currently at version 1.05.02, and ported to Unix, DOS, Atari, and Apple Macintosh.
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
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 Federico Biancuzzi; Shane Warden (April 2009). Masterminds of Programming: Conversations with the Creators of Major Programming Languages. O'Reilly Media. p. 32. ISBN 0-596-51517-0. Retrieved December 14, 2009.
- ^ The A-Z of Programming Languages: Python Archived 2008-12-29 at the Wayback Machine. "...I figured I could design and implement a language 'almost, but not quite, entirely unlike' ABC, improving upon ABC's deficiencies...", Computerworld (2008-08-05). Retrieved on 2014-07-08.
- ^ An Interview with Guido van Rossum. "... in my head I had analyzed some of the reasons it had failed..." ONLamp.com. Retrieved on 2013-07-08.
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.