Re:Lessons from APL, a “Lost” Language
by vincent-toups on Sunday November 17, 2019 @03:28PM
(#21559886)
When I started my current job as a data scientist I spent the first three months or so doing all my work in J (a descendant of APL that doesn't need a funny keyboard).
I'm a long term Lisper (prefer Scheme) and so I have a high tolerance for languages with weird syntax and small communities, and I had to write a lot of code to get a working environment in J (for instance, I hand wrote my own simple system for interfacing with Hive, which I used a lot back then).
The main thing I did was implement Naive Bayesian inference on some internal data and lots of plotting.
J is fun and it gives you that special feeling of doing something hard and weird which sometimes motivates me, but in the end I gave up on it in favor of R and Python. Surprisingly, the main thing that won me over to these languages is that they were faster and required less care. I'm not stranger to vectorization (did Matlab for 6 years during my PhD) and I liked doing it in J, but in the end I could do less work and get sometimes much better performance out of R.
Plus, even after many months of doing J full time, I still have to get into a whole headspace to even _read_ my J code. R and Python are at least legible in a way that you can come back to after awhile.
Finally, I started to really miss the uniformity of simple, first order functions with lexical scope.
Still miss the notion of verb rank, though. Wish it was part of modern languages.
Re:Lessons from APL, a “Lost” Language
by beagle3 on Sunday November 17, 2019 @07:52PM
(#21561121)
I have used APL and k, and tried to use J; somehow J never clicked properly. APL mostly did, but k perfectly did.
Conceptually, they are more similar than they are distinct - but k is tiny and more practical, and IIRC even Iverson said that in retrospect, most choices where k differs from J (juxtaposition vs. trains and hooks; reduction going l->r instead of r->l), the choices whitney made in k are clearer and more useful even if they aren't as pure and consistent.
Re:Lessons from APL, a “Lost” Language
by jshaqaw on Sunday November 17, 2019 @05:22PM
(#21560412)
I absolutely agree. I’ve never had an actual use case which made sense for me to utilize J vs a conventional alternative but it is a blast and I too get pleasure from the “weird” in programming.
Re:Lessons from APL, a “Lost” Language
by avmich on Sunday November 17, 2019 @06:23PM
(#21560742)
I've had a positive example of using J for a prototype which wasn't algorithmically clear initially. So I had to twist and turn some parts to figure out what actually is possible and simultaneously good enough.
Interesting that developing a POC in J took about 40 minutes and then rewriting it into C# took 3 hours, even though with C# it was clear what's needed. J can be surprisingly efficient for research work.
Re:Lessons from APL, a “Lost” Language
by Aearnus on Monday November 18, 2019 @02:32AM
(#21562553)
I wouldn't really call APL/J/K "lost" (or "dead", or "useless", or...). There's an active community on Reddit and there's a pretty active circle of APL'ers on Twitter. It wasn't ever a super mainstream language, but it's definitely not lost its appeal -- maybe even as a fun hobbyists' language.
Re:Lessons from APL, a “Lost” Language
by non-entity on Monday November 18, 2019 @09:34AM
(#21564567)
Wow I had never heard of those technologies before. What kind of background would you have to have to get a job like that? What companies are hiring people on damn near a million?
I'm a long term Lisper (prefer Scheme) and so I have a high tolerance for languages with weird syntax and small communities, and I had to write a lot of code to get a working environment in J (for instance, I hand wrote my own simple system for interfacing with Hive, which I used a lot back then).
The main thing I did was implement Naive Bayesian inference on some internal data and lots of plotting.
J is fun and it gives you that special feeling of doing something hard and weird which sometimes motivates me, but in the end I gave up on it in favor of R and Python. Surprisingly, the main thing that won me over to these languages is that they were faster and required less care. I'm not stranger to vectorization (did Matlab for 6 years during my PhD) and I liked doing it in J, but in the end I could do less work and get sometimes much better performance out of R.
Plus, even after many months of doing J full time, I still have to get into a whole headspace to even _read_ my J code. R and Python are at least legible in a way that you can come back to after awhile.
Finally, I started to really miss the uniformity of simple, first order functions with lexical scope.
Still miss the notion of verb rank, though. Wish it was part of modern languages.
Conceptually, they are more similar than they are distinct - but k is tiny and more practical, and IIRC even Iverson said that in retrospect, most choices where k differs from J (juxtaposition vs. trains and hooks; reduction going l->r instead of r->l), the choices whitney made in k are clearer and more useful even if they aren't as pure and consistent.
Interesting that developing a POC in J took about 40 minutes and then rewriting it into C# took 3 hours, even though with C# it was clear what's needed. J can be surprisingly efficient for research work.