
APL Since 1978 [pdf] - 7thaccount
https://dl.acm.org/doi/pdf/10.1145/3386319
======
JadeNB
This is part of the open-access Proceedings of the ACM on Programming
Languages, so it would be available anyway; but just a reminder that the
entire ACM DL is available free to download until June 30:
[https://www.acm.org/articles/bulletins/2020/march/dl-
access-...](https://www.acm.org/articles/bulletins/2020/march/dl-access-
during-covid-19) .

Incidentally, the issue from which this comes is called "No. HOPL":
[https://dl.acm.org/toc/pacmpl/2020/4/HOPL](https://dl.acm.org/toc/pacmpl/2020/4/HOPL).
I'm not sure if it's in place of, or in addition to, HOPL IV which was
postponed: [https://hopl4.sigplan.org](https://hopl4.sigplan.org) .

------
gregfjohnson
It is interesting to speculate about how a technology affected the zeitgeist,
and directly or indirectly influenced subsequent work. My first programming
language was APL, and it profoundly influenced how I think about programming.
Lately I have been using numpy, and it feels awfully familiar to me! The
authors of numpy acknowledge the influence of the APL/J school of thought on
numpy. Have other people noticed the deep similarities between numpy and APL?
(I will admit, words attributed to C.A.R. Hoare about Algol 60 have come to
mind frequently: "Here is a language so far ahead of its time, that it was not
only an improvement on its predecessors, but also on nearly all its
successors.")

~~~
theamk
Have you seen matlab/octave? It appeared in 1984, quite a bit earlier than
numpy, and is atill widely used today, introducing a large number of people to
the wonders of array programming.

------
anonu
Shakti, with roots in apl, seems to embody the latest cutting edge concepts

~~~
moonchild
That remains unclear. Similar to q/k4/kdb, it's optimized for fin-tech
database work; that is, operations on very long columns. Apl (esp. dyalog) and
j have proper multidimensional arrays, which means that e.g. matrix ops are
practical/easier. They also have better tacit programming support.

~~~
smabie
What's the difference between nested lists and full multidimensional array
support? It's not like q is bad at multiplying matrices.

~~~
robberbarron
For a multidimensional array: a matrix will be in stored single vector with
metadata showing dimension. The presentation of the matrix (view) will then
not matter on the data contained therein.

For q, they are stored as lists of lists, which can mean that their memory is
not contiguous. Some algorithms can slow down significantly as a result (eg
dense), others might speed up (eg sparse)

However, there are libs in q such as qml which interface with LAPACK and are
doing memory mapping so it is not entirely q, just an interface to a C
implementation

[http://althenia.net/qml](http://althenia.net/qml)

~~~
moonchild
I had not seen qml. I must say, an array language interface to another
language's math library is one of the funniest things I've ever seen.

~~~
scottlocklin
J has lapack bindings also; you pretty much can't beat lapack for raw matrix
math speed.

------
7thaccount
Here's a recent publication from Morten Kromberg and Roger Hui.

------
pwdisswordfish2
Downloading PDF from ACM requires cookies.

Downloading PDF from Archive.org does not require cookies.

[https://web.archive.org/web/20200612214124if_/https://dl.acm...](https://web.archive.org/web/20200612214124if_/https://dl.acm.org/doi/pdf/10.1145/3386319)

------
rightbyte
It is interesting to see what could have been programming. I guess terminal
monitors killed APL?

~~~
Jhsto
More like Excel killed APL. APL was mainly used by "domain experts", i.e.,
people who were not software engineers. According to Dyalog's YouTube videos,
APL is still there for these people who started doing spreadsheets way before
anything like Excel was available.

~~~
moonchild
And now they've come full circle -
[https://www.youtube.com/watch?v=CEG9pFNYBCI](https://www.youtube.com/watch?v=CEG9pFNYBCI)

------
chmaynard
Is it just me? I hate the ACM website. Ugly and difficult to use.

