Both APL and R promote interactive exploratory programming. Both are strong in computational programming and intended primarily for domain experts, though over the years APL has drifted more into a domain for developers.
In my opinion, APL's array capabilities are far stronger and notation less noisy, i.e. less syntax and punctuation. R seems to have been developed with tools like Lex and Yacc and the language has a certain look and feel.
I started learning APL (it was a cut down APL\360 with 32K workspaces) in the mid 1970s. My first language was Fortran. When I started with APL shortly afterwards, at first I thought it was a sort of continuation of array studies.
What's good about it?
- APL lends itself well to a kind of incremental learning. You don't need to know that much to get started solving problems. Learn as you go, the learning curve is as steep as you want it to be. No hurdles, just a consistent slope.
- APL abstracts away a lot of the mindless tedium of conventional programming. Having said that, there are rewards (like execution speed) for programming in something like C. Speed is sometimes less important these days than it was in the mainframe days
- APL is an excellent prototyping environment. You can concentrate on getting the right answer and understanding what you are doing, then later, moving the solution to the standard, approved language of your choice.
- APL lends itself to the construction of simple DSLs (Domain-Specific Languages). What is lost in flexibility is made up in ease.
- APL itself is an excellent learning tool for quickly learning the domain area you are working in. As it encourages interactive, exploratory programming (as does J, K, Q, R, S, Matlab, and so on) learning the domain area (i.e. Physics, Finance, linear algebra, writing a parser, etc.) can be much easier and fun.
I had a passion for APL which continues even today - I could not muster any such passion for say Java.
When it comes to notation, there is always a tradeoff. The question is, what's worse?
In my meager opinion, APL was plagued with acceptance problems from the very beginning. Note that acceptance is a very personal thing, free of such diverse distractions as logic, reason, the right thing, and so on. Having used APL for nearly 40 years and having made a decent living with it for nearly 35 of them, looking back, a significant fraction of my projects could be called "APL Exit". Whether it was a customer leaving a timesharing service for something cheaper, or a corporate mission to migrate to a different, allegedly standard, technology, APL was being replaced by something else. The language was thought to be declining, dying, no longer taught in university, not commonly known, and so on.
Arguably, two items which didn't help APL's acceptance were the usage of strange and Greek symbols (of which there were five?) and an order of execution which contravened that which was learned in third grade. This is not to say that they were worse, just not accepted. Nor is it to say that J, K, and Q's notation is better or worse - that is largely a matter of personal taste and maybe technical upbringing. Maybe a thoughtfully ASCII-transliterated APL where the scheme did not play second fiddle to the "genuine" APL characters (APLUM and STSC APL Plus PC come to mind) would have boosted the acceptance level to the point where APL would still be growing. A large user community vs. a better notation? What's worse?
Back to GNU APL, I'm very pleased to see that this finally happened, and really do hope that this is a start of a great comeback.
PS: I am happy that GNU APL is not written in Java.
In my opinion, APL's array capabilities are far stronger and notation less noisy, i.e. less syntax and punctuation. R seems to have been developed with tools like Lex and Yacc and the language has a certain look and feel.