All Topics  
APL programming language

 
APL Programming Language

   Email Print
   Bookmark   Link






 

APL programming language



 
 
APL (A Programming Language) is an array programming
Array programming

In computer science, array programming languages generalize operations on scalar s to apply transparently to vector s, matrix , and higher dimensional arrays....
 language based on a notation invented in 1957 by Kenneth E. Iverson
Kenneth E. Iverson

Kenneth Eugene Iverson was a Canadian computer scientist noted for the development of the APL programming language in 1962. He was honored with the Turing Award in 1979 for his contributions to mathematical notation and programming language theory....
 while at Harvard University
Harvard University

Harvard University is a private university in Cambridge, Massachusetts, Massachusetts, United States, and a member of the Ivy League. Founded in 1636 by the colonial Massachusetts legislature, Harvard is the Colonial Colleges institution of higher learning in the United States....
. It originated as an attempt to provide consistent notation for the teaching and analysis of topics related to the application of computers. Iverson published his notation in 1962 in a book titled A Programming Language. By 1965, a subset of the notation was implemented as a programming language, then known as IVSYS.






Discussion
Ask a question about 'APL programming language'
Start a new discussion about 'APL programming language'
Answer questions from other users
Full Discussion Forum



Encyclopedia


APL (A Programming Language) is an array programming
Array programming

In computer science, array programming languages generalize operations on scalar s to apply transparently to vector s, matrix , and higher dimensional arrays....
 language based on a notation invented in 1957 by Kenneth E. Iverson
Kenneth E. Iverson

Kenneth Eugene Iverson was a Canadian computer scientist noted for the development of the APL programming language in 1962. He was honored with the Turing Award in 1979 for his contributions to mathematical notation and programming language theory....
 while at Harvard University
Harvard University

Harvard University is a private university in Cambridge, Massachusetts, Massachusetts, United States, and a member of the Ivy League. Founded in 1636 by the colonial Massachusetts legislature, Harvard is the Colonial Colleges institution of higher learning in the United States....
. It originated as an attempt to provide consistent notation for the teaching and analysis of topics related to the application of computers. Iverson published his notation in 1962 in a book titled A Programming Language. By 1965, a subset of the notation was implemented as a programming language, then known as IVSYS. Later, prior to its commercial release, APL got its name from the title of the book. Iverson received the Turing Award
Turing Award

The A. M. Turing Award is given annually by the Association for Computing Machinery to "an individual selected for contributions of a technical nature made to the computing community....
 in 1979 for his work.

Iverson's notation was later used to describe the IBM System/360 machine architecture, a description much more concise and exact than the existing documentation and revealing several previously unnoticed problems. Later, a Selectric
IBM Selectric typewriter

The IBM Selectric typewriter is an influential electric typewriter design. It was introduced in 1961.Instead of a "basket" of pivoting typebars the Selectric had a pivoting type element that could be changed so as to display different fonts in the same document, resurrecting a capacity that had been pioneered by the moderately successful...
 typeball was specially designed to write a linear representation of this notation. This distinctive aspect of APL, the use of a special character set visually depicting the operations to be performed, remains fundamentally unchanged today.

The APL language features a rich set of operations which work on entire arrays of data, like the vector instruction set of a SIMD architecture. While many computer languages would require iteration
Iteration

Iteration means the act of repeating....
 to, for example, add two arrays together, functions in APL typically deal with entire arrays at once. In conjunction with a special character set where glyphs represent operations to be performed, this drastically reduces the potential number of loops and allows for smaller, more concise and compact programs.

As with all programming languages that have had several decades of continual use, APL has evolved significantly, generally in an upward-compatible manner, from its earlier releases. APL is usually interpretive and interactive, and normally features a read-evaluate-print loop (REPL) for command and expression input. Today, nearly all modern implementations support structured programming
Structured programming

Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. It is most famous for removing or reducing reliance on the GOTO Statement ....
 while several dialects now feature some form of object oriented programming constructs.

In the early 1990s, Iverson, along with Roger Hui
Roger Hui

Roger Hui is co-developer of the J . He was born in Hong Kong in 1953 and he immigrated to Canada with his entire family in 1966....
, redesigned the APL language, calling the update the J programming language. J removed the requirement for the special character set, fixed some ambiguous syntax, and added support for John Backus
John Backus

For the physicist, see John Backus John Warner Backus was an American computer scientist. He led the team that invented the first widely used High-level programming language programming language and was the inventor of the Backus-Naur form , the almost universally used notation to define formal language syntax....
' functional programming
Functional programming

In computer science, functional programming is a programming paradigm that treats computation as the evaluation of function s and avoids program state and immutable object data....
 ideas.

History

The first incarnation of what was later to be the APL programming language was a book describing a notation invented in 1957 by Kenneth E. Iverson
Kenneth E. Iverson

Kenneth Eugene Iverson was a Canadian computer scientist noted for the development of the APL programming language in 1962. He was honored with the Turing Award in 1979 for his contributions to mathematical notation and programming language theory....
 while at Harvard University
Harvard University

Harvard University is a private university in Cambridge, Massachusetts, Massachusetts, United States, and a member of the Ivy League. Founded in 1636 by the colonial Massachusetts legislature, Harvard is the Colonial Colleges institution of higher learning in the United States....
. Published in 1962, the notation described in the book was recognizable yet distant from APL.

IBM was chiefly responsible for the introduction of APL to the marketplace. In 1965, a portion of the notation was reworked and implemented as a programming language. APL was first available in 1967 for the IBM 1130
IBM 1130

The IBM 1130 Computing System was introduced in 1965. It was IBM's least-expensive computer to date, and was aimed at price-sensitive, computing-intensive technical markets like education and engineering....
 as APL\1130. It would run in as little as 8k 16 bit words of memory, and used a dedicated 1 megabyte hard disk. APL gained its foothold on mainframe timesharing systems from the late 1960s through the 1980s. Later, when suitably performing hardware was finally available starting in the early to mid-1980s, many users migrated their applications to the personal computer environment.

Early IBM APL interpreters for IBM 360 and IBM 370
IBM 370

