You can get everything there is in APL, plus no weird symbols in the J programming language.
> learning all the alien symbols is a one-time investment
No one time investment is needed if you want to learn J.
And yes, it does teach you to think in a new way. I am not kidding.
You can see the plethora of (mostly free) books available at the website [0].
Learning J has given me "enlightenment" at the same level The Little Schemer has given me.
(I don't recommend APL to anyone as you need to learn and painstakingly slowly insert those symbols. If you want to learn array thinking, go straight to J. Why waste time and headspace with APL symbols?)
> No one time investment is needed if you want to learn J.
I don't understand the "{J,K,Q} don't require you to learn new symbols" argument. You're learning a mapping between symbols and functionality, not literally learning to recognize the lines and curves that make up the glyph.
"reverse" is `|.` in J and `⌽` in APL. It doesn't seem obvious that the J mapping is easier just because I've seen those characters in other contexts.
It does take a little work to learn where they live on the keyboard, but that doesn't seem like a huge barrier to overcome. The live editor on the BQN site shows a list of glyphs and hovering shows you where they are on the keyboard. You just prefix with `\` to type them, so you don't even need any custom keymap.
Well-chosen symbols aid thinking about the concepts. That's why mathematicians don't write their formulas in ASCII. Once you learn the keyboard layout, it is faster to type APL than J's two-glyphs and three-glyphs.
Ken Iverson invented J after he worked on APL and according to him J is an improvement upon APL.
Most people don't know about J, but know about APL because of those weird symbols.
I agree with your thoughts that not everything should be ASCII (and this is what many comments on this thread don't see), but don't reach the same conclusion as you do.
The core language of J was an improvement on the APL back then, but modern APLs have since borrowed many features from J. Iverson's choice of ASCII was because he wanted to make it more accessible to schools that couldn't get the equipment necessary to display APL glyphs. Note that J was released the year before Unicode.
> a concession to the state of technology at the time.
Well, not anymore. But I will prefer ASCII over glyphs any day.
I have learned symbols in Math, and I keep learning newer ones.
It finally comes down to _RoI_.
The vast and tremendous return I get from non-ASCII characters in Math (and have gotten for decades)- I will not get the same amount from APL. It's as simple as that to me.
I tried to learn it multiple times, but something became very obvious to me when I used it in parallel to Q and read J for C progammers : J doesn't have a nice way to mimic keeping states between loops.
The J for C Progammers author divides loops in, I believe, 7 use cases and for that one he ends up using "an adverb" (a high order function) he wrote himself? Why? Because the language default adverbs don't support it.
In comparison, Q had very good support for that. Q also doesn't require learning symbols.
I haven't tried Q, and didn't read the book that you mention.
I learned J the same reason I learned Scheme- to expand my mind, and perspectives.
And I definitely would not want to use J for solving real-world problems, but I would definitely state that there are a lot of ideas in J-like languages that merit being looked into and being taken from there into modern Deep Learning frameworks.
> learning all the alien symbols is a one-time investment
No one time investment is needed if you want to learn J.
And yes, it does teach you to think in a new way. I am not kidding.
You can see the plethora of (mostly free) books available at the website [0].
Learning J has given me "enlightenment" at the same level The Little Schemer has given me.
(I don't recommend APL to anyone as you need to learn and painstakingly slowly insert those symbols. If you want to learn array thinking, go straight to J. Why waste time and headspace with APL symbols?)
[0]: https://code.jsoftware.com/wiki/Books