4 ms·
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 key
by vincent-toups 7y ago
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.
- jshaqaw 7y agoI 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.
- avmich 7y agoI'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.
- beagle3 7y agoI 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.