The IBM 370 printer was used on the IBM 305 RAMAC computer system, introduced by IBM on September 14, 1956. The 370 was connected to the 305 by a serial data line from the S track of the computer's drum memory and printed 80-columns with a punched tape controlled carriage....
 hardware implemented their own multi-user management instead of relying on the host services, thus they were timesharing systems in their own right. First introduced in 1966, the APL\360 system was a multi-user interpreter. In 1973, IBM released APL.SV which was a continuation of the same product, but which offered shared variables as a means to access facilities outside of the APL system, such as operating system files. In the mid 1970s, the IBM mainframe interpreter was even adapted for use on the IBM 5100
IBM 5100

The IBM 5100 Portable Computer was a desktop computer introduced in September 1975, six years before the IBM PC. It was the evolution of a prototype called the SCAMP that IBM demonstrated in 1973....
 desktop computer, which had a small CRT and an APL keyboard, when most other small computers of the time only offered BASIC. In the 1980s, the VSAPL program product enjoyed widespread usage with CMS
Conversational Monitor System

The Conversational Monitor System is a relatively simple interactive computing single-user operating system.* CMS is part of IBM's VM , which runs on IBM mainframe computers....
, TSO
Time Sharing Option

In computing, the Time Sharing Option is an interactive time-sharing environment for the lineage of IBM mainframe operating systems running from OS/MVT through MVS and OS/390 to the current z/OS....
, VSPC, and CICS
CICS

CICS is a transaction server that runs primarily on IBM mainframe systems under z/OS and z/VSE.CICS is a transaction manager designed for rapid, high-volume online processing....
 users.

Several timesharing firms sprang up in the 1960s and 1970s which sold APL services using modified versions of the IBM APL\360 interpreter. In North America, the better-known ones were I. P. Sharp Associates
I. P. Sharp Associates

I. P. Sharp Associates, IPSA for short, was a major Canadian computer time sharing, consulting and services firm of the 1970s and 80s. IPSA is particularly well known for its work on the APL programming language, and an early packet switching computer networking system known as IPSANET, and a powerful Mainframe computer-based e-mail sy...
, Scientific Time Sharing Corporation
Scientific Time Sharing Corporation

Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe....
, and The Computer Company (TCC). With the advent first of less expensive mainframes such as the IBM 4331 and later the personal computer, the timesharing industry had all but disappeared by the mid 1980s.

Sharp APL was available from I. P. Sharp Associates
I. P. Sharp Associates

I. P. Sharp Associates, IPSA for short, was a major Canadian computer time sharing, consulting and services firm of the 1970s and 80s. IPSA is particularly well known for its work on the APL programming language, and an early packet switching computer networking system known as IPSANET, and a powerful Mainframe computer-based e-mail sy...
, first on a timesharing basis in the 1960s, and later as a program product starting around 1979. Sharp APL was an advanced APL implementation with many language extensions, such as packages (the ability to put one or more objects into a single variable), file system, nested arrays, and shared variables.

APL interpreters were available from other mainframe and mini-computer manufacturers as well, notably Burroughs, CDC
Control Data Corporation

Control Data Corporation was one of the pioneering supercomputer firms. For most of the 1960s, it built the fastest computers in the world by far, only losing that crown in the 1970s to what was effectively a spinoff, after Seymour Cray left the company to found Cray Research, Inc....
, Data General
Data General

Data General was one of the first minicomputer firms from the late 1960s. Three of the four founders were former employees of Digital Equipment Corporation....
, DEC
Digital Equipment Corporation

Digital Equipment Corporation was a pioneering United States company in the computer industry. It is often referred to within the computing industry as DEC ....
, Harris
Harris Corporation

Harris Corporation is an international communications equipment company that produces wireless equipment, electronic systems, and both terrestrial and spaceborne antennas for use in the government, defense, and commercial sectors....
, Hewlett-Packard
Hewlett-Packard

The Hewlett-Packard Company , commonly referred to as HP, is a technology corporation headquartered in Palo Alto, California, United States....
, Siemens
Siemens AG

Siemens Aktiengesellschaft is Europe's largest engineering Conglomerate . Siemens' international headquarters are located in Berlin and Munich, Germany....
, Xerox
Xerox

Xerox Corporation is a global document management company which manufactures and sells a range of color and black-and-white Computer printer, multifunction systems, photo copiers, digital production printing presses, and related consulting services and supplies....
, and others.

APL2

Starting in the early 1980s, IBM APL development, under the leadership of Dr Jim Brown
Jim Brown (Computer Scientist)

James A. Brown was manager of the group within IBM responsible for the APL2 program product. APL2 was first available on IBM mainframes in 1980, and was later available under Linux, Unix, and Windows....
, implemented a new version of the APL language which contained as its primary enhancement the concept of nested arrays where an array may contain other arrays, plus new language features which facilitated the integration of nested arrays into program workflow. Ken Iverson, no longer in control of the development of the APL language, left IBM and joined I. P. Sharp Associates
I. P. Sharp Associates

I. P. Sharp Associates, IPSA for short, was a major Canadian computer time sharing, consulting and services firm of the 1970s and 80s. IPSA is particularly well known for its work on the APL programming language, and an early packet switching computer networking system known as IPSANET, and a powerful Mainframe computer-based e-mail sy...
 where he, among other things, directed the evolution of Sharp APL to be more in accordance with his vision.

As other vendors were busy developing APL interpreters for new hardware, notably Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
-based microcomputer
Microcomputer

A microcomputer is a computer with a microprocessor as its central processing unit. Another general characteristic of these computers is that they occupy physically small amounts of space when compared to mainframe computer and minicomputers....
s, APL2 was almost always the standard chosen for new APL interpreter developments. Even today, most APL vendors cite APL2 compatibility, which only approaches 100%, as a selling point for their products.

APL2 for IBM mainframe computers is still available today, and was first available for CMS
Conversational Monitor System

The Conversational Monitor System is a relatively simple interactive computing single-user operating system.* CMS is part of IBM's VM , which runs on IBM mainframe computers....
 and TSO
Time Sharing Option

In computing, the Time Sharing Option is an interactive time-sharing environment for the lineage of IBM mainframe operating systems running from OS/MVT through MVS and OS/390 to the current z/OS....
 around 1980. The APL2 Workstation edition (Windows, OS/2, AIX, Linux, and Solaris) followed much later in the early 1990s.

Microcomputers

The first microcomputer implementation of APL was on the MCM/70, an 8008
Intel 8008

