I've also heard Forth and Lisp described this way. And yet I find both readable since I have experience using them. I wonder if APL is similar: It's only unreadable to people who don't know the language. Well of course it is.
Take the famous 'game of life' APL example:
``` life ← {⊃1 ⍵ ∨.∧ 3 4 = +/ +⌿ ¯1 0 1 ∘.⊖ ¯1 0 1 ⌽¨ ⊂⍵} ```
It's quite logical, when you walk through it.[0] But it's harder to read 'back to front', which is what code readability is about.
https://www.youtube.com/watch?v=pMslgySQ8nc&t=45s&ab_channel...
And he even shows how you can animate it in the editor window.
In other languages it’s easier to communicate “why” you are doing something, while in APL it’s the “how” that’s easiest.
result←findMax data
max←0
:For i :In data
:If i>max
max←i
:EndIf
:EndFor
result←max
then findMax 5 1 2 3 5 6 3 1
6
Writing it more neatly as findMax←⌈/ isn't mandatory anymore than `reduce(max, numbers)` is mandatory in Python.But I remember what confused me the most was trying not to use loops to sum arrays and using vector ops like +/A
Forth and Lisp were odd, like a native English speaker learning Russian or Korean. APL is like writing a novel directly into encrypted form.