Thanks for your comments.  I imagine you're used to newbies getting exasperated during their first exposure to J, so I didn't hold back.  Of course you're right that it can take years before one becomes comfortable in a language.  But with so many languages out there one has to perform triage, and when I see the Circle Function or the kludges to permit ternary functions I have to wonder about the prognosis for J.

On 11/19/2017 03:00 PM, Don Guinn wrote:
APL and J are more natural to mathematics and the real world than
traditional programming languages. The fact that they treat arrays as
natural and unnecessary to convert array calculations to scalar loops is a
major step forward in programming.
That may have been true when they were new, but I think packages like Mathematica have eaten their lunch since then.  Mathematica has a lot of the meta-level features that J has (if not more) and gives you the option of using verbose or abbreviated forms.  Of course Mathematica is expensive, if I didn't work at a University I'd never be able to afford it.  So J is attractive for being open source(?).

There are several concepts in J that are difficult to grasp, until you
understand them. Then they are obvious. Rank gave me months and years to
fully grasp. But now it is obvious.
I probably don't understand rank, but it's one of those things that of which the misunderstanding is hard to recognize until it's passed.

Modifiers (adverbs and conjunctions) are a major step in extending math
concepts. A great example is insert (/) as it combines several mathematical
concepts into one. Sum (sigma) and product (big pi) are separate concepts
in math, but the same concept in J. Even continued fractions become similar
to sum and product series. Try "(+%)/10#1". And to see something really
interesting, try "(+%)/\10#1x".
Again, major when they were new, routine now.  Clojure has almost entire sublanguage devoted to reducing arrays with operations between elements.

Long strings of verbs and modifiers can be intimidating. I have difficulty
reading them too. But I have always wondered why I have trouble and feel
pressured to read a couple lines of APL or J which are equivalent to
several pages of FORTRAN. Yet I have no problem spending the hours
necessary to understand those pages of FORTRAN.
I've never dealt with Fortran, but in general verbosity and redundancy are a learner's friends.  I find it's almost always easier to read 10 clear pages than 1 cramped one.

You have only been playing with J for a short time. Remember when you first
started programming in C or whatever. If you tried to grasp the
complexities of pointers, classes, objects and the whole scope of the
language you would probably have been overwhelmed. How would a beginning
math student do if he was thrown into integral calculus and matrix algebra
on the first day of class?

As to using the APL symbols. APL programs are "pretty". They look nice. J
looks like a core dump. But I remember the difficulty entering the APL
symbols from a keyboard. Alternate shifts etc. were not easy.
As I suggested, why not use the J abbreviations to type the code and then display it using APL symbols?


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to