Without any comments, and only the knowledge that it computes
Pythagorean triples, I was able to read and understand that code
completely in about four minutes. Reading line two right to left, I
decided the result was the primitive triples with sum less than or equal
to y just before getting to the word "prim".

Do you consider the description "list the pairs of numbers which range
from zero to two less than the floor of the square root of y" to be
comprehensible? The code (,/ ,"0/~ }. i. <. %: y) says the same thing,
using essentially the same concepts, with symbols instead of words.
Sure, there could be a comment stating the English version (and there
should be on a site like RosettaCode), but it seems a little strange to
write the same thing a second time, in a less precise and more awkward
language.

J is read a few primitives at a time, rather than a line at a time. This
might be frustrating to a programmer from another language since it
feels like less progress is being made. But it would be very superficial
to dismiss the language because of this, especially when the amount of
functionality that can be understood in the same amount of time is
greater with a little bit of experience.

Regarding ease of use for beginners, I don't care whether the language
thrives. I care whether I personally can use it to understand and write
algorithms better. J has made many missteps from the former perspective
but very few from the latter.

Marshall

On Thu, Nov 30, 2017 at 03:46:00AM +0000, Dabrowski, Andrew John wrote:
> Yes, after reading my own description of my fascination with tacit I thought 
> I sounded like a prick, so I'm trying to use explicit more, and it is nice: 
> still concise, but easier to parse.
> 
> One thing that irks me is the J solutions posted on Rosetta Code.  Here's the 
> one for Pythagorean triples.
> 
> trips=:3 :0
>   'm n'=. |:(#~ 1 = 2 | +/"1)(#~ >/"1) ,/ ,"0/~ }. i. <. %: y
>   prim=. (#~ 1 = 2 +./@{. |:) (#~ y >: +/"1)m (-&*: ,. +:@* ,. +&*:) n
>   /:~ ; <@(,.~ # {. 1:)@(*/~ 1 + y i.@<.@% +/)"1 prim
> )
> 
> 
> 
> Impressive, but isn't Rosetta Code a place more for showing off how elegant 
> your language can be, rather than how incomprehensible?
> 
> 
> On 11/28/2017 11:45 PM, Rob Hodgkinson wrote:
> 
> Further on this comment Andrew, don’t get bogged down in the topic of tacit, 
> you can get a lot of benefit form using J in native or explicit form and 
> leave tacit for later.
> 
> I have been programming in array languages for many years and also confess to 
> being mesmerised by some of the tacit expressions which I do not find 
> immediately readable at all, especially when peppered with ASCII like 
> punctuation.
> 
> Dissect certainly helps, but coding tacit for tacit’s sake is not something I 
> get hung up about, you can derive huge benefit without it, but it can be nice 
> to use when it becomes more familiar to you, as people show here when they 
> create a group of small compact verb trains (or phrases) which together make 
> a compact solution.
> 
> Rob Hodgkinson
> 
> 
> 
> On 29 Nov 2017, at 8:38 am, Andrew Dabrowski 
> <[email protected]><mailto:[email protected]> wrote:
> 
> 
> 
> As a beginner I find it impossible to parse a moderately sized tacit 
> expression.  No doubt one gets better at this, but like all computer 
> languages, the one dimensional space it lives in seems to confound any 
> attempts to represent mathematical ideas directly.
> 
> 
> 
> A computer language based on mathematical notation sounds like a cool but 
> impractical idea.  It would to have to be 2 dimensional, as in fact math 
> notation is.
> 
> 
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> 
> ----------------------------------------------------------------------
> 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