The Intel 8008 was an early byte-oriented microprocessor designed and manufactured by Intel and introduced in April 1972. Originally known as the 1201, the chip was commissioned by Computer Terminal Corporation to implement an instruction set designed for their Datapoint 2200 programmable terminal....
-based processor, in 1973. A for the Intel 8080 called EMPL was released in 1977, and Softronics APL, with most of the functions of full APL, for 8080-based CP/M systems was released in 1979.

In 1977, was released a business level APL known as TIS APL, based on the Z80 processor. It featured the full set of file functions for APL, plus a full screen input and switching of right and left arguments for most dyadic operators by introducing ~. prefix to all single character dyadic functions such as - or /.

Vanguard APL was available for Z80 CP/M
CP/M

CP/M is an operating system originally created for Intel 8080/Intel 8085 based microcomputers by Gary Kildall of Digital Research. Initially confined to single tasking on 8-bit processors and no more than 64 kilobytes of memory, later versions of CP/M added multi-user variations, and were migrated to 16-bit processors....
-based processors in the late 1970s. TCC released APL.68000 in the early 1980s for Motorola 68000-based processors, this system being the basis for MicroAPL Limited's APLX product. I. P. Sharp Associates released a version of their APL interpreter for the IBM PC and PC/370 - for the IBM PC, an emulator
Emulator

An emulator duplicates the functions of one system using a different system, so that the second system behaves like the first system. This focus on exact reproduction of external behavior is in contrast to some other forms of computer simulation, which can concern an abstract model of the system being simulated....
 was written which facilitated reusing much of the IBM 370 mainframe code. Arguably, the best known APL interpreter for the IBM Personal Computer was STSC
Scientific Time Sharing Corporation

Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe....
's APL*Plus/PC.

The Commodore SuperPET
Commodore PET

The PET was a home computer-/personal computer produced by Commodore International starting in 1977. Although it was not a top seller outside the Canadian, US, and UK educational markets, it was Commodore's first full-featured computer and would form the basis for their future success....
, introduced in 1981, included an APL interpreter developed by the University of Waterloo
University of Waterloo

The University of Waterloo is a comprehensive public university in the city of Waterloo, Ontario, Ontario, Canada. The school was founded in 1957 by Drs....
.

In the early 1980s, the Analogic Corporation developed The APL Machine, which was an array processing
Vector processor

A vector processor, or array processor, is a Central processing unit design where the instruction set includes operations that can perform mathematical operations on multiple data elements simultaneously....
 computer designed to be programmed only in APL. There were actually three processing units, the user's workstation, an IBM PC
IBM PC

The IBM Personal Computer, commonly known as the IBM PC, is the original version and progenitor of the IBM PC compatible hardware platform ....
, where programs were entered and edited, a Motorola 6800
Motorola 6800

The 6800 is an 8-bit microprocessor produced by Motorola and released shortly after the Intel 8080 in late 1974. It had 78 instructions, including the famous, undocumented Halt and Catch Fire bus test instruction....
 processor which ran the APL interpreter, and the Analogic array processor which executed the primitives. At the time of its introduction The APL Machine was likely the fastest APL system available. Although a technological success, The APL Machine was a marketing failure. The initial version supported a single process at a time. At the time the project was discontinued, the design had been completed to allow multiple users. As an aside, an unusual aspect of The APL Machine was that the library of workspaces was organized such that a single function or variable which was shared by many workspaces existed only once in the library. Several of the members of The APL Machine project had previously spent a number of years with Burroughs implementing APL\700.

At one stage, Microsoft Corporation planned to release a version of APL, but these plans never materialized.

An early 1978 publication of Rodnay Zaks
Rodnay Zaks

Rodnay Zaks is a prolific French-born American author of books on computer programming, including the seminal Programming the Z80 and Programming the MOS Technology 6502....
 from Sybex was A microprogrammed APL implementation ISBN 0895880059 which is the complete, total source listing for the microcode for a PDP / LSI-11 processor implementing APL. This may have been the substance of his PhD thesis.

Overview

Over a very wide set of problem domains (math, science, engineering, computer design, robotics, data visualization, actuarial science, traditional DP, etc.) APL is an extremely powerful, expressive and concise programming language, typically set in an interactive environment. It was originally created, among other things, as a way to describe computers, by expressing mathematical notation
Mathematical notation

A mathematical notation is a system of symbolic representations of mathematical objects and ideas. Mathematical notations are used in mathematics and the physical sciences, engineering and economics....
 in a rigorous way that could be interpreted by a computer. It is easy to learn but some APL programs can take some time to understand, especially for a newcomer. Few other programming languages offer the comprehensive array functionality of APL.

Unlike traditionally structured programming languages, code in APL is typically structured as chains of monadic
Unary operation

In mathematics, a unary operation is an operation with only one operand, i.e. an operation with a single input, or in other words, a function of one variable ....
 or dyadic
Binary operation

In mathematics, a binary operation is a calculation involving two operands, in other words, an operation whose arity is two. Binary operations can be accomplished using either a binary function or binary operator....
 functions and operator
Operator

In mathematics, an operator is a function which operates on another function. Often, an "operator" is a function which acts on functions to produce other functions ; or it may be a generalization of such a function, as in linear algebra, where some of the terminology reflects the origin of the subject in operations on the functions which ar...
s acting on array
Array

In computer science, an array is a data structure consisting of a group of element s that are accessed by index . In most programming languages each element has the same data type and the array occupies a contiguous area of computer memory....
s. As APL has many nonstandard primitives (functions and operators, indicated by a single symbol or a combination of a few symbols), it does not have function or operator precedence. Early APL implementations did not have control structures
Control flow

In computer science control flow refers to the order in which the individual statement , Instruction or function calls of an imperative programming or functional programming computer program are execution or evaluated....
 (do or while loops, if-then-else), but by using array operations, usage of structured programming
Structured programming

Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. It is most famous for removing or reducing reliance on the GOTO Statement ....
 constructs was just not necessary. For example, the iota function (which yields a one-dimensional array, or vector, from 1 to N) can replace for-loop iteration
Iteration

Iteration means the act of repeating....
. More recent implementations of APL generally include comprehensive control structures, thus data structure and program control flow can be clearly and cleanly separated.

