Array programming languages are so strange if you’re used to more traditional programming schools (procedural, object-oriented, or functional). Aaron Hsu is both a well-known professional APL programmer and a researcher into programming language education, and he helps cross the barrier with this great talk he co-presented with Dhaval Dalal and Morten Kromberg at 2018’s FnConf. It’s a long watch, almost 90 minutes, but the key bridging of concepts is presented in the first few minutes. I’ll try to reproduce it in text below, mainly for my own benefit.
Functional programming languages use abstract data types, first-class functions, and abstractions built on the composition of those parts, whereas array programming types use the array data type, a rich set of language primitives, and directness rather than abstraction (so you’ll resist abstraction in favour of direct composition of arrays and the rich set of array manipulation tools given to you).
It’s hard to over-emphasise what “rich” above means. Long-standing programmers might argue that Ruby has a rich standard library, for example, and it does compared to something like C. But APL and it’s ilk give you primitives as powerful as those what Numpy or Pandas give Python programmers for data manipulation, but as built-in primitives rather than the parallel world you often have to use Numpy/Pandas code in (i.e. you’ve to use the data types Numpy gives you, not Python’s native data structures).
The talk goes over it so much better than I’m trying to express here 😅. You can compare implementations between programming schools (using javascript, haskell, and scala on the one hand, and APL on the other) in the repo that accompanies the talk.