Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
ABC (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language}} {{Infobox programming language |name = ABC |logo = |paradigms = [[Multi-paradigm programming language|multi-paradigm]]: [[Imperative programming|imperative]], [[Procedural programming|procedural]], [[Structured programming|structured]] |designers = Leo Geurts, [[Lambert Meertens]], [[Steven Pemberton]] |developer = [[Centrum Wiskunde & Informatica]] (CWI) |released = {{Start date and age|1987|01}} |latest release version = 1.05.02 |latest release date = {{Start date and age|1990}}<!-- If known, add |mm|dd --> |typing = [[Strong and weak typing|strong]], [[Polymorphism (computer science)|polymorphic]] |implementations = | operating system = [[Unix-like]], [[Windows]], [[MacOS]], and [[Atari TOS]] |dialects = |influenced by = [[SETL]], [[ALGOL 68]]<ref>{{cite book |page=32 |url=https://books.google.com/books?q=He-was-clearly-influenced-by-ALGOL-68 |access-date=December 14, 2009 |last1=Biancuzzi |first1=Federico |last2=Warden |first2=Shane |title=Masterminds of Programming: Conversations with the Creators of Major Programming Languages |publisher=[[O'Reilly Media]] |date=April 2009 |isbn=978-0-596-51517-1 |quote=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]]}}</ref> |influenced = [[Python (programming language)|Python]] }} '''ABC''' is an [[Imperative programming|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]].<ref>{{cite journal |title=An Alternative Simple Language and Environment for PCs |first1=Steven |last1=Pemberton |author1-link=Steven Pemberton |date=January 1987 |journal=IEEE Software |volume=4 |issue=1 |pages=56β64 |doi=10.1109/MS.1987.229797|s2cid=12788361 }}</ref> It is interactive, structured, [[High-level programming language|high-level]], and intended to be used instead of [[BASIC]], [[Pascal (programming language)|Pascal]], or [[AWK]]. It is intended for teaching or prototyping, but not as a systems-programming language. ABC had a major influence on the design of the language [[Python (programming language)|Python]], developed by [[Guido van Rossum]], who formerly worked for several years on the ABC system in the mid-1980s.<ref>{{cite magazine |last=Hamilton |first=Naomi |date=2008-05-08 |url=http://www.computerworld.com.au/index.php/id;66665771 |title=The A-Z of Programming Languages: Python |magazine=Computerworld |publisher=IDG Communications |url-status=dead |archive-url=https://web.archive.org/web/20081229095320/http://www.computerworld.com.au/index.php/id%3B66665771 |archive-date=2008-12-29 |quote=... I figured I could design and implement a language 'almost, but not quite, entirely unlike' ABC, improving upon ABC's deficiencies, ... |access-date=2020-09-04}}</ref><ref>{{cite web |last=Stewart |first=Bruce |date=2002-06-04 |url=http://www.onlamp.com/pub/a/python/2002/06/04/guido.html |title=An Interview with Guido van Rossum |website=ONLamp.com |publisher=OβReilly Media |url-status=dead |archive-url=https://web.archive.org/web/20130313095540/http://www.onlamp.com/pub/a/python/2002/06/04/guido.html |archive-date=2013-03-13 |quote=... in my head I had analyzed some of the reasons it had failed. |access-date=2020-09-04}}</ref> ==Features== Its designers claim that ABC [[Computer program|programs]] are typically around a quarter the size of the equivalent [[Pascal (programming language)|Pascal]] or [[C (programming language)|C]] programs, and more readable.<ref>{{cite web |last=Pemberton |first=Steven |date=2012-02-22 |url=https://homepages.cwi.nl/~steven/abc/ |title=The ABC Programming Language: a short introduction |website=[[Centrum Wiskunde & Informatica]] (CWI) |place=Amsterdam |access-date=2020-09-04}}</ref> Key features include: *Only five basic [[data type]]s *No required variable declarations *Explicit support for [[top-down programming]] *Statement nesting is indicated by [[indent style|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 * Polymorphic commands and functions * Interactive environment with command completion, persistent workspaces, and no separate file handling ABC was originally a [[monolithic application|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 variable]]s (persistent), and multiple workspaces, and is available as an [[Interpreter (computer software)|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 <code>words</code> in a document:<ref>{{FOLDOC|ABC}}</ref> 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. ==References== {{Reflist}} == Further reading == * {{cite book | last=Geurts | first=Leo | last2=Meertens | first2=Lambert | last3=Pemberton | first3=Steven | title=ABC Programmer's Handbook | publisher=Prentice Hall | publication-place=New York | date=1990-01-01 | isbn=0-13-000027-2 | url=https://homepages.cwi.nl/~steven/abc/programmers/handbook.html}} {{Authority control}} {{DEFAULTSORT:Abc}} [[Category:Computer science in the Netherlands]] [[Category:Dutch inventions]] [[Category:Educational programming languages]] [[Category:Information technology in the Netherlands]] [[Category:Persistent programming languages]] [[Category:Procedural programming languages]] [[Category:Programming languages created in the 1980s]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:As of
(
edit
)
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite magazine
(
edit
)
Template:Cite web
(
edit
)
Template:FOLDOC
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Talk other
(
edit
)