The APL environment is called a workspace. In a workspace the user can define programs and data, i.e. the data values exist also outside the programs, and the user can manipulate the data without the necessity to define a program. For example,

assigns the vector
Coordinate vector

In linear algebra, a coordinate vector is an explicit representation of a vector in an Real_coordinate_space#Intuitive_overview as an ordered list of numbers or, equivalently, as an element of the coordinate space Fn....
 values 4 5 6 7 to N;

adds 4 to all values (giving 8 9 10 11) and prints them (a return value not assigned at the end of a statement to a variable using the assignment arrow is displayed by the APL interpreter);

prints the sum of N, i.e. 22.

The user can save the workspace with all values, programs and execution status.

APL is well-known for its use of a set of non-ASCII
ASCII

American Standard Code for Information Interchange , is a coding standard that can be used for interchanging information, if the information is expressed mainly by the written form of English words....
 symbols that are an extension of traditional arithmetic and algebraic notation. Having single character names for SIMD vector functions is one way that APL enables compact formulation of algorithms for data transformation such as computing Conway's Game of Life
Conway's Game of Life

The Game of Life, also known simply as Life, is a cellular automaton devised by the United Kingdom mathematician John Horton Conway in 1970....
 in one line of code (). In nearly all versions of APL, it is theoretically possible to express any computable function in one expression, that is, in one line of code.

Because of its condensed nature and non-standard characters, APL has sometimes been termed a "write-only language
Write-only language

Write-only language is a derogatory term for a programming language whose syntax is considered inscrutable. Write-only code is source code so arcane, complex, or ill-structured that it cannot be reliably modified or even comprehended by anyone with the possible exception of the author....
", and reading an APL program can at first feel like decoding Egyptian hieroglyphics. Because of the unusual character set, many programmers use special keyboards with APL keytops for authoring APL code. Although there are various ways to write APL code using only ASCII characters, in practice, it is almost never done. (This may be thought to support Iverson’s thesis about notation as a tool of thought.) Most if not all modern implementations use standard keyboard layouts, with special mappings or Input Method Editor
Input method editor

An input method is an operating system component or program that allows users to enter characters and symbols not found on their input device. For instance, on the computer, this allows the user of Keyboard layout to input Chinese character, Japanese writing system, Hangul and Indic script characters....
s to access non-ASCII characters. Historically, the APL font has been distinctive, with uppercase italic alphabetic characters and upright numerals and symbols. Most vendors continue to display the APL character set in a custom font.

Advocates of APL claim that the examples of so-called write-only code are almost invariably examples of poor programming practice or novice mistakes, which can occur in any language. Advocates of APL 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. APL lets an individual solve harder problems faster. Also, being compact and terse, APL lends itself well to larger scale software development as complexity arising from a large number of lines of code can be dramatically reduced. Many APL advocates and practitioners view programming in standard programming languages, such as COBOL
COBOL

COBOL is one of the oldest programming languages still in active use. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....
 and Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
, as comparatively tedious. APL is often found where time-to-market is important, such as with trading systems.

Iverson later designed the J programming language which uses ASCII
ASCII

American Standard Code for Information Interchange , is a coding standard that can be used for interchanging information, if the information is expressed mainly by the written form of English words....
 with digraphs instead of special symbols.

Examples

A very simple example that would still require several lines of code in most non-array programming languages is a Pick 6 (from 1–40) lottery random number generator, complete with guaranteeing no repeated numbers, and sorting the results in ascending order:

?6?40

The following expression sorts
Sorting

Sorting is any process of arranging items in some sequence and/or in different sets, and accordingly, it has two common, yet distinct meanings:...
 a word list stored in matrix X according to word length:

X[?X+.?' ';]

The following function "life", written in Dyalog APL, takes a boolean matrix and calculates the new generation according to Conway's Game of Life
Conway's Game of Life

The Game of Life, also known simply as Life, is a cellular automaton devised by the United Kingdom mathematician John Horton Conway in 1970....
:

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, returning the text only as shown in the last line.

The following expression finds all prime number
Prime number

In mathematics, a prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. An infinitude of prime numbers exists, as demonstrated by Euclid around 300 BC....
s from 1 to R. In both time and space, the calculation is O(R²).

(~R?R°.×R)/R?1??R

From right to left, this means:

  1. ?R creates a vector containing integer
    Integer

    The integers are natural numbers including 0 and their negative and non-negative numberss . They are numbers that can be written without a fractional or decimal component, and fall within the set ....
    s from 1 to R (if R = 6 at the beginning of the program, ?R is 1 2 3 4 5 6)
  2. Drop first element of this vector (? function), i.e. 1. So 1??R is 2 3 4 5 6
  3. Set R to the vector (?, assignment primitive)
  4. Generate outer product
    Outer product

    In linear algebra, the outer product typically refers to the Tensor product of two vector . The result of applying the outer product to a pair of vectors is a matrix ....
     of R multiplied by R, i.e. a matrix which is the multiplication table
    Multiplication table

    In mathematics, a multiplication table is a mathematical table used to define a multiplication binary operation for an algebraic system.The decimal multiplication table was traditionally taught as an essential part of elementary arithmetic around the sun, as it lays the foundation for arithmetic operations with our base-ten numbers....
     of R by R (°.× function)
  5. Build a vector the same length as R with 1 in each place where the corresponding number in R is in the outer product matrix (?, set inclusion function), i.e. 0 0 1 0 1
  6. Logically negate the values in the vector (change zeros to ones and ones to zeros) (~, negation function), i.e. 1 1 0 1 0
  7. Select the items in R for which the corresponding element is 1 (/ function), i.e. 2 3 5


Calculation

APL was unique in the speed with which it could perform complex matrix operations. For example, a very large matrix multiplication would take only a few seconds on a machine which was much less powerful than those today. There were both technical and economic reasons for this advantage:
  • Commercial interpreters delivered highly-tuned linear algebra library routines.
  • Very low interpretive overhead was incurred per-array—not per-element.
  • APL response time compared favorably to the runtimes of early optimizing compilers.
  • IBM provided microcode
    Microcode

    Microcode is a layer of lowest-level instructions involved in the implementation of machine code instructions in many computers and other processors; it resides in a special high-speed memory and translates machine instructions into sequences of detailed circuit-level operations....
     assist for APL on a number of IBM/370 mainframes.


