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.

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.

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".

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.

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.

​You have only been playing with J a short while. Don't try to take it all
in at once. And like all other programming languages, there are advantages
to each of them. It just so happens that APL and J are really different.​

On Sun, Nov 19, 2017 at 12:15 PM, Andrew Dabrowski <[email protected]>
wrote:

> I've been fascinated by J for the last week or so.  After successfully
> writing a simple script that's actually useful, I'm trying to decide
> whether to keep learning J or just declare victory and return to
> conventional languages.
>
> I'm not really a programmer, I'm a math instructor, but I do some
> programming in Perl and Clojure for the department.  J looks like the kind
> of language that might be useful for small practical tasks, but I have some
> serious reservations.
>
> 1. J is clearly the work of an insane genius.  The fetish for brevity
> combined with the brilliantly thought out meta-operations is frightening.
>
> 2. The ideal use case for J is obviously an iPhone game where programmers
> compete in code golf.
>
> 3. The heart of the language seems to be in tacit definitions, and
> explicit ones seem to be just a necessary but ugly kludge.
>
> 4. Therefore the language can really only be used comfortably in domains
> where functions of arity higher than 2 are rare.
>
> 5. The mania for terseness is clearly at clinical levels.  The family of
> circle functions o. is something that seems like a good idea in the shower
> or the middle of night, but no one would be foolish enough to actually
> implement it.  Except Ken Iverson.
>
> 6. In the age of unicode, why /not/ use the special symbols from APL?  We
> could use the J expressions to type them, but wouldn't the APL symbols look
> and read better?  As it is J might be said to have the worst of both worlds.
>
> 7. Has anyone made up a set of aliases for beginners which provides
> natural language based names for the operations?  A newbie could slowly add
> the abbreviations to his vocabulary, as one does with e.g. emacs.
>
> 8. The failure to clearly distinguish at the syntactic level between
> monadic and dyadic verbs, along with the laconic culture, makes tacit
> definitions almost unreadable for a beginner.  This could have been
> avoided, but it seems the drive to score an eagle won out over the desire
> for clarity.
>
> 9. It's true that the choice of symbols for verbs was made carefully and
> exhibits a logic not found in natural language.  But here, unsurprisingly,
> the latter shows its wisdom.  There's a reason that similar words in
> English tend to have unrelated meanings.  For example I often see "wary"
> written as "weary" in online forums.  In practice this causes little
> confusion because one can tell from the context which meaning is intended.
> But if you mistake e.g. "{." for "{:" your code will probably still run but
> with errors that could be hard to pin down.  Verbosity is better, at least
> for beginners.
>
> 10. Maybe beginners aren't the point?  Is J really just the Shriners of
> programming?  A bunch of crabby geezers riding around on scooters?  I might
> in fact want to join that, but I did kind of get the impression that you
> were selling J as a serious programming language.
>
> I feel better now.  I continue to be fascinated by J, but point 4.
> especially makes me leery of investing too heavily in it.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to