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

Reply via email to