A widely cited paper "An APL Machine" (authored by Phil Abrams) perpetuated the myth that APL made pervasive use of lazy evaluation
Lazy evaluation

In computer programming, lazy evaluation is the technique of delaying a computation until such time as the result of the computation is known to be needed....
 where calculations would not actually be performed until the results were needed and then only those calculations strictly required. An obvious (and easy to implement) lazy evaluation is the J-vector : when a monadic iota is encountered in the code, it is kept as a representation
Representation

Representation can refer to:* Representation , one's ability to influence the political process* Representative democracy* Representation , the depiction and ethical concerns of construction in visual arts and literature....
 instead of being calculated at once, thus saving some time as well as memory.

Although this technique was not generalized, it embodies the language's best survival mechanism: not specifying the order of scalar operations. Even as eventually standardized by X3J10, APL is so highly data-parallel
Data parallelism

Data parallelism is a form of parallelization of computing across multiple central processing units in parallel computing environments. Data parallelism focuses on distributing the data across different parallel computing nodes....
, it gives language implementors immense freedom to schedule operations as efficiently as possible. As computer innovations such as cache memory, and SIMD
SIMD

In computing, SIMD is a technique employed to achieve data level parallelism....
 execution became commercially available, APL programs ported with little extra effort spent re-optimizing low-level details.

Interpreters

Today, most APL language activity takes place under the Microsoft Windows operating system, with some activity under Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
, Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
, and Mac OS
Mac OS

Mac OS is the trademarked name for a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems....
. Comparatively little APL activity takes place today on mainframe computers.

APLNow (formerly APL2000) offers an advanced APL interpreter which operates under Linux, Unix, and Windows. It supports Windows automation, supports calls to operating system and user defined DLLs, has an advanced APL File System, and represents the current level of APL language development. APL2000's product is an advanced continuation of STSC
Scientific Time Sharing Corporation

Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe....
's successful APL*Plus/PC and APL*Plus/386 product line.

Dyalog APL is an advanced APL interpreter which operates under Linux, Unix, and Windows. Dyalog has aggressive extensions to the APL language which include new object oriented features, numerous language enhancements, plus a consistent namespace
Namespace

In general, a namespace is an abstract container providing context for the items it holds and allowing disambiguation of items having the same name ....
 model used for both its Microsoft Automation interface, as well as native namespaces. For the Windows platform, Dyalog APL offers tight integration with Microsoft .Net, plus limited integration with the Microsoft Visual Studio development platform.

IBM offers a version of IBM APL2 for IBM AIX, Linux, Sun Solaris and Windows systems. This product is a continuation of APL2 offered for IBM mainframes. IBM APL2 was arguably the most influential APL system, which provided a solid implementation standard for the next set of extensions to the language, focusing on nested arrays.

MicroAPL Limited offers APLX, a full-featured 64 bit interpreter for Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
, Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
, and Apple Mac OS
Mac OS

Mac OS is the trademarked name for a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems....
 systems.

Soliton Associates offers the SAX interpreter (Sharp APL for Unix) for Unix and Linux systems, which is a further development of I. P. Sharp Associates' Sharp APL product. Unlike most other APL interpreters, Kenneth E. Iverson
Kenneth E. Iverson

Kenneth Eugene Iverson was a Canadian computer scientist noted for the development of the APL programming language in 1962. He was honored with the Turing Award in 1979 for his contributions to mathematical notation and programming language theory....
 had some influence in the way nested arrays were implemented in Sharp APL and SAX. Nearly all other APL implementations followed the course set by IBM with APL2, thus some important details in Sharp APL differ from other implementations.

Compilation

APL programs are normally interpreted
Interpreted language

In computer programming an interpreted language is a programming language whose implementation often takes the form of an interpreter . Theoretically, any language may be compiler or interpreted, so this designation is applied purely because of common implementation practice and not some underlying property of a language....
 and less often compiled
Compiled language

A compiled language is a programming language whose programming language implementations are typically compilers , and not interpreter s .The term is somewhat vague; in principle any language can be implemented with a compiler or with an interpreter....
. In reality, most APL compilers translated source APL to a lower level language such as C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
, leaving the machine-specific details to the lower level compiler. Compilation of APL programs was a frequently discussed topic in conferences. Although some of the newer enhancements to the APL language such as nested arrays have rendered the language increasingly difficult to compile, the idea of APL compilation is still under development today.

In the past, APL compilation was regarded as a means to achieve execution speed comparable to other mainstream languages, especially on mainframe computers. Several APL compilers achieved some levels of success, though comparatively little of the development effort spent on APL over the years went to perfecting compilation into machine code.

As is the case when moving APL programs from one vendor's APL interpreter to another, APL programs invariably will require changes to their content. Depending on the compiler, variable declarations might be needed, certain language features would need to be removed or avoided, or the APL programs would need to be cleaned up in some way. Some features of the language, such as the execute function (an expression evaluator) and the various reflection
Reflection (computer science)

In computer science, reflection is the process by which a computer program can observe and modify its own structure and behaviour. The programming paradigm driven by reflection is called reflective programming....
 and introspection functions from APL, such as the ability to return a function's text or to materialize a new function from text, are simply not practical to implement in machine code compilation.

A commercial compiler was brought to market by STSC
Scientific Time Sharing Corporation

Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe....
 in the mid 1980s as an add-on to IBM's VSAPL Program Product. Unlike more modern APL compilers, this product produced machine code which would execute only in the interpreter environment, it was not possible to eliminate the interpreter component. The compiler could compile many scalar and vector operations to machine code, but it would rely on the APL interpreter's services to perform some more advanced functions, rather than attempt to compile them. However, dramatic speedups did occur, especially for heavily iterative APL code.

Around the same time, the book An APL Compiler by Timothy Budd
Timothy Budd

Timothy Budd is an associate professor of computer science at Oregon State University. He is the author of more than a dozen books on object-oriented programming, data structures, and Leda programming language, a multi-paradigm programming language, some of which are published in additional languages....
 appeared in print. This book detailed the construction of an APL translator, written in C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
, which performed certain optimizations such as loop fusion
Loop fusion

Loop fusion, also called loop jamming, is a compiler optimization, a loop transformation, which replaces multiple Control_flow#Loopss with a single one....
 specific to the needs of an array language. The source language was APL-like in that a few rules of the APL language were changed or relaxed to permit more efficient compilation. The translator would emit C code which could then be compiled and run well outside of the APL workspace.

