APL (programming language)

[3] The preface states its premise: Applied mathematics is largely concerned with the design and analysis of explicit procedures for calculating the exact or approximate values of various functions.

Iverson also used his notation in a draft of the chapter A Programming Language, written for a book he was writing with Fred Brooks, Automatic Data Processing, which would be published in 1963.

[11] As early as 1962, the first attempt to use the notation to describe a complete computer system happened after Falkoff discussed with William C. Carter his work to standardize the instruction set for the machines that later became the IBM System/360 family.

One of the motivations for this focus of implementation was the interest of John L. Lawrence who had new duties with Science Research Associates, an educational company bought by IBM in 1964.

The basis of this implementation was described in detail by Abrams in a Stanford University Technical Report, "An Interpreter for Iverson Notation" in 1966.

[14] Like Hellerman's PAT system earlier, this implementation omitted the APL character set, but used special English reserved words for functions and operators.

For the first time, a programmer could type in and see proper APL characters as used in Iverson's notation and not be forced to use awkward English keyword representations of them.

Somewhat later, as suitably performing hardware was finally growing available in the mid- to late-1980s, many users migrated their applications to the personal computer environment.

In the 1980s, the VSAPL program product enjoyed wide use with Conversational Monitor System (CMS), Time Sharing Option (TSO), VSPC, MUSIC/SP, and CICS users.

In 1973–1974, Patrick E. Hagerty directed the implementation of the University of Maryland APL interpreter for the 1100 line of the Sperry UNIVAC 1100/2200 series mainframe computers.

CompuServe also entered the market in 1978 with an APL Interpreter based on a modified version of Digital Equipment Corp and Carnegie Mellon's, which ran on DEC's KI and KL 36-bit machines.

[45] Various implementations of APL by APLX, Dyalog, et al., include extensions for object-oriented programming, support for .NET, XML-array conversion primitives, graphing, operating system interfaces, and lambda calculus expressions.

Over time, with the universal use of high-quality graphic displays, printing devices and Unicode support, the APL character font problem has largely been eliminated.

Special APL keyboards are also made and in use today, as are freely downloadable fonts for operating systems such as Microsoft Windows.

[49] The reported productivity gains assume that one spends enough time working in the language to make it worthwhile to memorize the symbols, their semantics, keyboard mappings, and many idioms for common tasks.

For example, the iota function (ι) can replace for-loop iteration: ιN when applied to a scalar positive integer yields a one-dimensional array (vector), 1 2 3 ... N. Later APL implementations generally include comprehensive control structures, so that data structure and program control flow can be clearly and cleanly separated.

[61]) Most if not all modern implementations use standard keyboard layouts, with special mappings or input method editors to access non-ASCII characters.

Advocates also claim that they are far more productive with APL than with more conventional computer languages, and that working software can be implemented in far less time and with far fewer programmers than using other technology.

[citation needed] They also may claim that because it is compact and terse, APL lends itself well to larger-scale software development and complexity, because the number of lines of code can be reduced greatly.

[70] This displays "Hello, world": A design theme in APL is to define default actions in some cases that would produce syntax errors in most other programming languages.

In the following example, also Dyalog, the first line assigns some HTML code to a variable txt and then uses an APL expression to remove all the HTML tags: APL derives its name from the initials of Iverson's book A Programming Language,[3] even though the book describes Iverson's mathematical notation, rather than the implemented programming language described in this article.

Adin Falkoff coined the name in 1966 during the implementation of APL\360 at IBM: As I walked by the office the three students shared, I could hear sounds of an argument going on.

Then one day Adin Falkoff walked into Ken's office and wrote "A Programming Language" on the board, and underneath it the acronym "APL".

[85] It has been argued that APL is a calculation tool and not a programming language;[86] its symbolic nature and array capabilities have made it popular with domain experts and data scientists[87] who do not have or require the skills of a computer programmer.

[citation needed] APL is well suited to image manipulation and computer animation, where graphic transformations can be encoded as matrix multiplications.

[88] 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.

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.

In 1985, Ian Sharp, and Dan Dyer of STSC, jointly received the Kenneth E. Iverson Award for Outstanding Contribution to APL.

[117] Richard Stallman, founder of the GNU Project, was an early adopter of APL, using it to write a text editor as a high school student in the summer of 1969.

[134] However, in certain circumstances, it is possible to deduce in advance what type a name is expected to reference and then generate bytecode which can be executed with reduced run-time overhead.

IBM typeballs and typewheel containing APL Greek characters
A programmer's view of the IBM 2741 keyboard layout with the APL typing element print head inserted
British APL Association (BAPLA) conference laptop bag