UPDATE: J 7.01 has been released with open source code under GPL 3. In addition there is Kona, a variant on K. These increase the options for open-source array languages.
UPDATE by Tobia: GNU APL is available under the GPL. It follows closely the latest published ISO standard on the Extended APL language. It is a great open source APL implementation and is being actively developed and maintained. There are other interesting implementations too, for example ngn/APL, a surprisingly well-featured and modern implementation of APL written in CoffeeScript (which compiles to JavaScript.) Array languages are alive and well in 2015.
UPDATE by Adám: Roger Hui, one of chief implementers and designers of J, has since joined Dyalog, and under his guidance, Dyalog APL has added many J-inspired features. This includes a tacit functional programming style and several operators and functions, many of which have been improved in the prcess. Dyalog APL is now free for non-commercial usage. In addition, several new APL implementations have appeared; see aplwiki.com. Array languages are alive and well in 2020.
Something to consider is the vocabulary of operators (higher-order functions).
Original APL only has last and first axis reduction (fold) (f/
, f⌿
), last and first axis cumulative reduction (f\
, f⍀
), plus inner and outer product (f.g
, ∘.g
).
Most extended APLs (e.g. GNU APL, APLX, APL+Win, APL2) only add the each-loop (f¨
), and axis bracket specification (f[
...]
).
J, added a plethora (called adverbs and conjunctions), but removed brackets (both axis and indexing), the each operator (in favor of the more general rank operator), and last-axis (cumulative) reduction.
The now defunct Sharp APL (and later SAX) retained both the traditional last-axis operators and bracket indexing, while adding many of J's new operators.
Dyalog APL is gradually approaching the vocabulary of Sharp APL, but has also incorporated J-exclusive operators that never made it into Sharp APL.
The below table compares J, Sharp APL, and Dyalog APL composition vocabularies. The entries with faded text require two symbols to effect. The entries with grayed background are under proposal.
To add some more information...
There is an open source version of K
called Kona
https://github.com/kevinlawler/kona
For q/kdb+
, there is a trial version. http://kx.com/download/
The main limitations are 2 hour timeout, 32 bit memory, 3 month license expiration, and the license itself. These shouldn't be too bothersome if you just want to play around and learn something.
Personally, I found q
to be the most user friendly since KX translated the monadic (single argument) verbs from K
into English words and there is a good amount of documentation @ http://code.kx.com. In addition, the database system is extremely well thought out and flexible.
J is an Executable Mathematical Notation which is input and displayed using ascii characters.
It is also a fully fledged Functional, Object Oriented, Programming Language.
The JSoftware implementation of J (I do not know of any others) is not open source, but it is free to use.
Although the engine is not open source, there is an active user library of J code to which people can contribute.
J has extensive and concise documentation http://www.jsoftware.com/help.htm and forum members happily and rapidly respond to any questions or problems and are keen to help new users become oriented as well as with more advanced problems.
On the Open Source issue by the way, the documentation (specification) for J is extensive and anybody could in theory create an open source project to try to implement J if they wanted to.
While A+ appears to (sadly) be a dead project, there's a new open-source APL interpreter: GNU APL.
ELI is a newly developed, freely available, cross-platform, array programming language. Similar to J and k it relies on the ASCII character set. It implements some of the features that (as I know) were unique to k/q/kdb+ such as temporal datatype and inbuilt SQL subset.
I also remain befuddled (APL has always confounded me - fortunately it's been 20 or more years since I last attempted anything with it), but a bit of searching has found A+, an open-source version of A:
I have no idea it it will meet your (or anyone's) needs.