Brian said:

Why have the + signs in the last two examples when the arrows suggest the 
transition?

Skip says:
I proposed an alternate option in my previous post. Rather than popping 
up the plus signs on top of the number, just leave the plus sign where 
they belong - to the left of the number. Move the number as a ghost on 
top of the plus, and then take the conjugate action.

Brian said:

Why have array and vector examples when the verb is scalar, anyhow?
Why not reduce all of the examples to scalars except maybe to
economize on time? The nonscalar activity is better covered in a
generic section on how verbs deal with higher or lower rank data,
except where a verb does this in a special manner as does the dyad
Append and its relatives.

Skip says:

This is an issue that I have also been struggling with. Just how much 
information about a primitive should be in each NuVoc description? The 
basic problem is the fact that NuVoc is a Reference/Tutorial. The key 
word here is Reference. That means that a novice, who sees a J 
expression somewhere, can jump into the NuVoc reference on primitive 
descriptions at any point. So, the first exposure a newbie has to J, 
could be any one of the primitive descriptions in the NuVoc.  How should 
we handle this?

This issue was brought home to me in the recent posts by Catherine 
Lathwell. Catherine didn't understand why there was an underscore in 
front of the numbers in some of the video examples of the conjunction 
primitive. The underlying concept that underscore defines negative 
numbers is a new concept to most people, and will cause confusion if it 
used in an example, before any explanation is given.

That means that we either need to repeat general concepts in every NuVoc 
description, or we have a "read this first" section that we recommend to 
the novice before jumping into the NuVoc. Given the theory that 
"learning is best accomplished by repetition", having concepts presented 
multiple times is not necessarily a bad thing. Perhaps a "read this 
first" AND additional reminders or repeated examples in the primitive 
descriptions would be a the best approach for a reference/tutorial. 
After all, we are trying to take a new approach to the vocabulary, 
making it more approachable for the novice, and not trying to match the 
functionality of the original vocabulary.

I believe that the two Rs, reminders and redundancy, are the main 
differences between a definition and a tutorial. The goal of a 
definition is to specify all of the aspects of a function thoroughly, 
with minimal redundancy, and with the assumption that all other concepts 
except the one under discussion are already understood by the reader. A 
tutorial is intended to teach the aspects of a function, which will 
likely include considerable redundancy in the teaching process. The 
redundancy will entail displaying different aspects of the same concept, 
as well as reminding the student of other new concepts when they occur 
in the teaching process of one specific concept, all to reinforce those 
concepts.

I have come to the conclusion that my problems with the current J 
vocabulary aren't with its' conciseness, as much as it's lack of 
reminders and repetition. I believe that the original vocabulary was 
written to provide a complete specification of each primitive, with no 
requirement for redundancy, and with the assumption the the reader has 
perfect recall of all major J concepts except the one under discussion 
(which is certainly NOT me).
.
In fact, redundancy and reminders in the current vocabulary were frowned 
upon, as they detract from the pureness and efficiency of the 
definitions. The whole J vocabulary format was honed to remove all 
elements of redundancy, to provide a clean and clear set of definitions 
with minimal repetitive information of any sort. The original vocabulary 
succeeded spectacularly in its goal of defining the full J language in a 
minimal form. Not surprisingly, the result was also an exemplary tribute 
to conciseness.
.
Unfortunately, I believe that that is exactly the wrong approach to 
teaching new concepts, which seem to be a majority of the concepts in 
the J syntax. A new concept should be introduced with very simple 
examples, which are then gradually extended to more complex examples, 
until a fairly thorough understanding of the general concept has been 
conferred. The reader should be reminded of those new concepts again, 
when they arise in new situations. Conversely, when a different new 
concept appears in the process of explaining a specific concept, a 
reminder of how that other concept works, is very helpful for the novice.
.
This brings me to the conclusion that each primitive in the NuVoc should 
step through a fairly extensive set of examples of that primitive's 
usage, going from simple to complex. Video graphic examples would help. 
Along the way, there should be reminders of any other new concepts that 
arise, which may not have been thoroughly assimilated as yet by the 
newbie (underscore = negative).
.
It would be interesting to make a formal list of the general syntactic 
concepts in J that are unique to it, or at least unique to those who 
unfamiliar with other array languages such as in APL, K, QNial, etc. 
This list would be a good starting point for the "read this first" 
section of the NuVoc, as well as a reminder for those writing the 
primitive descriptions, as to when to provide a reminder about other new 
concepts for the newbie when they occur in the tutorial process. For 
example, the conjunction video could have a little balloon tip pop up 
above the underscore the first time it appears, to remind the newbie 
that underscore indicates a negative number.

A start at the "new concept" list would be: the various number 
representations (negative, complex, extended, etc), right-to-left 
execution, operator precedence, monadic/dyadic functions, 
multidimensional extensions to functions, rank, etc. I'm sure that there 
are many more, but I have to go for now.
.
Skip Cave
.
Brian Schott wrote:
> Bob,
>
> Yes, I like the most recent animations. Here is some of my thought process.
>
>
>
> Why have array and vector examples when the verb is scalar, anyhow?
> Why not reduce all of the examples to scalars except maybe to
> economize on time? The nonscalar activity is better covered in a
> generic section on how verbs deal with higher or lower rank data,
> except where a verb does this in a special manner as does the dyad
> Append and its relatives.
>
> Shouldn't the animation focus on what the target does (e.g., 1r2 + _6
> in the case of Plus) and what it does not do (e.g.,  2 + 'a' in the
> case of Plus)?
>
> Great work, everybody, especially, Bob.
> ----------------------------------------------------------------------
> 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