ABC (programming language)

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
Paradigmmulti-paradigm: imperative, procedural, structured
Designed byLeo Geurts, Lambert Meertens, Steven Pemberton
DeveloperCWI
Stable release
1.05.02
Typing disciplinestrong, polymorphic
Websitehomepages.cwi.nl/~steven/abc/
Influenced by
SETL & ALGOL 68[1]
Influenced
Python

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 mid 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

  1. "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.
  2. 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.
  3. 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. archived copy
gollark: Intel CPU/GPU ≠ Intel computer.
gollark: @n64c Intel don't make PCs.
gollark: This is why you should compile your Java projects using NPM.
gollark: Turbokrist? It's a GPU miner so will be actually competitive.
gollark: `krist-miner` is a *CPU* miner.

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.

Books

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.