4 ms·
Lessons from APL, a “Lost” Language
- vincent-toups 7y agoWhen 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.
- Aearnus 7y agoI 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.
- smabie 7y agokdb+/q is reasonably popular. And the salaries are very very high. I know some q guys pulling in over a million/year.
- non-entity 7y agoWow 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?
- smabie 7y agoBanks. Maybe some hedge funds or prop trading shops, but mostly banks.