ABC (programming language)

Last updated
ABC
Paradigms multi-paradigm: imperative, procedural, structured
Designed by Leo Geurts, Lambert Meertens, Steven Pemberton
Developer Centrum Wiskunde & Informatica (CWI)
First appearedJanuary 1987;37 years ago (1987-01)
Stable release
1.05.02 / 1990;34 years ago (1990)
Typing discipline strong, polymorphic
OS Unix-like, Windows, MacOS, and Atari TOS
Website homepages.cwi.nl/~steven/abc/
Influenced by
SETL, ALGOL 68 [1]
Influenced
Python

ABC is an imperative general-purpose programming language and integrated development environment (IDE) developed at Centrum Wiskunde & Informatica (CWI), in Amsterdam, 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.

Contents

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:

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 interpretercompiler. 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

Implementations

ABC 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.

Further Reading

More details on ABC can be found in the book "The ABC Programmer's Handbook" by Leo Geurts, Lambert Meertens and Steven Pemberton (ISBN 0-13-000027-2). A newsletter and mailing list were available from CWI.

Related Research Articles

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop and NetBeans, do not.

<span class="mw-page-title-main">Python (programming language)</span> General-purpose programming language

Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.

Yacc is a computer program for the Unix operating system developed by Stephen C. Johnson. It is a lookahead left-to-right rightmost derivation (LALR) parser generator, generating a LALR parser based on a formal grammar, written in a notation similar to Backus–Naur form (BNF). Yacc is supplied as a standard utility on BSD and AT&T Unix. GNU-based Linux distributions include Bison, a forward-compatible Yacc replacement.

<span class="mw-page-title-main">Guido van Rossum</span> Dutch programmer and creator of Python

Guido van Rossum is a Dutch programmer best known as the creator of the Python programming language, for which he was the "benevolent dictator for life" (BDFL) until he stepped down from the position on 12 July 2018. He remained a member of the Python Steering Council through 2019, and withdrew from nominations for the 2020 election.

In computer programming, a standard library is the library made available across implementations of a programming language. These libraries are conventionally described in programming language specifications; however, contents of a language's associated library may also be determined by more informal practices of a language's community.

The Centrum Wiskunde & Informatica is a research centre in the field of mathematics and theoretical computer science. It is part of the institutes organization of the Dutch Research Council (NWO) and is located at the Amsterdam Science Park. This institute is famous as the creation site of the programming language Python. It was a founding member of the European Research Consortium for Informatics and Mathematics (ERCIM).

SETL is a very high-level programming language based on the mathematical theory of sets. It was originally developed at the New York University (NYU) Courant Institute of Mathematical Sciences in the late 1960s, by a group containing (Jack) Jacob T. Schwartz, R.B.K. Dewar, and E. Schonberg. Schwartz is credited with designing the language.

<span class="mw-page-title-main">Adriaan van Wijngaarden</span> Dutch mathematician and computer scientist

Adriaan "Aad" van Wijngaarden was a Dutch mathematician and computer scientist. Trained as a mechanical engineer, Van Wijngaarden emphasized and promoted the mathematical aspects of computing, first in numerical analysis, then in programming languages and finally in design principles of such languages.

In computer programming languages, a switch statement is a type of selection control mechanism used to allow the value of a variable or expression to change the control flow of program execution via search and map.

<span class="mw-page-title-main">Steven Pemberton</span> British-Dutch computer scientist

Steven Pemberton is a researcher affiliated with the Distributed and Interactive Systems group at the Centrum Wiskunde & Informatica (CWI), the national research institute for mathematics and computer science in the Netherlands.

The Python License is a deprecated permissive computer software license created by the Corporation for National Research Initiatives (CNRI). It was used for versions 1.6 and 2.0 of the Python programming language, both released in the year 2000.

Lambert Guillaume Louis Théodore Meertens or L.G.L.T. Meertens is a Dutch computer scientist and professor. As of 2020, he is a researcher at the Kestrel Institute, a nonprofit computer science research center in Palo Alto's Stanford Research Park.

<span class="mw-page-title-main">IDLE</span> Integrated development environment for Python

IDLE is an integrated development environment for Python, which has been bundled with the default implementation of the language since 1.5.2b1. It is packaged as an optional part of the Python packaging with many Linux distributions. It is completely written in Python and the Tkinter GUI toolkit.

The ARRA was the first Dutch computer, and was built from relays for the Dutch Mathematical Centre, which later became the Centrum Wiskunde & Informatica (CWI).

<span class="mw-page-title-main">History of Python</span> History of the Python programming language

The programming language Python was conceived in the late 1980s, and its implementation was started in December 1989 by Guido van Rossum at CWI in the Netherlands as a successor to ABC capable of exception handling and interfacing with the Amoeba operating system. Van Rossum is Python's principal author, and his continuing central role in deciding the direction of Python is reflected in the title given to him by the Python community, Benevolent Dictator for Life (BDFL).. Python was named after the BBC TV show Monty Python's Flying Circus.

<span class="mw-page-title-main">Scripting language</span> Programming language for run-time events

A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled.

Andries Evert Brouwer is a Dutch mathematician and computer programmer, Professor Emeritus at Eindhoven University of Technology (TU/e). He is known as the creator of the greatly expanded 1984 to 1985 versions of the roguelike computer game Hack that formed the basis for NetHack. He is also a Linux kernel hacker. He is sometimes referred to by the handle aeb.

The Dr. Dobb's Excellence in Programming Award was an annual prize given to individuals who, in the opinion of the editors of Dr. Dobb's Journal, "made significant contributions to the advancement of software development." The Excellence in Programming Award includes a $1,000 prize that was donated in the award winner's name to a charity of the winner's choice. The award was launched in 1995 in the print edition of Dr. Dobb's Journal and was given each year until 2009. In his March 1995 article introducing the awards, then editor-in-chief Jonathan Erickson wrote that the award was intended to recognize "achievement and excellence in the field of computer programming." Erickson explained that the winners were "selected by a special editorial committee" of the magazine. Because Dr. Dobb's serves an audience of software developers, the Excellence in Programming Award is specifically intended to recognize resources for programmers: languages, code libraries, tutorial books, and so on. Developers of shrinkwrap software intended for retail sale, custom software for corporate use, embedded software, or general-purpose applications were not considered for the award.

Krzysztof R. Apt is a Polish computer scientist. He defended his PhD in mathematical logic in Warsaw, Poland in 1974. His research interests include program correctness and semantics, use of logic as a programming language, distributed computing, and game theory. Besides his own research, he has been heavily involved in service to the computing community, notably by promoting the use of logic in computer science and by advocating open access to scientific literature.

References

  1. 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
  2. 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.
  3. 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, ...
  4. 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.
  5. Pemberton, Steven (2012-02-22). "The ABC Programming Language: a short introduction". Centrum Wiskunde & Informatica (CWI). Amsterdam. Retrieved 2020-09-04.