APL in JavaScript
ngn.github.io
ngn.github.io
I generally hate videos, but this one is well worth the few minutes it takes (assuming you are not familiar with APL; read the examples on the linked page first, it will save you a couple of reviews of the videos until you get it all)
I'm appalled by the authors enforcement of 1-origin indexing.
It's 0-origin indexing.
Sorry, I don't follow?
"It's 0-origin indexing."
Oops. Then I'm ecstatic rather than appalled. :-)
And one so dense/obscure/efficient that obfuscation is not a contest, it's an inherent philosophy.
Edit: corrected misuse of "obtuse".
By the dictionary meaning of 'obtuse', in fact, APL is the opposite: a sharp tool and a masterpiece of design.
I think that even people who are familiar with it could feel that its concision hurts readability. It's not such an unfair criticism as you may suggest.
The one worry I have with APL and its descendants is that its conciseness will encourage people to make overly long expressions.
One possibly beneficial side-effect of more verbose languages is that it tends to encourage the use of additional identifiers to hold sub-expressions. The act of naming things is often a good thing for both the authors and readers of a program. More abstractly, it allows the program to carry intentional semantics alongside operational semantics.
This is also a problem I have with mathematics -- mathematical notation often uses context-dependent single-letter variable names for semantic information, which is terrible from an outsider's perspective (and by outsider I really mean anyone who isn't working in the exact field of the mathematician).
Edit: I should mention that I'm still pretty enamored with J for numerical computation, even though I never do any of it :)
http://introtologic.info/AboutLogicsite/whitehead%20Good%20N...
Iverson took one of his epigraphs from there, but the whole thing is short and well worth reading.
Fun fact: Iverson, Roger Hui (the J guy) and Arthur Whitney (the K guy) were all from Alberta.
1. They are not familiar with the symbols. It's the equivalent of trying to read a label in a foreign language. The text may seem unreadable to you, but if you learn the alphabet/hieroglyphs and some vocab, it makes sense.
2. They aren't used to brevity of notation. An APL program is to be read character by character, the way one reads a Java program line by line. Brevity is an advantage because it allows you to see more of a program's structure at a glance.
Is Sanksrit readable? Saying "that's not readable" about APL is about as foolish as saying it about Sanskrit.