Once managed tech for an insurance actuarial department. We ran IBM DB2 for underwriting and claims apps. One day had lunch with the actuarials to make friends and make sure we were supporting them well. At one point in the conversation I foolishly asked whether they also would like to access DB2 to minimize data transfers. They laughed and said: "SQL is like drinking data through a straw. We use APL so we can drink it all at once." I felt like a rookie at spring training.
I intend to, at some point, learn a readable array oriented programming language. I heard that J fits that bill. Any other suggestions?<p>What I mean by "readable" is, that it uses ASCII strings and actual names, not merely 1 character (except for very few cases where 1 character might be appropriate, like "Y" or stuff like that) as function names, instead of symbols, of which I do not know their names. I should be able to not only write once, but read again easily. I should not need a special keyboard or special keyboard layout to write programs in the language.
APL was the first language I learned after IBM 360 Assembly in the 1970s while I was in college. I really liked it because I was a math major and it was extremely well-suited to math operations on arrays. I used it for finding objects on the 2D complex number plane for my Senior Thesis.<p>I really enjoyed creating clever combinations of the APL operators to get a ton of computation done in one line of code. However, this was the epitome of "read-only code". It was very difficult to read that kind of code after writing it.<p>After college I never used APL again, although I worked as a software developer (and still do). I miss the fun I had with it, but I wouldn't want to use it for code that I or anyone else would have to maintain, and I doubt that it would be a very expressive language for most commercial applications. For mathematical, array-oriented tasks, Python has appropriate libraries that would probably lead to more maintainable code. And of course there's Julia.<p>But I can imagine some people still having the expertise to use APL for exploratory calculations, enjoyably and more productively than any other language.
In a round-about fashion I get interested in array languages because the relational model.<p>I tough an array is "just a column" and somewhere I get to K and that leads me to my current attempt to build a language that make both paradigms work: <a href="https://tablam.org" rel="nofollow">https://tablam.org</a><p>I think each paradigm complement and "fill" the mission pieces the other has. For example, you can name columns, that is alone very useful!<p>BTW kdb+ is also on this direction but the combination is `array then SQL/Relational` and mine is `Relational then Array`.
I think APL is very beautiful as someone who has longed to learn it from afar and not yet had the time, would be very curious to get more insight into how it changes the way you approach problems in both APL and programming in general, and how it gets you to think differently.<p>If I recall correctly, the Dyalog branch of APL allows for variable names? I kind of like the idea of zero variable names and all strange symbols. The reasoning that after you learn those, you can read any program and understand what's going on at every step, without needing to check what each function actually does -- that sounded very intriguing to me.<p>And the reason that "checks out" (or may) I guess is that the language's primitives are very carefully chosen such that you have a kind of extreme economy of "words" - so your LOCs will be so low such that you may not need to abstract lines into mysterious function names to reduce the number of lines a person has to read to understand what a program does. Aka the economy of words more than compensates for the lack of abstraction.
Is there a good book or whatever a resource to learn and train youself to efficiently think in APL?<p>APL seems beautiful to me and would probably help me with a number of tasks I do but it doesn't feel easy to actually practice.
I love APL and I use J too as desktop calculators up to programming some quick mathy things for work and fun. My latest love is APRIL (Array Programming Re-Imagined in Lisp) [1]. It allows me to use the libraries and legacy of Lisp for a lot the drudgery in all programming and APL to sling numbers.<p>I dabble with BQN and Klong.<p>[1] <a href="https://github.com/phantomics/april">https://github.com/phantomics/april</a>
My first and only experience with APL was on February 5, 2010, at the ACM ICPC world finals. I spent probably an hour and a half trying to figure out how to write a right-associative parser, and never ended up submitting a working solution.<p>Anybody here write a working solution to that problem? Or remember it, even?
Is there a comprehensive comparison between the strengths/weaknesses of APL and numpy?<p>I have been interested in APL and friends for some time, but have not yet seen an example which made me commit to taking the time to learn it. numpy (and JAX) have been doing everything I wanted, so far.
Has this guy not heard of Matlab? He's acting like the idea of everything as an array is some niche forgotten thing in a long dead language, meanwhile practically every Engineering department is choc o bloc of people who take the "everything is an array" idea way beyond its logical extent.