Well, it'd be fairly easy to test: teach a first year coding course, give one group python and the other group APL, and monitor the grades and the drop rate.
I can't prove it, but I'm highly confident that python would win. Because it has a lot of analogies to things people already know:
- In simple cases, you can read it as a set of commands, like a recipe. People are familiar with recipes
- Syntax mostly uses well know words (or abbreviations of well known words), or very simple symbols that you'd pick up in basic math (+,-, *, comma, etc.)
- Variable names make clear what the result of a particular expression maps back to in the real world (ideally)
- The whitespace indented structure of the code is fairly obvious if you've ever written an outline
APL has...
- Unfamiliar symbols
- Terse, confusing names
I mean, look at this example for getting the average from a list of numbers:
{(+⌿⍵)÷≢⍵}
Since I don't know greek or math particularly well, in my head I read that as "plus minus sign with a slash through it and curly w divided by triple equals curly w with a slash through it". I'm nowhere.
Here's the python code:
def average(numbers): return sum(numbers) / len(numbers)
I couldn't
write that if I didn't know python, but if I had never written a line of code in my life I could give you a decent guess as to what it does. Is it verbose? I guess in character count, but not in any meaningful sense.
You're right, familiarity IS why python is easier to understand. But it's not programming familiarity, it's that almost every aspect of it is more familiar. The only people that (might) find APL more familiar are mathematicians in my opinion, and they could easily understand python.