On 11/28/2017 3:59 PM, Andrew Dabrowski wrote: > Do you loveJ most because of (pick only one)
Background: applied math/numerics guy. I've worked around big data and tsdb problems for a long time, so the legends around Kx systems is what originally brought me to APL land. I even worked on a "more mainstream" aka normie legible one called Kerf (basically a rank-1/rankless APL you can read in plain english). That's what got me here. Jd, is definitely one of the things which keeps me around. Stuff like Jd allows you to bring the calculation to the data. Opposite of spark which has expensive marshall, shuffle, etc, and appears to be written by a tribe of chimpanzees. I have beat spark clusters by factors of 100 on calculations running J/jd in one node in one thread (while spark was also running in all the other available hardware threads on the same node and a dozen more!). Mental clarity: when I can express an algorithm in J, I fully understand that algorithm in a way that wouldn't happen with C++ or python or something. I have been using stuff like wavelets and neural nets for decades, but only really understood them when I expressed them as J verbs. This isn't always necessary (libraries are good), but sometimes it is really helpful. Maybe it's the "natural language" properties, or maybe it's because most of the algorithms I am interested in are on matrices and vectors. FFI: it super quick standing up some bag of verbs that allows one to use a C-api. R has some good tools here also, but there is generally a lot of ceremony around the FFI which slows everything down. Speed: it runs fast, and once you get past a certain skill level, dev time is faster than anything else I have used. And I can see lots of potential for improvement as most of the dev time is getting bogged down in some puzzle due to my ignorance, or not noticing some addon package. Bottoms up: one of the strengths of it is it is generally easy to build something big out of lots of little elementary particles. Once you get the pieces, hooking them together (maybe in a namespace) is generally trivial, and the thing "just works." Lisp was like this for me also. Pretty much nothing else is. Community: People who use J tend to be very smart. But, unlike the common lisp community, nobody is a supercilious weirdo about it. Potential: Moore's law has kind of stopped; trend is towards many cores. Theoretically, most J array operations can be naturally parallelized. I think it would make a dandy deep learning metalanguage. Maybe some day I'll have the time to look at Pascal's Arrayfire bindings. https://github.com/Pascal-J/Jfire Downsides: it's a really big language, the documentation can be terse, and, yes, sometimes I can't understand some of the tacit expressions. Also not as many helpful libraries as something like Python or R. I think it's not as natural a fit to text or things that cry out for hash tables or tree-like structures, but it may be just because I don't do much of that sort of thing. If I had to identify one piece of low hanging fruit for my own productivity: more documentation for the addons. Discovering J was sort of like discovering an XB-70 buried under a Mayan temple. Nothing is perfect, but it is a very good tool for me. -SL ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