Today, execution speed is less critical and many popular languages are implemented using virtual machines - instructions that are interpreted at runtime. The Burroughs/Unisys APLB interpreter (1982) was the first to use dynamic incremental compilation to produce code for an APL-specific virtual machine. It recompiled on-the-fly as identifiers changed their functional meanings. In addition to removing parsing
Parsing

In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a sequence of lexical analysis#Token to determine their grammatical structure with respect to a given formal grammar....
 and some error checking from the main execution path, such compilation also streamlines the repeated entry and exit of user-defined functional operands. This avoids the stack setup and take-down for function calls made by APL's built-in operators such as Reduce and Each.

APEX, a research APL compiler, is available from Snake Island Research Inc. APEX compiles flat APL (a subset of ISO N8485) into SAC
SAC programming language

SAC is a strict purely functional programming language programming language which design is focused on the needs of numerical applications. Emphasis is laid on efficient support for array processing....
, a functional array language with parallel semantics, and currently runs under Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
. APEX-generated code uses loop fusion
Loop fusion

Loop fusion, also called loop jamming, is a compiler optimization, a loop transformation, which replaces multiple Control_flow#Loopss with a single one....
 and array contraction, special-case algorithms not generally available to interpreters (e.g., upgrade of permutation vector), to achieve a level of performance comparable to that of Fortran
Fortran

Fortran is a general-purpose programming language, procedural programming language, imperative programming language programming language that is especially suited to numerical analysis and scientific computing....
.

The APLNext VisualAPL system is a departure from a conventional APL system in that VisualAPL is a true .Net language which is fully inter-operable with other .Microsoft .Net languages such as VB.Net and C#. VisualAPL is inherently object oriented and Unicode-based. While VisualAPL incorporates most of the features of legacy APL implementations, the VisualAPL language extends legacy APL to be .Net-compliant. VisualAPL is hosted in the standard Microsoft Visual Studio IDE and as such, invokes compilation in a manner identical to that of other .Net languages. By producing .Net common language runtime (CLR) code, it utilizes the Microsoft just-in-time compiler (JIT) to support 32-bit or 64-bit hardware. Substantial performance speed-ups over legacy APL have been reported, especially when (optional) strong typing of function arguments is used.

An APL to C# translator is available from Causeway Graphical Systems. This product was designed to allow the APL code, translated to equivalent C#, to run completely outside of the APL environment. The Causeway compiler requires a run-time library of array functions. Some speedup, sometimes dramatic, is visible, but happens on account of the optimisations inherent in Microsoft's .Net framework.

A source of links to existing compilers is at .

Terminology

APL makes a clear distinction between functions and operators. Functions take values (variables or constants or expressions) as arguments, and return values as results. Operators (aka higher-order function
Higher-order function

In mathematics and computer science, higher-order functions or functional are function s which do at least one of the following:*take one or more functions as an input...
s) take functions as arguments, and return related, derived functions as results. For example the "sum" function is derived by applying the "reduction" operator to the "addition" function. Applying the same reduction operator to the "ceiling" function (which returns the larger of two values) creates a derived "maximum" function, which returns the largest of a group (vector) of values. In the J language, Iverson substituted the terms 'verb' and 'adverb' for 'function' and 'operator'.

APL also identifies those features built into the language, and represented by a symbol, or a fixed combination of symbols, as primitives. Most primitives are either functions or operators. Coding APL is largely a process of writing non-primitive functions and (in some versions of APL) operators. However a few primitives are considered to be neither functions nor operators, most noticeably assignment.

Character set

APL has always been criticized for its choice of a unique, non-standard character set. The observation that some who learn it usually become ardent adherents shows that there is some weight behind Iverson
Kenneth E. Iverson

Kenneth Eugene Iverson was a Canadian computer scientist noted for the development of the APL programming language in 1962. He was honored with the Turing Award in 1979 for his contributions to mathematical notation and programming language theory....
's idea that the notation used does make a difference. In the beginning, there were few terminal devices which could reproduce the APL character set—the most popular ones employing the IBM
IBM

International Business Machines Corporation, abbreviated IBM and nicknamed "Big Blue" , is a multinational corporation computer technology and consulting corporation headquartered in Armonk, New York, New York, United States....
 Selectric print mechanism along with a special APL type element. Over time, with the universal use of high-quality graphic display and printing devices, the APL character font problem has largely been eliminated; however, the problem of entering APL characters requires the use of input method editor
Input method editor

An input method is an operating system component or program that allows users to enter characters and symbols not found on their input device. For instance, on the computer, this allows the user of Keyboard layout to input Chinese character, Japanese writing system, Hangul and Indic script characters....
s or special keyboard mappings, which may frustrate beginners accustomed to other languages. With the popularization of the Unicode
Unicode

Unicode is a computing industry standard allowing computers to consistently represent and manipulate Character expressed in most of the world's writing systems....
 standard, which contains the APL character set, the problem of obtaining the required fonts seems poised to go away.

From a user's standpoint, the additional characters can give APL a special elegance and concision not possible in other languages, using symbols visually mnemonic of the functions they represent. Or it can lead to a ridiculous degree of complexity and unreadability, typically when the symbols are strung together into a single mass without any comments. Or it can be unreasonably difficult and time consuming to enter then later edit those APL statements.

APL symbols and keyboard layout

Note the mnemonics associating an APL character with a letter: question mark on Q, power on P, rho on R, base value on B, eNcode on N, modulus on M and so on. This makes it easier for an English-language speaker to type APL on a non-APL keyboard providing one has visual feedback on one's screen. Also, decals have been produced for attachment to standard keyboards, either on the front of the keys or on the top of them.
A more up to date keyboard diagram, applicable for APL2 and other modern implementations, is available: .

All APL symbols are present in Unicode
Unicode

Unicode is a computing industry standard allowing computers to consistently represent and manipulate Character expressed in most of the world's writing systems....
, in the Miscellaneous Technical
Miscellaneous Technical (Unicode)

Miscellaneous Technical is a Unicode character block, ranging from 2300 to 23FF, which contains various common symbols which are related to and used in the various technical, programing language and academic professions....
 range, although some APL products may not yet feature unicode, and some APL symbols may be unused or unavailable in a given vendor's implementation:

