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.
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.
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.
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.
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.