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
A+1
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.
Back to top
How can I try APL?
There are a number of freely available APLs:
- NARS2000: An experimental APL interpreter
- Dyalog APL
- An (almost) complete implementation of ISO standard APL
- APLSE: APL Special Edition
- APL implemented in JavaScript
- OpenAPL: an open-source APL
- ELI: a simple system for array programming
- An article on the APL Dialect ELI
- A browser-based APL
- APLX: a multi-platform, 32-bit APL
Additionally, there are a number of languages related to APL that are also freely available for non-commercial use:
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
Vendors
- APL2000 Inc.
- Dyalog APL
- IBM's APL2
- J Software
- Kx high-performance database systems
- MicroAPL
- Soliton Incorporated
Consultants
- APL Borealis Inc.
- APL Team Ltd.
- Brandt & Brandt Computer GmbH
- Causeway Graphical Systems Ltd.
- Coherent Systems
- Dittrich & Partner Consulting GmbH
- DynArray Corporation
- Lescasse Consulting
- Milinta inc.
- Snake Island Research
People
- Finn APL
- Horacio Alexey: APL en Español
- Alexander Balako
- F.H.D. (Eke) van Batenburg
- Ben Best
- Skip Cave: Matrix Language History Page
- Bob Hoekstra
- Stanley Jordan
- William Knight
- Alex Kornilovski
- Brad McCormick
- David Ness
- Donald McIntyre
- William R. Parke
- Cliff Reiter
- Ewart Shaw
- Sam Sirlin
- Keith W. Smillie
- Roger Stokes: Learning J
- Rex Swain
- Jim Weigang
- Yoshi
Courses
Conferences
Software
- Thoroughbred Race Handicapper, written in APL
- Tangram OLAP
- Interprocess Systems Inc.
- GraPL
- DNAView: Using APL for Forensic Mathematics
Languages
- A+ Programming Language
- About the A+ Programming Language
- NIAL: Nested Interactive Array Language
- J Programming Language
- A Shallow Introduction to the K Programming Language
- Juggle: for J programmers under Unix
Publications
- ISO DIS 8485 - 1989 Programming Languages - APL
- The Journal of J
- AFAPL (Association Francophone des utilisateurs du langage APL)
- FinnAPL
- VECTOR - Journal of the British APL Association
- The Waterloo APL and J Archives
- Why I'm still using APL (after 50 years)
Other
- Teaching Mathematics via APL (A Programming Language)
- APL with a Mathematical Accent
- Verbalizing Mathematics Using APL
- How to Create a APL or Math Symbols Keyboard Layout
- APL as a tool of thought in mathematics
FTP Sites
- Introduction to J using Statistics (Maintained by Keith Smillie)
- APL2-related materials from the APL Products and Services Team at IBM
- Waterloo archives
- The Toronto Toolkit - APL Utilities Software
- Software Library for APL and J
APL Newsgroup
- USENET newsgroup to discuss APL comp.lang.apl.
- APL2 Newsgroup ibm.software.apl
Mail Server
- LISTSERV@UNB.CA, in the list APL-L, archives of comp.lang.apl
- LISTSERV@UNB.CA, in the list APLEDU-L