Katana VentraIP

APL (programming language)

APL (named after the book A Programming Language)[3] is a programming language developed in the 1960s by Kenneth E. Iverson. Its central datatype is the multidimensional array. It uses a large range of special graphic symbols[4] to represent most functions and operators, leading to very concise code. It has been an important influence on the development of concept modeling, spreadsheets, functional programming,[5] and computer math packages.[6] It has also inspired several other programming languages.[7][8]

Not to be confused with Address (programming language).

History[edit]

Mathematical notation[edit]

A mathematical notation for manipulating arrays was developed by Kenneth E. Iverson, starting in 1957 at Harvard University. In 1960, he began work for IBM where he developed this notation with Adin Falkoff and published it in his book A Programming Language in 1962.[3] The preface states its premise:

The first to be executed (APL executes from rightmost to leftmost) is dyadic function ? (named deal when dyadic) that returns a consisting of a select number (left argument: 6 in this case) of random integers ranging from 1 to a specified maximum (right argument: 40 in this case), which, if said maximum ≥ vector length, is guaranteed to be non-repeating; thus, generate/create 6 random integers ranging from 1 to 40.[74]

vector

This vector is then assigned () to the variable x, because it is needed later.

This vector is then sorted in ascending order by a monadic function, which has as its right argument everything to the right of it up to the next unbalanced close-bracket or close-parenthesis. The result of is the indices that will put its argument into ascending order.

Then the output of is used to index the variable x, which we saved earlier for this purpose, thereby selecting its items in ascending sequence.

Use[edit]

APL is used for many purposes including financial and insurance applications,[82] artificial intelligence,[83][84] neural networks[85] and robotics.[86] It has been argued that APL is a calculation tool and not a programming language;[87] its symbolic nature and array capabilities have made it popular with domain experts and data scientists[88] who do not have or require the skills of a computer programmer.


APL is well suited to image manipulation and computer animation, where graphic transformations can be encoded as matrix multiplications. One of the first commercial computer graphics houses, Digital Effects, produced an APL graphics product named Visions, which was used to create television commercials and animation for the 1982 film Tron.[89] Latterly, the Stormwind boating simulator uses APL to implement its core logic, its interfacing to the rendering pipeline middleware and a major part of its physics engine.[90]


Today, APL remains in use in a wide range of commercial and scientific applications, for example investment management,[82] asset management,[91] health care,[92] and DNA profiling.[93][94]

Notable implementations[edit]

APL\360[edit]

The first implementation of APL using recognizable APL symbols was APL\360 which ran on the IBM System/360, and was completed in November 1966[1] though at that time remained in use only within IBM.[39] In 1973 its implementors, Larry Breed, Dick Lathwell and Roger Moore, were awarded the Grace Murray Hopper Award from the Association for Computing Machinery (ACM). It was given "for their work in the design and implementation of APL\360, setting new standards in simplicity, efficiency, reliability and response time for interactive systems."[95][96][97]


In 1975, the IBM 5100 microcomputer offered APL\360[98] as one of two built-in ROM-based interpreted languages for the computer, complete with a keyboard and display that supported all the special symbols used in the language.[99]


Significant developments to APL\360 included CMS/APL, which made use of the virtual storage capabilities of CMS and APLSV, which introduced shared variables, system variables and system functions. It was subsequently ported to the IBM System/370 and VSPC platforms until its final release in 1983, after which it was replaced by APL2.[39]

APL\1130[edit]

In 1968, APL\1130 became the first publicly available APL system, created by IBM for the IBM 1130.[100] It became the most popular IBM Type-III Library software that IBM released.[101]

Standards[edit]

APL has been standardized by the American National Standards Institute (ANSI) working group X3J10 and International Organization for Standardization (ISO) and International Electrotechnical Commission (IEC), ISO/IEC Joint Technical Committee 1 Subcommittee 22 Working Group 3. The Core APL language is specified in ISO 8485:1989, and the Extended APL language is specified in ISO/IEC 13751:2001.

Archived 2024-01-27 at the Wayback Machine (1970 Stanford doctoral dissertation by Philip Abrams)

An APL Machine

Archived 2023-11-07 at the Wayback Machine (1982 article by Michael S. Montalbano)

A Personal History Of APL

McIntyre, Donald B. (1991). (PDF). IBM Systems Journal. 30 (4): 554–581. doi:10.1147/sj.304.0554. Archived from the original (PDF) on May 4, 2006.

"Language as an intellectual tool: From hieroglyphics to APL"

(1991). "A Personal view of APL" (PDF). IBM Systems Journal. 30 (4): 582–593. doi:10.1147/sj.304.0582. Archived from the original (PDF) on February 27, 2008.

Iverson, Kenneth E.

by Kenneth E. Iverson

A Programming Language

by Kenneth E. Iverson

APL in Exposition

Brooks, Frederick P.; Kenneth Iverson (1965). Automatic Data Processing, System/360 Edition.  0-471-10605-4.

ISBN

Askoolum, Ajay (August 2006). System Building with APL + Win. Wiley.  978-0-470-03020-2.

ISBN

Falkoff, Adin D.; ; Sussenguth, Edward H. (1964). "A Formal Description of System/360" (PDF). IBM Systems Journal. 3 (2): 198–261. doi:10.1147/sj.32.0198. Archived from the original (PDF) on February 27, 2008.

Iverson, Kenneth E.

Wexelblat, Richard L, ed. (1981). "XIV". History of Programming Languages: Proceedings of the History of Programming Languages Conference, Los Angeles, Calif., June 1-3, 1978.  978-0127450407.

ISBN

Banon, Gerald Jean Francis (1989). Bases da Computacao Grafica. Rio de Janeiro: Campus. p. 141.

LePage, Wilbur R. (1978). Applied A.P.L. Programming. Prentice Hall.

Mougin, Philippe; Ducasse, Stephane (November 2003). (PDF). ACM SIGPLAN Notices. 38 (11): 65–77. doi:10.1145/949343.949312. Archived from the original (PDF) on November 14, 2006.

"OOPAL: Integrating array programming in object-oriented programming"

(PDF). Dyalog Limited. September 2006. Archived from the original (PDF) on October 4, 2007.

An Introduction to Object Oriented Programming For APL Programmers

Shustek, Len (October 10, 2012). . Computer History Museum (CHM). Archived from the original on September 6, 2017. Retrieved September 6, 2017.

"The APL Programming Language Source Code"

; White, Donnamaie E. (2016) [2012, 1985, 1979-08-01]. Advanced Logical Circuit Design Techniques (PDF) (retyped electronic reissue ed.). Garland STPM Press (original issue) / WhitePubs Enterprises, Inc. (reissue). ISBN 978-0-8240-7014-4. LCCN 78-31384. Archived (PDF) from the original on 2017-04-14. Retrieved 2017-04-15. [1] [2]

Svoboda, Antonín

an online APL primer

TryAPL.org

at Curlie

APL

a source of links to APL compilers

APL2C