While I have done, in the past, with APL*PlUS, (Yes, I am that old) more
than I have done with J (interest rather than need is now dominant), I
find that the potential of J to deal with many things in a compact way
is superior to that APL and any other languages which I have dealt with
-from MAD, Fortran, Basic, Pascal and C++ . In J, the problem solution
is the main objective and the bit twiddling can be left to the idiot
box, not the programmer. The array orientation eliminates much of the
need for looping and control structures which, while defined, are often
unneeded.
An example is (explicit) scripts to solve electric and magnetic fields
under power transmission lines. The scripts are compact and take
advantage of the use of complex numbers for electrical as well as
positional factors and geometric means -- there is no looping that would
have to be explicitly built as would be the case in most languages.
Explicit loops have their place and usefulness and this is recognized
in J.
The difference between J and most other languages is that J eliminates
the housekeeping that the idiot box can do -so that the*problem rather
than the housekeeping is dominant*. It is true that compiled C++ lies
behind many of the operations - but J is beyond C++ as much as C++ is
beyond assembly language for programming.
Don Kelly
On 2017-11-28 12:59 PM, Andrew Dabrowski wrote:
As much as I've complained about J in these forums I've been having a
good time translating some simple code into J. Someone gave me wise
advice, to stick with explicit definitions until I know the language
well, which advice I have cordially ignored because I'm having too
much fun playing code golf with tacit tangles.
I was fascinated by J because it seemed to try to build on aspects of
the human linguistic system. Natural language unfolds in one
dimension, time, so everything relevant to understanding a particular
word in a sentence either came before it or is yet to come. J seemed
to emulate this by having verbs which relate directly only to objects
on the immediate left and immediate right. Moreover J seemed to be
following a linguistic paradigm in have nouns which are inert, verbs
that act on nouns, and adverbs which modify objects. This seemed like
a promising way to exploit humans' natural linguistic capabilities.
But maybe that's not way the J community currently sees J. Do you
love J most because of (pick only one)
1. the NL inspired syntax;
2. the suite of array utilities;
3. the concision of J code;
4. its being open-source; or
5. _____________________?
I've come to feel that all programming languages are ugly compromises
that are about equally good/bad at solving practical problems, and the
"best" language is just the one you know the best. I used to be
contemptuous of Perl, but after having learned it well enough for my
purposes I now kind of enjoy the brain teaser quality of trying to fit
problems into its procrustean bed (although I still think it's a silly
language). I have no doubt that I could live happily with J as my
primary language, but only after an extended period of being
handcuffed to it and forced to assimilate its quirks. I don't know
that I'll have the patience for that.
Is there any project in the J repos that demonstrates the strength of
J, as opposed to just showing that it's at least as good as other
languages? Any project that would have been significantly harder to
complete with say Python? Does J have any killer advantage, even in
just one aspect of programming? Or does J just appeal to you the way
pistachio ice-cream might, it just tickles your palate in a
no-accounting-for-taste way? That's how it appeals to me.
I was hoping someone could talk me into studying J seriously, but now
it looks to me like a language which, with APL, has had enormous
beneficial influence on many other languages, but which has failed to
learn in its turn from them. J seems a tad solipsistic.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm