Ian Clark wrote:
> Can we hear from some real novices? That is, ones who are capable of
> introspecting while they problem-solve? 

and Raul Miller wrote:
> should some pages have introductory/advanced structures where we
> first introduce the reader to some essential cases and then come back
> and treat the operation with more rigor? 

I'm going to go out on a limb and suggest that many, if not most, 
proficient people here have come to J from APL.  Frankly, that gives 
you a HUGE conceptual advantage over newbies like me who lack an APL 
background.

In my opinion, as a newbie, there are two concepts that have to be 
introduced at the very beginning and repeated over and over at every 
opportunity for those who are brand new to J: (1) the concept of 
working with data as an "all-at-once" array rather than as discrete 
items, and (2) the concept of rank.  Of course, these concepts cross 
all levels of understanding, and that's part of the advantage and need 
of repeating them in different usage environments and in different 
examples.  I'm getting better with the first concept in my elementary J 
programming efforts, but the second is still challenging.  (The first 
is quite challenging to those who have done programming before and are 
used to thinking in terms of dealing with array data via loops.)

Another thing that I think should be addressed with each primitive is 
WHY you would ever want to use that primitive--what's it good for?  
What's it good in combination with, and why?  As a newbie, this 
question of WHY was always one of the foremost questions in my mind.  I 
would look at Dictionary examples and think, "Well, THAT'S stupid! Why 
would anyone ever want to do that? What practical use is that?"  (My 
feeling was also partly engendered because many Dictionary examples 
don't indicate what the point of the example is.  It might be obvious 
to a J aficionado but not necessarily to a beginner.  Although a 
meditative trance over an example may be how some learn, it's not my 
learning style.  Show me "real life", practical examples.)  When I know 
WHY a primitive is used (for what purpose or purposes), then I can use 
it as a building block to put together with other building blocks to 
come up with a solution to a problem.

Also, in learning in general, some beginning material just has to be 
learned by rote until greater understanding is achieved.  An example is 
the addition table: just accept (and use) the fact that 2 + 2 = 4; 
you'll see why later on.  Or, "t-h-e" is the word "the": just accept 
(and use) that fact of the English language.  "Sight words" don't 
follow phonetic rules and just have to be learned by rote.  Thus, as I 
see it, there are some basic J verbal constructions to get things done 
(such as reading/writing an array from/to a file) that are just going 
to have to be accepted on faith by newbies and learned by rote, so that 
they can use newly learned primitives with data that's meaningful to 
them.  My point with file access is that "real" data that newbies may 
have worked with all their lives exists in files, not in artificial, 
hand-typed data as arguments in an example or a demo.  Some of the 
examples in the new project should include "real life" ways of working 
with data at simple levels of understanding (without *initially* 
worrying about the format--rows, columns, etc.--of the data, although 
format obviously plays a later role in accessing items of data).

I frankly admit that my concerns here are not so much with the curious 
Rosetta Code person but with people who see the value of J and want to 
devote serious effort to learning it.  This is the kind of thing I 
tried to emphasize in my own materials for professional colleagues 
before I retired, and I applaud any efforts here to assist with 
learning J.  In a sense, if you really want to experience the challenge 
of developing materials for beginners, think of it in terms of helping 
middle grade and upper grade children (grades 4-8) to learn J and who 
may not be particularly interested in math (in other words, perhaps 
more interested in the humanities than in the sciences).  After all, 
thinking and problem solving are what J is all about, and that need not 
be restricted to the field of mathematics.

FWIW.

Harvey

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

Reply via email to