All about APL, SIGAPL, who we are, etc. If you don't see your question answered here, contact us.

What is APL?

"APL" stands for either "A Programming Language" - which is a specfic language - or "Array Programming Languages". Array programming languages are exemplified by (the language) APL but include a number of other languages such as J, K, A+, Gauss, Numpy, Matlab, Octave, Nial, R and S+.

APL is the original array programming language. It was created by Ken Iverson in the late 1950s to address the inconsistency and irregularity of traditional mathematical notation. Also, APL extends the idea of notation to be executable. The language consists of symbols organized by a logical syntax to describe the processing of data.

The power of APL comes from its direct manipulation of n-dimensional arrays of data. The APL primitives express broad ideas of data manipulation. These rich and powerful primitives can be strung together to perform in one line what would require pages in other programming languages. This terseness is not for its own sake but to provide compact tools for thinking about programming problems.

Though most programming languages handle arrays in some fashion, an Array-Programming Language incorporates them into the language as first-class objects. For instance, an expression like


adds one to each element of the (numeric) array "A", regardless of its specific shape: it could be a two- or three-dimensional (or higher) array but the format of the addition remains unchanged.

APL's interactive environment encourages experimentation and facilitates rapid prototyping and modification of programs and applications.

APL is one of the most concise, consistent, and powerful programming languages ever devised.

J is a relatively new incarnation of APL, also invented by Ken Iverson. J removed the need for a special character set, using ASCII characters for all primitives. J is freely available and open-source.

Many of the commercial APL vendors also have free or student versions of their products available.

APL: A Unique Programming Language

Back to top

How can I try APL?

There are a number of freely available APLs:

Additionally, there are a number of languages related to APL that are also freely available for non-commercial use:

  • The J programming language was developed by APL creator Ken Iverson. It is syntactically quite similar but uses only ASCII characters for its symbols.
  • Kdb+ and q are database-oriented languages incorporating many of the ideas of APL with an emphasis on high performance.
  • A+ is a descendant of the "A" language created by the Arthur Whitney who also created the languages K and q.
  • Who is SIGAPL?

    "SIGAPL" was an official special-interest group chartered under the auspices of the ACM (Association for Computing Machines). In February of 2008 this group was formally dechartered by the SIG Governing Board.

    As part of this change, what was formerly SIGAPL (Special Interest Group on APL) is now a chapter within the larger SIGPLAN (Special Interest Group on Programming Languages). It is hoped that the APL community will work with this larger group and reach beyond its traditional boundaries. As part of this more general identity, SIGAPL is now identified as the “Special Interest Group on Array Programming Languages”.

    Visit our contact page learn more about our leadership team/steering committee, or to send us a message directly.

    Back to top

    A Brief History of APL

    The original APL - "A Programming Language" - was developed as a linear form of mathematical notation that was intended to be concise, consistent and matrix-oriented. This matrix orientation was later generalized to higher-dimensional arrays.

    Its development was motivated by the idea "...that language is an instrument of human reason..." (from George Boole's "Laws of Thought") and that "[m]athematical notation provides perhaps the best-known and best-developed example of language used consciously as a tool of thought" (from Kenneth E. Iverson's Turing Award Lecture "Notation as a Tool of Thought").

    The first computer implementation of this notation followed nearly a decade of its development as a hand-written, paper-based tool for describing computational concepts.

    Subsequent decades saw numerous implementations of languages - like J and K - based directly on the ideas of APL, as well as numerous others - like S+ and Mathematica - influenced by it.

    A Chronology of APL and its Influences

    A brief chronology of APL and its influences on various aspects of computing may be found here.

    Back to top

    APL Resources and Links

    Back to top