' ( ) + , - . / : ; < = > ? [ ]
\ _ ¨ ¯ × ÷ ? ? ? ? ? ? ° | ? ?
n ? ~ ? = = ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ?


Additional APL characters were available by overstriking
Overstrike

In typography, overstrike is a method of printing characters that are missing from the printer's character set. It was widely used around early 1990s....
 one character over another. For example, the log symbol was formed by overstriking shift-P with shift-O. This complicated correcting mistakes and editing program lines. This may have ultimately been the reason for early APL programs to have a certain dense style - they were difficult to edit.

Many overstrikes shown in the above table, although appealing, are not actually used. New overstrikes were introduced by vendors as they produced versions of APL tailored to specific hardware, system features, file system, and so on. Further, printing terminals and early APL cathode-ray terminals were capable of displaying arbitrary overstrikes, but as personal computers rapidly replaced terminals as a data-entry device, APL character support was now provided as an APL Character Generator ROM or a soft character set rendered by the display device. With the advent of Windows, APL characters were defined as just another complete font, thus the distinction between overstruck characters and standard characters having been eliminated.

Later IBM terminals, notably the IBM 3270
IBM 3270

The IBM 3270 is a class of computer terminal made by IBM since 1972 normally used to communicate with IBM mainframes. As such, it was the successor to the IBM 2260 display terminal....
 display stations, had an alternate keyboard arrangement which is the basis for some of the modern APL keyboard layouts in use today. Better terminals, namely display devices instead of printers, encouraged the development of better full screen editors, which had a measurable improvement in productivity and program readability.

Usage

APL has long had a small and fervent user base. It was and still is popular in financial and insurance applications, in simulations, and in mathematical applications. APL has been used in a wide variety of contexts and for many and varied purposes. A newsletter titled "Quote-Quad" dedicated to APL has been published since the 1970s by the SIGAPL section of the Association for Computing Machinery (Quote-Quad is the name of the APL character used for text input and output).

APL has been used for rapid development of interactive Domain Specific Languages. Until as late as the mid-1980s, APL timesharing
Time-sharing

Time-sharing refers to sharing a computing resource among many users by Computer multitasking. Its introduction in the 1960s, and emergence as the prominent model of computing in the 1970s, represents a major historical shift in the history of computing....
 vendors offered applications delivered in the form of domain specific languages. On the I. P. Sharp
I. P. Sharp Associates

I. P. Sharp Associates, IPSA for short, was a major Canadian computer time sharing, consulting and services firm of the 1970s and 80s. IPSA is particularly well known for its work on the APL programming language, and an early packet switching computer networking system known as IPSANET, and a powerful Mainframe computer-based e-mail sy...
 timesharing system, a workspace called 39 MAGIC offered access to financial and airline data plus sophisticated (for the time) graphing and reporting, in the form of a domain specific language. Another example is the GRAPHPAK workspace supplied with IBM's APL2; a demonstration version of both APL2 and GRAPHPAK can be downloaded for Windows. APL has been used to generate
Metaprogramming

Metaprogramming is the writing of computer programs that write or manipulate other programs as their data, or that do part of the work at runtime that would otherwise be done at compile time....
 Fortran, COBOL, and Java code, replacing legacy systems written in those languages.

Because of its matrix operations, APL was for some time quite popular for computer graphics programming, where graphic transformations could be encoded as matrix multiplications. One of the first commercial computer graphics houses, Digital Effects, based in New York City, produced an extension to APL known as "Visions," which was used to create television commercials and film animation for the 1982 film Tron.

Interest in APL has steadily declined since the 1980s. This was partially due to the lack of a migration path from high-performance mainframe implementations to early low-cost personal computer alternatives and the availability of high-productivity end-user computing tools such as Microsoft Excel
Microsoft Excel

Microsoft Excel is a spreadsheet-application written and distributed by Microsoft for Microsoft Windows and Mac OS X. It features calculation, graphing tools, pivot tables and a macro programming language called VBA ....
 and Microsoft Access
Microsoft Access

Microsoft Office Access, previously known as Microsoft Access, is a relational database management system from Microsoft that combines the relational Microsoft Jet Database Engine with a graphical user interface and software development tools....
. These are appropriate platforms for what may have been mainframe APL applications in the 1970s and 1980s. Some APL users migrated to the J programming language, which offers more advanced features. Lastly, the decline was also due in part to the growth of MATLAB
MATLAB

MATLAB is a Numerical analysis environment and programming language. Maintained by The MathWorks, MATLAB allows easy matrix manipulation, plotting of function and data, implementation of algorithms, creation of user interfaces, and interfacing with programs in other languages....
, GNU Octave
GNU Octave

Octave is a computer program for performing numerical analysis which is mostly compatible with MATLAB. It is part of the GNU Project. It is free software under the terms of the GNU General Public License....
, and Scilab
Scilab

Scilab is a Numerical analysis package developed since 1990 by researchers from the Institut National de Recherche en Informatique et en Automatique and the ?cole nationale des ponts et chauss?es ....
. These scientific computing array-oriented platforms provide an interactive computing experience similar to APL, but more resemble conventional programming languages such as Fortran, and use standard ASCII.

Notwithstanding this decline, APL finds continued use in certain fields, such as accounting research ()

Standardization

APL has been standardized by the ANSI
American National Standards Institute

The American National Standards Institute or ANSI is a private non-profit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States....
 working group
Working Group

Working Group can mean:*Working group, an interdisciplinary group of researchers; or*Working Group , kennel club designation for certain purebred dog breeds; or...
 X3J10 and ISO
International Organization for Standardization

The International Organization for Standardization , widely known as ISO , is an international standard-setting body composed of representatives from various national standards organizations....
/IEC
International Electrotechnical Commission

The International Electrotechnical Commission is a Non-profit organization, non-governmental international standards organization that prepares and publishes International Standards for all electrical, electronic and related technologies ? collectively known as "electrotechnology"....
 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.

