
Why APL Is Still Cool - protomyth
http://www.infoq.com/presentations/Why-APL-is-Still-Cool
======
robomartin
I learned APL in college and used it professionally for about eight years. I
really enjoyed the language. Once you know it well enough it creates a very
interesting flow condition. You are able to focus on the problem rather than
the mechanics of solving it. It's hard to describe but you definitely feel the
difference when going from APL to something like C, Forth or Lisp.

One of the huge problems with APL back then was that workspaces (the memory
and resource sandbox your work is constrained to) were limited in size. The
other was the trouble you had to go through in the early days to be able to
see and print the character set. On early IBM PC versions you had to change
the character generator ROM. You also had to buy very specific printers for
which you could buy APL print heads (for example, IBM Selectric).

Today these issues are gone and workspaces are large enough to tackle the vast
majority of problems.

There is, however, in my opinion, a serious problem with APL today: It is too
expensive.

Yes, there are low cost or even free APL's, but the ones you want will run you
$1,000 to $2,000 per seat. That's ridiculous. If there's a language that would
have benefited from FOSS, this is it. I strongly believe that APL adoption
would be far wider today if it had a strong FOSS offering.

The other issue is that, probably because it didn't go FOSS, the language
didn't evolve into OO. I think it needs to. It also needs a few additional
mutations to make it easier to work with and deploy. APL for the web, as a
wild thought, could be a very interesting idea. The compression of code would
be magnificent to see.

I haven't used APL in quite some time but would jump on it if it made sense.
Back in the day I used APL for projects ranging from robotics, to business
databases, DNA sequencing and astronomical calculations. It was fun.

~~~
T_S_
Morgan Stanley used a variant of APL called A+. It was used quite extensively
in parts of the firm. They open-sourced it a while back.
<http://www.aplusdev.org/>

~~~
gtani
I don't remember details, but my colleagues at Merrill Lynch used to say you
could look at somebody's APL code and tell if they came from Sharp (Toronto),
IBM (Yorktown Heights or San Jose CA), STSC or Morgan Stanley.

In APL2, the equivalent to a lisp map was "each", it was a colon rotated to be
horizontal and superscript. We used to have "each" contests, I always got
destroyed.

And one of my (distant) friends got a summer job in high school, working for
Iverson in Yorktown Heights, writing APL.

~~~
daemonicky
What was the difference between code from Sharp, IBM, STSC and MS?

------
evincarofautumn
It’s certainly a cool language, but this presentation doesn’t really convey it
very well. When you want to show me how a language is _useful_ , I absolutely
want to hear the boring details, examples of how to manipulate census data,
how to serve a web page, and all that. But when you want to show me how a
language is _cool_ , I really just want to see gimmicks: neat tricks you can
do with the array operations, ways of composing things that are easy in APL
that wouldn’t even occur to you in another language, that sort of thing.

I actually got the impression, from the way that Morten put it, that APL is
not a terribly good environment for collaboration. It seems best suited to a
single person having a “conversation”, if you will, with the APL environment—
_not_ necessarily with other developers. I’ve never written anything in APL,
let alone in a team, so I could be way off. But then again, if it’s so
productive, I’m not sure how much it actually matters if only one guy is
working on the software at a time.

Maybe software is only built collaboratively because the tools aren’t powerful
enough to let a single developer manage all the complexity. If you have better
tools, perhaps you simply don’t need to work in a team.

------
ianbishop
I've always found APL really intriguing. A professor of mine told me about how
one of his students used to be able to solve ACM competition problems
incredibly fast by simply not having to type very much. There are some insane
videos on youtube of people solving problems in APL [1].

But, you know - it's write once, read.. never again.

[1] <http://www.youtube.com/watch?v=a9xAKttWgP4>

~~~
fusiongyro
Check out J. There are a few inconsistencies in APL that are remedied in J,
though you lose out on the "cool" non-ASCII operators.

<http://jsoftware.com/>

------
jasonwatkinspdx
Everyone should read "Notation as a Tool of Thought" by Iverson:

<http://www.jdl.ac.cn/turing/pdf/p444-iverson.pdf>

APL was originally designed as a uniform mathematical notation. It was only
implemented as a programming language some time later. I don't think classic
APL has a future, but there are ideas there worth learning.

~~~
agumonkey
Strongly reminiscent of Lisp. Wishful ideas brought to reality.

~~~
jasonwatkinspdx
I think we need more of this. Crazy niche languages that are unafraid and
unashamed of to be ambitious and novel in paradigm.

We have plenty of choices for minor syntax tweaks or extensions of OO and ML.
We need to get brave again.

------
T_S_
To me the biggest lesson from APL is to always try to manipulate the largest
data structure you can your hands on. For example, don't think about for-
loops, think about 'map'. When you can do that, life is good.

The limitations of the language that I saw (in the mid 90s) were around
interoperability. Devs saw it as esoteric and steered toward something more
'marketable' like C++ and later Java. The extensive use of memory mapped files
for persistence made it 'viral' in terms of building apps to access data. The
language (or more likely the library support) was great for pricing algorithms
but not so great for business applications filled with corner cases. As I
recall these were reasons it was phased out at Morgan Stanley.

~~~
bwanab
It was used heavily in the fixed income division. I was there during the phase
out and among the A-Plus developers there was an "...out of my cold, dead
hands" mentality. They (and there were a lot of them) really loved it.

~~~
T_S_
Very true. And a few remaining A+ devs ended up with high job security since
there were some systems they were very slow to redo and they were afraid
something might break.

~~~
oddthink
I was stuck debugging a C++ application that was just using A+ objects as its
wire protocol. I never even managed to get the fonts to display properly. It
was horrible. I ended up having to write my own print-these-boxed-values
routines, just to see what was going on.

A few years later, and we were using kdb+ and q to develop major analytics.
That was actually a lot of fun.

------
sunkencity
I recently bought "APL an interactive approach" and read it. It seems that
most of the good stuff from APL is already present in modern languages, and
better when it's lazy. The OO stuff in APL looks kind of crufty. Still it's a
wonderful fascinating language. In the age of mature open-source it feels very
old fashioned with the expensiveness of a decent implementation. Btw, this is
a fantastic tv segment from days of yore "The Origins of APL - 1974":
<http://www.youtube.com/watch?v=8kUQWuK1L4w>

------
sdellysse
I may be being a bit stupid here, but how do you advance the slides on that
link? I've never been able to figure out how to use InfoQ presentations. I
must be doing something wrong...

~~~
gosub
I don't know if there's a way to advance them manually, but they are in sync
with the video. You should able to read them seeking through the timeline.