Quotes

  • "APL, in which you can write a program to simulate shuffling a deck of cards and then dealing them out to several players in four characters, none of which appear on a standard keyboard." David Given


  • "APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums." Edsger Dijkstra
    Edsger Dijkstra

    Edsger Wybe Dijkstra was a Netherlands computer science. He received the 1972 Turing Award for fundamental contributions in the area of programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at University of Texas at Austin from 1984 until 2000....
    , 1968


  • APL, a song to the tune of "Row, row, row your boat
    Row, Row, Row Your Boat

    "Row, Row, Row Your Boat" is an English language nursery rhyme, and a popular children's song/proverb, often sung as a Round . It can also be an 'action' nursery rhyme where singers sit opposite one another and 'row' forwards and backwards with joined hands....
    ". (on a part of Richard Stallman
    Richard Stallman

    Richard Matthew Stallman , often abbreviated "rms","'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman...
    's personal webpage entitled 'Doggerel
    Doggerel

    Doggerel is a derogatory term for poetry considered of little literature value. The word probably derives from dog, suggesting either ugliness, or unpalatability ....
    ')
Rho, rho, rho of X
Always equals 1.
Rho is dimension; rho rho, rank.
APL is fun!
  • "This way of doing business was so productive that it spread like wildfire. By the time the practical people found out what had happened; APL was so important a part of how IBM ran its business that it could not possibly be uprooted. The wild-eyed researchers had produced a moneymaker." Michael S. Montalbano 1982 (see )


  • The following amusing rhyme from Stan Kelly-Bootle
    Stan Kelly-Bootle

    Stan Kelly-Bootle is a prolific author , and songwriter . His most famous song is the Liverpool Lullaby , which Cilla Black recorded in 1969 as the B-side to her pop hit Conversations....
    's Devil's DP Dictionary/The Computer Contradictionary
    The Computer Contradictionary

    The Computer Contradictionary by Stan Kelly-Bootle is a satirical list of definitions of computer industry terms. It is an example of "cynical lexicography" in the tradition of Ambrose Bierce's The Devil's Dictionary....
     has been circulated as part of the fortune program in numerous Unix installations.
There are three things a man must do
Before his life is done;
Write two lines in APL,
And make the buggers run.


  • Joke in the APL community, heard sometime after Iverson joined I. P. Sharp Associates in 1980:
Q: If functions modify their data, and if operators modify their functions, then what modifies operators?
A: Ken Iverson


APL Glossary


Some words in the APL vocabulary have usage or meaning which is at variance with usage in mathematics or computer science.

termdescription
function 1. symbols for built-in facilities in the language to perform such things like addition and subtraction, i.e. + and -. (These are often called "operators" elsewhere in the computer science community)
2. a typical APL program
niladic a function which takes no arguments,
monadic a function which requires only a right argument, or an operator which requires only a left argument, unary
dyadic a function (or operator) which requires both a left and right argument, binary
nomadic
operator a construct in APL which takes a function as its argument and returns a new function. The monadic / operator (reduction) takes as its sole left argument the addition function +, which results in the function +/, which adds up the elements of a vector
vector a one-dimensional array


See also

  • Alphabetical list of programming languages
    Alphabetical list of programming languages

    The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones, in alphabetical order....
  • APL function symbols
    APL function symbols

    The following APL programming language functions are given, separated into their monadic and dyadic forms. For non-standard characters, a hexadecimal Universal Character Set index value is given....
  • Criticism of the APL programming language
    Criticism of the APL programming language

    The APL has been used since the mid 1960s on mainframe computers and has itself evolved in step with computers and the computing market. APL is not widely used, but minimalistic and high and low level by design, at several points in its history it could have captured a more significant market share, but never did....
  • IBM 1130
    IBM 1130

    The IBM 1130 Computing System was introduced in 1965. It was IBM's least-expensive computer to date, and was aimed at price-sensitive, computing-intensive technical markets like education and engineering....
    : APL \ 1130 was an early implementation (1968) of APL on the IBM 1130
  • I. P. Sharp Associates
    I. P. Sharp Associates

    I. P. Sharp Associates, IPSA for short, was a major Canadian computer time sharing, consulting and services firm of the 1970s and 80s. IPSA is particularly well known for its work on the APL programming language, and an early packet switching computer networking system known as IPSANET, and a powerful Mainframe computer-based e-mail sy...
  • Iverson Award
    Iverson Award

    The Iverson Award, more formally the Kenneth E. Iverson Award for Outstanding Contribution to APL, is presented by the Special Interest Group on APL of the Association for Computing Machinery ....
  • LYaPAS
    LYaPAS

    LYaPAS is a programming language created in the Soviet Union in 1964 by Arkady D.Zakrevskij of the Laboratory of System Programming and Logical Synthesis of the BSSR Academy of Sciences....
  • STSC
    Scientific Time Sharing Corporation

    Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe....
    : company formed to commercialize APL
  • Shared Variables
  • Type-III product


See also

  • , a free font containing all the Unicode glyphs for the APL function symbols.
  • APL function symbols
    APL function symbols

    The following APL programming language functions are given, separated into their monadic and dyadic forms. For non-standard characters, a hexadecimal Universal Character Set index value is given....
     for a list of built-in monadic and dyadic functions and their Unicode representation.
  • IBM 3270
    IBM 3270

    The IBM 3270 is a class of computer terminal made by IBM since 1972 normally used to communicate with IBM mainframes. As such, it was the successor to the IBM 2260 display terminal....
     Keyboard layout for APL


External links


Articles

  • (1964 article by Adin D. Falkoff, Kenneth E. Iverson, Edward H. Sussenguth)
  • (1970 Stanford doctoral dissertation by Philip Abrams)
  • (1973 article by Adin D. Falkoff and Kenneth E. Iverson
    Kenneth E. Iverson

    Kenneth Eugene Iverson was a Canadian computer scientist noted for the development of the APL programming language in 1962. He was honored with the Turing Award in 1979 for his contributions to mathematical notation and programming language theory....
    )
  • (1979 Turing Award Lecture by Kenneth E. Iverson)
  • (1982 article by Michael S. Montalbano)
  • (1991 article by Donald B. McIntyre)
  • (1991 article by Adin D. Falkoff)
  • (1991 article by Kenneth E. Iverson)


General

  • Sam Sirlin's (Frequently Asked Questions
    FAQ

    Frequently Asked Questions, or FAQs are listed questions and answers, all supposed to be frequently asked in some context, and pertaining to a particular topic....
     list) plus link to versions of Budd's compiler