Learning J language - initial thoughts

classic Classic list List threaded Threaded
47 messages Options
123
km
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

km
Would you give it a try?  --Kip

Sent from my iPad


On Mar 15, 2013, at 10:00 PM, Marshall Lochbaum <[hidden email]> wrote:

...

> I think a better approach
> would be to organize words into a few groups--arithmetic, logic, lists,
> compositions, and heavy mathematics--which contain a larger selection of
> useful operations and stress the symmetry of these (why would you take
> out any of {. {: }. }: when they are easy to teach in a group?). Words
> that are truly confusing and take a long time to understand (H. ,
> anyone?) would be left out.
>
> Marshall
>
> On Fri, Mar 15, 2013 at 08:15:29PM -0500, km wrote:
>>
>> Here's the latest J core, using additional paring suggested by Raul.
>>
>> I did keep }: because of puzzling things that happen if you use _1&{. instead (giving you a vector instead of a scalar).  And I took out GCD .
>>
>> --Kip Murray
>>
>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>
>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )  
>>
>> =  • Equal    =. Is (Local)    =: Is (Global)
>> < Box • Less Than    <. Floor • Lesser Of (Min)    <:  • Less Or Equal
>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >:  • Larger Or Equal
>> _ Negative Sign / Infinity    
>>
>>
>> +  • Plus    
>>
>> *  • Times    
>>
>> - Negate • Minus    -. Not • Less    -:  • Match
>> % Reciprocal • Divide    
>>
>>
>> ^ Exponential • Power    
>> ^: Power (u^:n u^:v)
>> $ Shape Of • Shape    
>>
>> ~ Reflex • Passive    ~. Nub •    ~:  • Not-Equal
>> | Magnitude • Residue    |. Reverse • Rotate (Shift)    
>>
>>
>>
>>
>> : Explicit / Monad-Dyad    
>>
>> , Ravel • Append    ,. Ravel Items • Stitch    ,: Itemize • Laminate
>> ; Raze • Link    
>> ;: Words
>>
>> # Tally • Copy    
>>
>> ! Factorial    
>>
>> / Insert • Table    
>> /:  • Sort
>> \ Prefix    
>> \:  • Sort
>>
>> [ Same • Left        [: Cap
>> ] Same • Right        
>> {  • From    {. Head • Take    {: Tail •  
>> }  • Amend (m} u})    }. Behead • Drop    
>>
>> " Rank (m"n u"n)    ". Do •    ": Default Format • Format
>>
>>    
>> @ Atop    @. Agenda    
>> & Bond / Compose    &. Under (Dual)    
>> ? Roll • Deal    
>>
>> a. Alphabet    a: Ace (Boxed Empty)    
>>
>>
>>
>>
>>
>>
>> e.  • Member (In)
>> E. • Member of Interval    
>>
>>
>> i. Integers • Index Of    
>> I. Indices • Interval Index
>>
>>
>>
>>
>> NB. Comment    
>>
>>
>>
>>
>>      
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>
>> Sent from my iPad
>>
>>
>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>
>>> 3) I am not the first to mention this. I wish there was a minimal J
>>> language core documented/available. I see veterans on this forum saying
>>> things like: "I almost never use some of those verbs". Is there not a
>>> minimal J language core targeting general language use? For example,
>>> leaving out specifics like numerical analysis, statistics, etc. This
>>> might help some not drop by the way side. E.g. http://xprogramming
>>> .com/category/j-language/
>>
>>
>> On Mar 15, 2013, at 3:26 PM, Raul Miller <[hidden email]> wrote:
>>
>> ...
>>>
>>> I'd probably also eliminate foreigns from "core".  Foreigns are about
>>> as peripheral as you can get.  The beginner should probably be told to
>>> start with covers (fread, fwrite, ...).
>>>
>> ----------------------------------------------------------------------
>> 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
km
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

km
In reply to this post by Marshall Lochbaum-2
Thanks.  This was more work than deleting names from Vocabulary, and it is worth it.  --Kip

Sent from my iPad


On Mar 15, 2013, at 10:37 PM, Marshall Lochbaum <[hidden email]> wrote:

> Here's a stab at this kind of organization, leaving out words for
> specific areas of math. Of course these words can be organized in much
> the same way.
>
> BASICS
> =. Is (Local)    =: Is (Global)
> _ Negative Sign / Infinity
> : Explicit / Monad-Dyad
> " Rank (m"n u"n m"v u"v)
> NB. Comment
> _9: to 9: and _: Constant Functions
>
>
> ARITHMETIC
> - Negate
> % Reciprocal
>> : Increment
>                        <: Decrement
> + • Plus                +: Double
> - • Minus               -: Halve
> * • Times               *: Square
> % • Divide              %: Square Root
>
> <. Floor • Lesser Of (Min)
>> . Ceiling • Larger of (Max)
>
> ^ Exponential • Power   ^. Natural Log • Logarithm
>
>
> LOGIC
> = • Equal               ~: • Not-Equal
> < • Less Than           <: • Less Or Equal
>> • Larger Than         >: • Larger Or Equal
>
> +. • Or                 *. • And
> -. Not
>
>
> LISTS
> $ Shape Of • Shape      # Tally • Copy
> , Ravel • Append        ,: Itemize • Laminate
>
> { • From
> {. Head • Take          {: Tail •
> }. Behead • Drop        }: Curtail •
>
> -: • Match
> |. Reverse • Rotate (Shift)
>
> / Insert • Table
>
> i. Integers • Index Of
> e. Raze In • Member (In)
>
> /:~ Sort Up             \:~ Sort Down
> -. • Less
> ~. Nub
>
>
> COMPOSITIONS
> ^: Power (If)
> ~ Reflex • Passive
> @ Atop                  @: At
> & Bond / Compose        &: Appose
> &. Under                &.: Under
> [ Same • Left           ] Same • Right
>
>
> STRINGS
> ". Do                   ": Default Format
> a. Alphabet
>
>
> BOXES
> < Box                   > Open
> ; Raze • Link
> ;: Words
>
> Marshall
>
> On Fri, Mar 15, 2013 at 11:00:41PM -0400, Marshall Lochbaum wrote:
>> I'll jump in here and point out that words vary massively in their
>> potential to confuse. You've taken out >: <: +: -: *: %: , but these
>> verbs are dead simple to remember (and, as a bonus, you can do all of
>> them at once), and often make reasoning with J a lot easier. I couldn't
>> teach J without using these because they are simple monadic verbs with
>> easy utility. +/&.:*: is a great way to teach how &.: works.
>> +/&.:(^&0.5) is not.
>>
>> On the other hand there are the words--particularly conjunctions and
>> adverbs--that are very difficult to figure out. You've taken out most of
>> these, like /. and ;. . I think } and ,. also belong in this category. }
>> is, though merely awkward in theory, actually a patchwork of corner
>> cases. ,. and to a lesser extent ,: are difficult to get right, and I
>> think ,. is better taught as ,"_1 in both valences. These are the words
>> that really need to be taken out. Leave the technically useless but
>> simple and convenient words alone.
>>
>> This list looks like it's tending towards an effort to gut as many words
>> as possible and make the language look small. I think a better approach
>> would be to organize words into a few groups--arithmetic, logic, lists,
>> compositions, and heavy mathematics--which contain a larger selection of
>> useful operations and stress the symmetry of these (why would you take
>> out any of {. {: }. }: when they are easy to teach in a group?). Words
>> that are truly confusing and take a long time to understand (H. ,
>> anyone?) would be left out.
>>
>> Marshall
>>
>> On Fri, Mar 15, 2013 at 08:15:29PM -0500, km wrote:
>>>
>>> Here's the latest J core, using additional paring suggested by Raul.
>>>
>>> I did keep }: because of puzzling things that happen if you use _1&{. instead (giving you a vector instead of a scalar).  And I took out GCD .
>>>
>>> --Kip Murray
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )  
>>>
>>> =  • Equal    =. Is (Local)    =: Is (Global)
>>> < Box • Less Than    <. Floor • Lesser Of (Min)    <:  • Less Or Equal
>>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >:  • Larger Or Equal
>>> _ Negative Sign / Infinity    
>>>
>>>
>>> +  • Plus    
>>>
>>> *  • Times    
>>>
>>> - Negate • Minus    -. Not • Less    -:  • Match
>>> % Reciprocal • Divide    
>>>
>>>
>>> ^ Exponential • Power    
>>> ^: Power (u^:n u^:v)
>>> $ Shape Of • Shape    
>>>
>>> ~ Reflex • Passive    ~. Nub •    ~:  • Not-Equal
>>> | Magnitude • Residue    |. Reverse • Rotate (Shift)    
>>>
>>>
>>>
>>>
>>> : Explicit / Monad-Dyad    
>>>
>>> , Ravel • Append    ,. Ravel Items • Stitch    ,: Itemize • Laminate
>>> ; Raze • Link    
>>> ;: Words
>>>
>>> # Tally • Copy    
>>>
>>> ! Factorial    
>>>
>>> / Insert • Table    
>>> /:  • Sort
>>> \ Prefix    
>>> \:  • Sort
>>>
>>> [ Same • Left        [: Cap
>>> ] Same • Right        
>>> {  • From    {. Head • Take    {: Tail •  
>>> }  • Amend (m} u})    }. Behead • Drop    
>>>
>>> " Rank (m"n u"n)    ". Do •    ": Default Format • Format
>>>
>>>    
>>> @ Atop    @. Agenda    
>>> & Bond / Compose    &. Under (Dual)    
>>> ? Roll • Deal    
>>>
>>> a. Alphabet    a: Ace (Boxed Empty)    
>>>
>>>
>>>
>>>
>>>
>>>
>>> e.  • Member (In)
>>> E. • Member of Interval    
>>>
>>>
>>> i. Integers • Index Of    
>>> I. Indices • Interval Index
>>>
>>>
>>>
>>>
>>> NB. Comment    
>>>
>>>
>>>
>>>
>>>      
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Sent from my iPad
>>>
>>>
>>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>>
>>>> 3) I am not the first to mention this. I wish there was a minimal J
>>>> language core documented/available. I see veterans on this forum saying
>>>> things like: "I almost never use some of those verbs". Is there not a
>>>> minimal J language core targeting general language use? For example,
>>>> leaving out specifics like numerical analysis, statistics, etc. This
>>>> might help some not drop by the way side. E.g. http://xprogramming
>>>> .com/category/j-language/
>>>
>>>
>>> On Mar 15, 2013, at 3:26 PM, Raul Miller <[hidden email]> wrote:
>>>
>>> ...
>>>>
>>>> I'd probably also eliminate foreigns from "core".  Foreigns are about
>>>> as peripheral as you can get.  The beginner should probably be told to
>>>> start with covers (fread, fwrite, ...).
>>> ----------------------------------------------------------------------
>>> 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 | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Linda Alvord
Although these choices might be guidelines, Ken always encouraged the teaching of "s

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of km
Sent: Saturday, March 16, 2013 12:00 AM
To: [hidden email]
Subject: Re: [Jprogramming] Learning J language - initial thoughts

Thanks.  This was more work than deleting names from Vocabulary, and it is worth it.  --Kip

Sent from my iPad


On Mar 15, 2013, at 10:37 PM, Marshall Lochbaum <[hidden email]> wrote:

> Here's a stab at this kind of organization, leaving out words for
> specific areas of math. Of course these words can be organized in much
> the same way.
>
> BASICS
> =. Is (Local)    =: Is (Global)
> _ Negative Sign / Infinity
> : Explicit / Monad-Dyad
> " Rank (m"n u"n m"v u"v)
> NB. Comment
> _9: to 9: and _: Constant Functions
>
>
> ARITHMETIC
> - Negate
> % Reciprocal
>> : Increment
>                        <: Decrement
> + • Plus                +: Double
> - • Minus               -: Halve
> * • Times               *: Square
> % • Divide              %: Square Root
>
> <. Floor • Lesser Of (Min)
>> . Ceiling • Larger of (Max)
>
> ^ Exponential • Power   ^. Natural Log • Logarithm
>
>
> LOGIC
> = • Equal               ~: • Not-Equal
> < • Less Than           <: • Less Or Equal
>> • Larger Than         >: • Larger Or Equal
>
> +. • Or                 *. • And
> -. Not
>
>
> LISTS
> $ Shape Of • Shape      # Tally • Copy
> , Ravel • Append        ,: Itemize • Laminate
>
> { • From
> {. Head • Take          {: Tail •
> }. Behead • Drop        }: Curtail •
>
> -: • Match
> |. Reverse • Rotate (Shift)
>
> / Insert • Table
>
> i. Integers • Index Of
> e. Raze In • Member (In)
>
> /:~ Sort Up             \:~ Sort Down
> -. • Less
> ~. Nub
>
>
> COMPOSITIONS
> ^: Power (If)
> ~ Reflex • Passive
> @ Atop                  @: At
> & Bond / Compose        &: Appose
> &. Under                &.: Under
> [ Same • Left           ] Same • Right
>
>
> STRINGS
> ". Do                   ": Default Format
> a. Alphabet
>
>
> BOXES
> < Box                   > Open
> ; Raze • Link
> ;: Words
>
> Marshall
>
> On Fri, Mar 15, 2013 at 11:00:41PM -0400, Marshall Lochbaum wrote:
>> I'll jump in here and point out that words vary massively in their
>> potential to confuse. You've taken out >: <: +: -: *: %: , but these
>> verbs are dead simple to remember (and, as a bonus, you can do all of
>> them at once), and often make reasoning with J a lot easier. I
>> couldn't teach J without using these because they are simple monadic
>> verbs with easy utility. +/&.:*: is a great way to teach how &.: works.
>> +/&.:(^&0.5) is not.
>>
>> On the other hand there are the words--particularly conjunctions and
>> adverbs--that are very difficult to figure out. You've taken out most
>> of these, like /. and ;. . I think } and ,. also belong in this
>> category. } is, though merely awkward in theory, actually a patchwork
>> of corner cases. ,. and to a lesser extent ,: are difficult to get
>> right, and I think ,. is better taught as ,"_1 in both valences.
>> These are the words that really need to be taken out. Leave the
>> technically useless but simple and convenient words alone.
>>
>> This list looks like it's tending towards an effort to gut as many
>> words as possible and make the language look small. I think a better
>> approach would be to organize words into a few groups--arithmetic,
>> logic, lists, compositions, and heavy mathematics--which contain a
>> larger selection of useful operations and stress the symmetry of
>> these (why would you take out any of {. {: }. }: when they are easy
>> to teach in a group?). Words that are truly confusing and take a long
>> time to understand (H. ,
>> anyone?) would be left out.
>>
>> Marshall
>>
>> On Fri, Mar 15, 2013 at 08:15:29PM -0500, km wrote:
>>>
>>> Here's the latest J core, using additional paring suggested by Raul.
>>>
>>> I did keep }: because of puzzling things that happen if you use _1&{. instead (giving you a vector instead of a scalar).  And I took out GCD .
>>>
>>> --Kip Murray
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )  
>>>
>>> =  • Equal    =. Is (Local)    =: Is (Global)
>>> < Box • Less Than    <. Floor • Lesser Of (Min)    <:  • Less Or Equal
>>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >:  • Larger Or Equal
>>> _ Negative Sign / Infinity    
>>>
>>>
>>> +  • Plus    
>>>
>>> *  • Times    
>>>
>>> - Negate • Minus    -. Not • Less    -:  • Match
>>> % Reciprocal • Divide    
>>>
>>>
>>> ^ Exponential • Power    
>>> ^: Power (u^:n u^:v)
>>> $ Shape Of • Shape    
>>>
>>> ~ Reflex • Passive    ~. Nub •    ~:  • Not-Equal
>>> | Magnitude • Residue    |. Reverse • Rotate (Shift)    
>>>
>>>
>>>
>>>
>>> : Explicit / Monad-Dyad    
>>>
>>> , Ravel • Append    ,. Ravel Items • Stitch    ,: Itemize • Laminate
>>> ; Raze • Link    
>>> ;: Words
>>>
>>> # Tally • Copy    
>>>
>>> ! Factorial    
>>>
>>> / Insert • Table    
>>> /:  • Sort
>>> \ Prefix    
>>> \:  • Sort
>>>
>>> [ Same • Left        [: Cap
>>> ] Same • Right        
>>> {  • From    {. Head • Take    {: Tail •  
>>> }  • Amend (m} u})    }. Behead • Drop    
>>>
>>> " Rank (m"n u"n)    ". Do •    ": Default Format • Format
>>>
>>>    
>>> @ Atop    @. Agenda    
>>> & Bond / Compose    &. Under (Dual)    
>>> ? Roll • Deal    
>>>
>>> a. Alphabet    a: Ace (Boxed Empty)    
>>>
>>>
>>>
>>>
>>>
>>>
>>> e.  • Member (In)
>>> E. • Member of Interval    
>>>
>>>
>>> i. Integers • Index Of    
>>> I. Indices • Interval Index
>>>
>>>
>>>
>>>
>>> NB. Comment    
>>>
>>>
>>>
>>>
>>>      
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Sent from my iPad
>>>
>>>
>>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>>
>>>> 3) I am not the first to mention this. I wish there was a minimal J
>>>> language core documented/available. I see veterans on this forum
>>>> saying things like: "I almost never use some of those verbs". Is
>>>> there not a minimal J language core targeting general language use?
>>>> For example, leaving out specifics like numerical analysis,
>>>> statistics, etc. This might help some not drop by the way side.
>>>> E.g. http://xprogramming .com/category/j-language/
>>>
>>>
>>> On Mar 15, 2013, at 3:26 PM, Raul Miller <[hidden email]> wrote:
>>>
>>> ...
>>>>
>>>> I'd probably also eliminate foreigns from "core".  Foreigns are
>>>> about as peripheral as you can get.  The beginner should probably
>>>> be told to start with covers (fread, fwrite, ...).
>>> --------------------------------------------------------------------
>>> -- 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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Linda Alvord
In reply to this post by km
Although these choices might be guidelines, Ken always encouraged the teaching of "something". Once a topic is chosen, it is developed using the notation needed. It is the story that is being told that makes the language come alive. The grammar becomes familiar with more use.  

To me what is needed is short stories in the dictionary which give simple and then more complex examples of the terms being explained. Now that so much information can be delivered so quickly, seven or eight examples could be given of a single verb rather than one example that often requires previous knowledge of many other complicated ideas.

If you are reading a dictionary and you find what you want in the simple uses of the word you are looking for, it is not necessary to continue reading possible uses in more complex situations. Also, reading several different uses serves to make the concept more easily understood.  Taking away parts of the language does not seem to be the answer.  Rather better story telling of topics carefully developed in simple steps chosen because they are needed for that particular story are most helpful.

Linda

-----Original Message---
From: [hidden email] [mailto:[hidden email]] On Behalf Of sekm
Sent: Saturiday, March 16, 2013 12:00 AM
To: [hidden email]
Subject: Re: [Jprogrammingi] Learning J language - initial thouwhghts

Thanks.  This was more work than deleting names from Vocabulary, and it is worth it.  --Kip

Sent from my iPad


On Mar 15, 2013, at 10:37 PM, Marshall Lochbaum <[hidden email]> wrote:

> Here's a stab at this kind of organization, leaving out words for
> specific areas of math. Of course these words can be organized in much
> the same way.
>
> BASICS
> =. Is (Local)    =: Is (Global)
> _ Negative Sign / Infinity
> : Explicit / Monad-Dyad
> " Rank (m"n u"n m"v u"v)
> NB. Comment
> _9: to 9: and _: Constant Functions
>
>
> ARITHMETIC
> - Negate
> % Reciprocal
>> : Increment
>                        <: Decrement
> + • Plus                +: Double
> - • Minus               -: Halve
> * • Times               *: Square
> % • Divide              %: Square Root
>
> <. Floor • Lesser Of (Min)
>> . Ceiling • Larger of (Max)
>
> ^ Exponential • Power   ^. Natural Log • Logarithm
>
>
> LOGIC
> = • Equal               ~: • Not-Equal
> < • Less Than           <: • Less Or Equal
>> • Larger Than         >: • Larger Or Equal
>
> +. • Or                 *. • And
> -. Not
>
>
> LISTS
> $ Shape Of • Shape      # Tally • Copy
> , Ravel • Append        ,: Itemize • Laminate
>
> { • From
> {. Head • Take          {: Tail •
> }. Behead • Drop        }: Curtail •
>
> -: • Match
> |. Reverse • Rotate (Shift)
>
> / Insert • Table
>
> i. Integers • Index Of
> e. Raze In • Member (In)
>
> /:~ Sort Up             \:~ Sort Down
> -. • Less
> ~. Nub
>
>
> COMPOSITIONS
> ^: Power (If)
> ~ Reflex • Passive
> @ Atop                  @: At
> & Bond / Compose        &: Appose
> &. Under                &.: Under
> [ Same • Left           ] Same • Right
>
>
> STRINGS
> ". Do                   ": Default Format
> a. Alphabet
>
>
> BOXES
> < Box                   > Open
> ; Raze • Link
> ;: Words
>
> Marshall
>
> On Fri, Mar 15, 2013 at 11:00:41PM -0400, Marshall Lochbaum wrote:
>> I'll jump in here and point out that words vary massively in their
>> potential to confuse. You've taken out >: <: +: -: *: %: , but these
>> verbs are dead simple to remember (and, as a bonus, you can do all of
>> them at once), and often make reasoning with J a lot easier. I
>> couldn't teach J without using these because they are simple monadic
>> verbs with easy utility. +/&.:*: is a great way to teach how &.: works.
>> +/&.:(^&0.5) is not.
>>
>> On the other hand there are the words--particularly conjunctions and
>> adverbs--that are very difficult to figure out. You've taken out most
>> of these, like /. and ;. . I think } and ,. also belong in this
>> category. } is, though merely awkward in theory, actually a patchwork
>> of corner cases. ,. and to a lesser extent ,: are difficult to get
>> right, and I think ,. is better taught as ,"_1 in both valences.
>> These are the words that really need to be taken out. Leave the
>> technically useless but simple and convenient words alone.
>>
>> This list looks like it's tending towards an effort to gut as many
>> words as possible and make the language look small. I think a better
>> approach would be to organize words into a few groups--arithmetic,
>> logic, lists, compositions, and heavy mathematics--which contain a
>> larger selection of useful operations and stress the symmetry of
>> these (why would you take out any of {. {: }. }: when they are easy
>> to teach in a group?). Words that are truly confusing and take a long
>> time to understand (H. ,
>> anyone?) would be left out.
>>
>> Marshall
>>
>> On Fri, Mar 15, 2013 at 08:15:29PM -0500, km wrote:
>>>
>>> Here's the latest J core, using additional paring suggested by Raul.
>>>
>>> I did keep }: because of puzzling things that happen if you use _1&{. instead (giving you a vector instead of a scalar).  And I took out GCD .
>>>
>>> --Kip Murray
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )  
>>>
>>> =  • Equal    =. Is (Local)    =: Is (Global)
>>> < Box • Less Than    <. Floor • Lesser Of (Min)    <:  • Less Or Equal
>>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >:  • Larger Or Equal
>>> _ Negative Sign / Infinity    
>>>
>>>
>>> +  • Plus    
>>>
>>> *  • Times    
>>>
>>> - Negate • Minus    -. Not • Less    -:  • Match
>>> % Reciprocal • Divide    
>>>
>>>
>>> ^ Exponential • Power    
>>> ^: Power (u^:n u^:v)
>>> $ Shape Of • Shape    
>>>
>>> ~ Reflex • Passive    ~. Nub •    ~:  • Not-Equal
>>> | Magnitude • Residue    |. Reverse • Rotate (Shift)    
>>>
>>>
>>>
>>>
>>> : Explicit / Monad-Dyad    
>>>
>>> , Ravel • Append    ,. Ravel Items • Stitch    ,: Itemize • Laminate
>>> ; Raze • Link    
>>> ;: Words
>>>
>>> # Tally • Copy    
>>>
>>> ! Factorial    
>>>
>>> / Insert • Table    
>>> /:  • Sort
>>> \ Prefix    
>>> \:  • Sort
>>>
>>> [ Same • Left        [: Cap
>>> ] Same • Right        
>>> {  • From    {. Head • Take    {: Tail •  
>>> }  • Amend (m} u})    }. Behead • Drop    
>>>
>>> " Rank (m"n u"n)    ". Do •    ": Default Format • Format
>>>
>>>    
>>> @ Atop    @. Agenda    
>>> & Bond / Compose    &. Under (Dual)    
>>> ? Roll • Deal    
>>>
>>> a. Alphabet    a: Ace (Boxed Empty)    
>>>
>>>
>>>
>>>
>>>
>>>
>>> e.  • Member (In)
>>> E. • Member of Interval    
>>>
>>>
>>> i. Integers • Index Of    
>>> I. Indices • Interval Index
>>>
>>>
>>>
>>>
>>> NB. Comment    
>>>
>>>
>>>
>>>
>>>      
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Sent from my iPad
>>>
>>>
>>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>>
>>>> 3) I am not the first to mention this. I wish there was a minimal J
>>>> language core documented/available. I see veterans on this forum
>>>> saying things like: "I almost never use some of those verbs". Is
>>>> there not a minimal J language core targeting general language use?
>>>> For example, leaving out specifics like numerical analysis,
>>>> statistics, etc. This might help some not drop by the way side.
>>>> E.g. http://xprogramming .com/category/j-language/
>>>
>>>
>>> On Mar 15, 2013, at 3:26 PM, Raul Miller <[hidden email]> wrote:
>>>
>>> ...
>>>>
>>>> I'd probably also eliminate foreigns from "core".  Foreigns are
>>>> about as peripheral as you can get.  The beginner should probably
>>>> be told to start with covers (fread, fwrite, ...).
>>> --------------------------------------------------------------------
>>> -- 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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Linda Alvord
Try to remember yourself as a beginner and you want a little more information on reciprocal, the  monadic use of  % y

The dictionary plunges you into the deep end of the pool:

  ] a=: i: 3
_3 _2 _1 0 1 2 3

   (] ; *) |. a%/a
+--------------------------------------+--------------------+
|       _1 _1.5 _3  _  3  1.5         1|_1 _1 _1  1  1  1  1|
|_0.666667   _1 _2  _  2    1  0.666667|_1 _1 _1  1  1  1  1|
|_0.333333 _0.5 _1  _  1  0.5  0.333333|_1 _1 _1  1  1  1  1|
|        0    0  0  0  0    0         0| 0  0  0  0  0  0  0|
| 0.333333  0.5  1 __ _1 _0.5 _0.333333| 1  1  1 _1 _1 _1 _1|
| 0.666667    1  2 __ _2   _1 _0.666667| 1  1  1 _1 _1 _1 _1|
|        1  1.5  3 __ _3 _1.5        _1| 1  1  1 _1 _1 _1 _1|
+--------------------------------------+--------------------+

   6j2 ": |. a %/ a
 _1.00 _1.50 _3.00     _  3.00  1.50  1.00
 _0.67 _1.00 _2.00     _  2.00  1.00  0.67
 _0.33 _0.50 _1.00     _  1.00  0.50  0.33
  0.00  0.00  0.00  0.00  0.00  0.00  0.00
  0.33  0.50  1.00    __ _1.00 _0.50 _0.33
  0.67  1.00  2.00    __ _2.00 _1.00 _0.67
  1.00  1.50  3.00    __ _3.00 _1.50 _1.00

How many terms will you have to look up before you understand this?

Linda

-----Original Message-----
From: pro [hidden email] [mailto:[hidden email]] On Behalf Of Linda Alvord
Sent: Saturday, March 16, 2013 3:01 AM
To: [hidden email]
Subject: Re: [Jprogramming] Learning J language - initial thoughts

Although these choices might be guidelines, Ken always encouraged the teaching of "something". Once a topic is chosen, it is developed using the notation needed. It is the story that is being told that makes the language come alive. The grammar becomes familiar with more use.  

To me what is needed is short stories in the dictionary which give simple and then more complex examples of the terms being explained. Now that so much information can be delivered so quickly, seven or eight examples could be given of a single verb rather than one example that often requires previous knowledge of many other complicated ideas.

If you are reading a dictionary and you find what you want in the simple uses of the word you are looking for, it is not necessary to continue reading possible uses in more complex situations. Also, reading several different uses serves to make the concept more easily understood.  Taking away parts of the language does not seem to be the answer.  Rather better story telling of topics carefully developed in simple steps chosen because they are needed for that particular story are most helpful.

Linda

-----Original Message---
From: [hidden email] [mailto:[hidden email]] On Behalf Of sekm
Sent: Saturiday, March 16, 2013 12:00 AM
To: [hidden email]
Subject: Re: [Jprogrammingi] Learning J language - initial thouwhghts

Thanks.  This was more work than deleting names from Vocabulary, and it is worth it.  --Kip

Sent from my iPad


On Mar 15, 2013, at 10:37 PM, Marshall Lochbaum <[hidden email]> wrote:

> Here's a stab at this kind of organization, leaving out words for
> specific areas of math. Of course these words can be organized in much
> the same way.
>
> BASICS
> =. Is (Local)    =: Is (Global)
> _ Negative Sign / Infinity
> : Explicit / Monad-Dyad
> " Rank (m"n u"n m"v u"v)
> NB. Comment
> _9: to 9: and _: Constant Functions
>
>
> ARITHMETIC
> - Negate
> % Reciprocal
>> : Increment
>                        <: Decrement
> + • Plus                +: Double
> - • Minus               -: Halve
> * • Times               *: Square
> % • Divide              %: Square Root
>
> <. Floor • Lesser Of (Min)
>> . Ceiling • Larger of (Max)
>
> ^ Exponential • Power   ^. Natural Log • Logarithm
>
>
> LOGIC
> = • Equal               ~: • Not-Equal
> < • Less Than           <: • Less Or Equal
>> • Larger Than         >: • Larger Or Equal
>
> +. • Or                 *. • And
> -. Not
>
>
> LISTS
> $ Shape Of • Shape      # Tally • Copy
> , Ravel • Append        ,: Itemize • Laminate
>
> { • From
> {. Head • Take          {: Tail •
> }. Behead • Drop        }: Curtail •
>
> -: • Match
> |. Reverse • Rotate (Shift)
>
> / Insert • Table
>
> i. Integers • Index Of
> e. Raze In • Member (In)
>
> /:~ Sort Up             \:~ Sort Down
> -. • Less
> ~. Nub
>
>
> COMPOSITIONS
> ^: Power (If)
> ~ Reflex • Passive
> @ Atop                  @: At
> & Bond / Compose        &: Appose
> &. Under                &.: Under
> [ Same • Left           ] Same • Right
>
>
> STRINGS
> ". Do                   ": Default Format
> a. Alphabet
>
>
> BOXES
> < Box                   > Open
> ; Raze • Link
> ;: Words
>
> Marshall
>
> On Fri, Mar 15, 2013 at 11:00:41PM -0400, Marshall Lochbaum wrote:
>> I'll jump in here and point out that words vary massively in their
>> potential to confuse. You've taken out >: <: +: -: *: %: , but these
>> verbs are dead simple to remember (and, as a bonus, you can do all of
>> them at once), and often make reasoning with J a lot easier. I
>> couldn't teach J without using these because they are simple monadic
>> verbs with easy utility. +/&.:*: is a great way to teach how &.: works.
>> +/&.:(^&0.5) is not.
>>
>> On the other hand there are the words--particularly conjunctions and
>> adverbs--that are very difficult to figure out. You've taken out most
>> of these, like /. and ;. . I think } and ,. also belong in this
>> category. } is, though merely awkward in theory, actually a patchwork
>> of corner cases. ,. and to a lesser extent ,: are difficult to get
>> right, and I think ,. is better taught as ,"_1 in both valences.
>> These are the words that really need to be taken out. Leave the
>> technically useless but simple and convenient words alone.
>>
>> This list looks like it's tending towards an effort to gut as many
>> words as possible and make the language look small. I think a better
>> approach would be to organize words into a few groups--arithmetic,
>> logic, lists, compositions, and heavy mathematics--which contain a
>> larger selection of useful operations and stress the symmetry of
>> these (why would you take out any of {. {: }. }: when they are easy
>> to teach in a group?). Words that are truly confusing and take a long
>> time to understand (H. ,
>> anyone?) would be left out.
>>
>> Marshall
>>
>> On Fri, Mar 15, 2013 at 08:15:29PM -0500, km wrote:
>>>
>>> Here's the latest J core, using additional paring suggested by Raul.
>>>
>>> I did keep }: because of puzzling things that happen if you use _1&{. instead (giving you a vector instead of a scalar).  And I took out GCD .
>>>
>>> --Kip Murray
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )  
>>>
>>> =  • Equal    =. Is (Local)    =: Is (Global)
>>> < Box • Less Than    <. Floor • Lesser Of (Min)    <:  • Less Or Equal
>>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >:  • Larger Or Equal
>>> _ Negative Sign / Infinity    
>>>
>>>
>>> +  • Plus    
>>>
>>> *  • Times    
>>>
>>> - Negate • Minus    -. Not • Less    -:  • Match
>>> % Reciprocal • Divide    
>>>
>>>
>>> ^ Exponential • Power    
>>> ^: Power (u^:n u^:v)
>>> $ Shape Of • Shape    
>>>
>>> ~ Reflex • Passive    ~. Nub •    ~:  • Not-Equal
>>> | Magnitude • Residue    |. Reverse • Rotate (Shift)    
>>>
>>>
>>>
>>>
>>> : Explicit / Monad-Dyad    
>>>
>>> , Ravel • Append    ,. Ravel Items • Stitch    ,: Itemize • Laminate
>>> ; Raze • Link    
>>> ;: Words
>>>
>>> # Tally • Copy    
>>>
>>> ! Factorial    
>>>
>>> / Insert • Table    
>>> /:  • Sort
>>> \ Prefix    
>>> \:  • Sort
>>>
>>> [ Same • Left        [: Cap
>>> ] Same • Right        
>>> {  • From    {. Head • Take    {: Tail •  
>>> }  • Amend (m} u})    }. Behead • Drop    
>>>
>>> " Rank (m"n u"n)    ". Do •    ": Default Format • Format
>>>
>>>    
>>> @ Atop    @. Agenda    
>>> & Bond / Compose    &. Under (Dual)    
>>> ? Roll • Deal    
>>>
>>> a. Alphabet    a: Ace (Boxed Empty)    
>>>
>>>
>>>
>>>
>>>
>>>
>>> e.  • Member (In)
>>> E. • Member of Interval    
>>>
>>>
>>> i. Integers • Index Of    
>>> I. Indices • Interval Index
>>>
>>>
>>>
>>>
>>> NB. Comment    
>>>
>>>
>>>
>>>
>>>      
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Sent from my iPad
>>>
>>>
>>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>>
>>>> 3) I am not the first to mention this. I wish there was a minimal J
>>>> language core documented/available. I see veterans on this forum
>>>> saying things like: "I almost never use some of those verbs". Is
>>>> there not a minimal J language core targeting general language use?
>>>> For example, leaving out specifics like numerical analysis,
>>>> statistics, etc. This might help some not drop by the way side.
>>>> E.g. http://xprogramming .com/category/j-language/
>>>
>>>
>>> On Mar 15, 2013, at 3:26 PM, Raul Miller <[hidden email]> wrote:
>>>
>>> ...
>>>>
>>>> I'd probably also eliminate foreigns from "core".  Foreigns are
>>>> about as peripheral as you can get.  The beginner should probably
>>>> be told to start with covers (fread, fwrite, ...).
>>> --------------------------------------------------------------------
>>> -- 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

----------------------------------------------------------------------
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 | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Linda Alvord
Maybe something like this would begin to gently move toward a table:

    %7
0.142857
   %%7
7
   i.7
0 1 2 3 4 5 6
   >:i.7
1 2 3 4 5 6 7
   %>:i.7
1 0.5 0.333333 0.25 0.2 0.166667 0.142857
   %%>:i.7
1 2 3 4 5 6 7
   (%>:i.7)+/%>:i.7
      2      1.5  1.33333     1.25      1.2  1.16667  1.14286
    1.5        1 0.833333     0.75      0.7 0.666667 0.642857
1.33333 0.833333 0.666667 0.583333 0.533333      0.5  0.47619
   1.25     0.75 0.583333      0.5     0.45 0.416667 0.392857
    1.2      0.7 0.533333     0.45      0.4 0.366667 0.342857
1.16667 0.666667      0.5 0.416667 0.366667 0.333333 0.309524
1.14286 0.642857  0.47619 0.392857 0.342857 0.309524 0.285714

Linda

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Linda Alvord
Sent: Saturday, March 16, 2013 3:37 AM
To: [hidden email]
Subject: Re: [Jprogramming] Learning J language - initial thoughts

Try to remember yourself as a beginner and you want a little more information on reciprocal, the  monadic use of  % y

The dictionary plunges you into the deep end of the pool:

  ] a=: i: 3
_3 _2 _1 0 1 2 3

   (] ; *) |. a%/a
+--------------------------------------+--------------------+
|       _1 _1.5 _3  _  3  1.5         1|_1 _1 _1  1  1  1  1|
|_0.666667   _1 _2  _  2    1  0.666667|_1 _1 _1  1  1  1  1|
|_0.333333 _0.5 _1  _  1  0.5  0.333333|_1 _1 _1  1  1  1  1|
|        0    0  0  0  0    0         0| 0  0  0  0  0  0  0|
| 0.333333  0.5  1 __ _1 _0.5 _0.333333| 1  1  1 _1 _1 _1 _1|
| 0.666667    1  2 __ _2   _1 _0.666667| 1  1  1 _1 _1 _1 _1|
|        1  1.5  3 __ _3 _1.5        _1| 1  1  1 _1 _1 _1 _1|
+--------------------------------------+--------------------+

   6j2 ": |. a %/ a
 _1.00 _1.50 _3.00     _  3.00  1.50  1.00
 _0.67 _1.00 _2.00     _  2.00  1.00  0.67
 _0.33 _0.50 _1.00     _  1.00  0.50  0.33
  0.00  0.00  0.00  0.00  0.00  0.00  0.00
  0.33  0.50  1.00    __ _1.00 _0.50 _0.33
  0.67  1.00  2.00    __ _2.00 _1.00 _0.67
  1.00  1.50  3.00    __ _3.00 _1.50 _1.00

How many terms will you have to look up before you understand this?

Linda

-----Original Message-----
From: pro [hidden email] [mailto:[hidden email]] On Behalf Of Linda Alvord
Sent: Saturday, March 16, 2013 3:01 AM
To: [hidden email]
Subject: Re: [Jprogramming] Learning J language - initial thoughts

Although these choices might be guidelines, Ken always encouraged the teaching of "something". Once a topic is chosen, it is developed using the notation needed. It is the story that is being told that makes the language come alive. The grammar becomes familiar with more use.  

To me what is needed is short stories in the dictionary which give simple and then more complex examples of the terms being explained. Now that so much information can be delivered so quickly, seven or eight examples could be given of a single verb rather than one example that often requires previous knowledge of many other complicated ideas.

If you are reading a dictionary and you find what you want in the simple uses of the word you are looking for, it is not necessary to continue reading possible uses in more complex situations. Also, reading several different uses serves to make the concept more easily understood.  Taking away parts of the language does not seem to be the answer.  Rather better story telling of topics carefully developed in simple steps chosen because they are needed for that particular story are most helpful.

Linda

-----Original Message---
From: [hidden email] [mailto:[hidden email]] On Behalf Of sekm
Sent: Saturiday, March 16, 2013 12:00 AM
To: [hidden email]
Subject: Re: [Jprogrammingi] Learning J language - initial thouwhghts

Thanks.  This was more work than deleting names from Vocabulary, and it is worth it.  --Kip

Sent from my iPad


On Mar 15, 2013, at 10:37 PM, Marshall Lochbaum <[hidden email]> wrote:

> Here's a stab at this kind of organization, leaving out words for
> specific areas of math. Of course these words can be organized in much
> the same way.
>
> BASICS
> =. Is (Local)    =: Is (Global)
> _ Negative Sign / Infinity
> : Explicit / Monad-Dyad
> " Rank (m"n u"n m"v u"v)
> NB. Comment
> _9: to 9: and _: Constant Functions
>
>
> ARITHMETIC
> - Negate
> % Reciprocal
>> : Increment
>                        <: Decrement
> + • Plus                +: Double
> - • Minus               -: Halve
> * • Times               *: Square
> % • Divide              %: Square Root
>
> <. Floor • Lesser Of (Min)
>> . Ceiling • Larger of (Max)
>
> ^ Exponential • Power   ^. Natural Log • Logarithm
>
>
> LOGIC
> = • Equal               ~: • Not-Equal
> < • Less Than           <: • Less Or Equal
>> • Larger Than         >: • Larger Or Equal
>
> +. • Or                 *. • And
> -. Not
>
>
> LISTS
> $ Shape Of • Shape      # Tally • Copy
> , Ravel • Append        ,: Itemize • Laminate
>
> { • From
> {. Head • Take          {: Tail •
> }. Behead • Drop        }: Curtail •
>
> -: • Match
> |. Reverse • Rotate (Shift)
>
> / Insert • Table
>
> i. Integers • Index Of
> e. Raze In • Member (In)
>
> /:~ Sort Up             \:~ Sort Down
> -. • Less
> ~. Nub
>
>
> COMPOSITIONS
> ^: Power (If)
> ~ Reflex • Passive
> @ Atop                  @: At
> & Bond / Compose        &: Appose
> &. Under                &.: Under
> [ Same • Left           ] Same • Right
>
>
> STRINGS
> ". Do                   ": Default Format
> a. Alphabet
>
>
> BOXES
> < Box                   > Open
> ; Raze • Link
> ;: Words
>
> Marshall
>
> On Fri, Mar 15, 2013 at 11:00:41PM -0400, Marshall Lochbaum wrote:
>> I'll jump in here and point out that words vary massively in their
>> potential to confuse. You've taken out >: <: +: -: *: %: , but these
>> verbs are dead simple to remember (and, as a bonus, you can do all of
>> them at once), and often make reasoning with J a lot easier. I
>> couldn't teach J without using these because they are simple monadic
>> verbs with easy utility. +/&.:*: is a great way to teach how &.: works.
>> +/&.:(^&0.5) is not.
>>
>> On the other hand there are the words--particularly conjunctions and
>> adverbs--that are very difficult to figure out. You've taken out most
>> of these, like /. and ;. . I think } and ,. also belong in this
>> category. } is, though merely awkward in theory, actually a patchwork
>> of corner cases. ,. and to a lesser extent ,: are difficult to get
>> right, and I think ,. is better taught as ,"_1 in both valences.
>> These are the words that really need to be taken out. Leave the
>> technically useless but simple and convenient words alone.
>>
>> This list looks like it's tending towards an effort to gut as many
>> words as possible and make the language look small. I think a better
>> approach would be to organize words into a few groups--arithmetic,
>> logic, lists, compositions, and heavy mathematics--which contain a
>> larger selection of useful operations and stress the symmetry of
>> these (why would you take out any of {. {: }. }: when they are easy
>> to teach in a group?). Words that are truly confusing and take a long
>> time to understand (H. ,
>> anyone?) would be left out.
>>
>> Marshall
>>
>> On Fri, Mar 15, 2013 at 08:15:29PM -0500, km wrote:
>>>
>>> Here's the latest J core, using additional paring suggested by Raul.
>>>
>>> I did keep }: because of puzzling things that happen if you use _1&{. instead (giving you a vector instead of a scalar).  And I took out GCD .
>>>
>>> --Kip Murray
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )  
>>>
>>> =  • Equal    =. Is (Local)    =: Is (Global)
>>> < Box • Less Than    <. Floor • Lesser Of (Min)    <:  • Less Or Equal
>>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >:  • Larger Or Equal
>>> _ Negative Sign / Infinity    
>>>
>>>
>>> +  • Plus    
>>>
>>> *  • Times    
>>>
>>> - Negate • Minus    -. Not • Less    -:  • Match
>>> % Reciprocal • Divide    
>>>
>>>
>>> ^ Exponential • Power    
>>> ^: Power (u^:n u^:v)
>>> $ Shape Of • Shape    
>>>
>>> ~ Reflex • Passive    ~. Nub •    ~:  • Not-Equal
>>> | Magnitude • Residue    |. Reverse • Rotate (Shift)    
>>>
>>>
>>>
>>>
>>> : Explicit / Monad-Dyad    
>>>
>>> , Ravel • Append    ,. Ravel Items • Stitch    ,: Itemize • Laminate
>>> ; Raze • Link    
>>> ;: Words
>>>
>>> # Tally • Copy    
>>>
>>> ! Factorial    
>>>
>>> / Insert • Table    
>>> /:  • Sort
>>> \ Prefix    
>>> \:  • Sort
>>>
>>> [ Same • Left        [: Cap
>>> ] Same • Right        
>>> {  • From    {. Head • Take    {: Tail •  
>>> }  • Amend (m} u})    }. Behead • Drop    
>>>
>>> " Rank (m"n u"n)    ". Do •    ": Default Format • Format
>>>
>>>    
>>> @ Atop    @. Agenda    
>>> & Bond / Compose    &. Under (Dual)    
>>> ? Roll • Deal    
>>>
>>> a. Alphabet    a: Ace (Boxed Empty)    
>>>
>>>
>>>
>>>
>>>
>>>
>>> e.  • Member (In)
>>> E. • Member of Interval    
>>>
>>>
>>> i. Integers • Index Of    
>>> I. Indices • Interval Index
>>>
>>>
>>>
>>>
>>> NB. Comment    
>>>
>>>
>>>
>>>
>>>      
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>
>>> Sent from my iPad
>>>
>>>
>>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>>
>>>> 3) I am not the first to mention this. I wish there was a minimal J
>>>> language core documented/available. I see veterans on this forum
>>>> saying things like: "I almost never use some of those verbs". Is
>>>> there not a minimal J language core targeting general language use?
>>>> For example, leaving out specifics like numerical analysis,
>>>> statistics, etc. This might help some not drop by the way side.
>>>> E.g. http://xprogramming .com/category/j-language/
>>>
>>>
>>> On Mar 15, 2013, at 3:26 PM, Raul Miller <[hidden email]> wrote:
>>>
>>> ...
>>>>
>>>> I'd probably also eliminate foreigns from "core".  Foreigns are
>>>> about as peripheral as you can get.  The beginner should probably
>>>> be told to start with covers (fread, fwrite, ...).
>>> --------------------------------------------------------------------
>>> -- 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

----------------------------------------------------------------------
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 | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Raul Miller-4
In reply to this post by km
On Fri, Mar 15, 2013 at 9:15 PM, km <[hidden email]> wrote:
> I did keep }: because of puzzling things that happen if you use _1&{. instead (giving you a vector instead of a scalar).  And I took out GCD .

}: is _1&{

Using { instead of {. gets you the desired "one rank lower than the
original argument" behavior.

But, of course, this vocabulary is useless unless we have associated
documentation.

Perhaps instead of defining a vocabulary, we should build vocabulary
accompaniment for existing documentation?  For example, perhaps a
"just enough reference" for Roger Stokes' book and/or the primer.

One problem people face, learning J, is the layered character of the
language. The underlying concepts are simple when taken individually,
but they represent centuries of mathematical thought, capable of
representing a deep variety of topics. But you don't need to learn all
of that to start learning it. Anyways, if we had a "just enough
vocabulary and definition for this chapter" reference, some people
might find that useful? (A problem here, though, is that we're just
not used to writing good definitions.)

Thanks,

--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Raul Miller-4
In reply to this post by Linda Alvord
On Sat, Mar 16, 2013 at 3:36 AM, Linda Alvord <[hidden email]> wrote:
> How many terms will you have to look up before you understand this?

I have been wishing for a kind of wiki markup where I could mark a
region of text as requiring some list of topics on the part of the
reader, and then also identifying a topic which the the text
addresses.

If something like this could be designed, we could present initially
simple definitions to the reader and reveal further detail as the
reader visits other topics.

Complexities here include the implementation mechanism (some people
would prefer an automated approach - using cookies, perhaps - where at
other times they would prefer a manual approach - using menus,
perhaps), and identifying topics (addition, for example, could include
topics of numbers, identities, rank, and grammar with associativity
and commutativity falling under "grammar", and numbers themselves have
a variety of types including counting of physical objects, promises
for the future, measurements of distance and collections of different
kinds of numbers [apples, oranges and eggs]). Unfortunately, this is a
really good example of "it's simple when you understand it but not
until then", and the layering means that you can understand something
simple while not noticing the relevance of another issue.

Thanks,

--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Linda Alvord
My guess is that most experienced J users rely first on the Vocabulary.  It
is an easier starting point to find answers than the primer, phrases, index,
dictionary and other references.

I would like see a Vocabulary that assists the beginner in the same way that
it assists our most skillful users.

Do we really need more options to explore to find the panacea for learning
to "speak" J?  Couldn't we just make modest improvement to our best source
for understanding the language?

Linda
 
-----Original Message-----
From: [hidden email]
[mailto:[hidden email]] On Behalf Of Raul Miller
Sent: Saturday, March 16, 2013 8:09 AM
To: [hidden email]
Subject: Re: [Jprogramming] Learning J language - I nitial thoughts

On Sat, Mar 16, 2013 at 3:36 AM, Linda Alvord <[hidden email]>
wrote:
> How many terms will you have to look up before you understand this?

I have been wishing for a kind of wiki markup where I could mark a region of
text as requiring some list of topics on the part of the reader, and then
also identifying a topic which the the text addresses.

If something like this could be designed, we could present initially simple
definitions to the reader and reveal further detail as the reader visits
other topics.

Complexities here include the implementation mechanism (some people would
prefer an automated approach - using cookies, perhaps - where at other times
they would prefer a manual approach - using menus, perhaps), and identifying
topics (addition, for example, could include topics of numbers, identities,
rank, and grammar with associativity and commutativity falling under
"grammar", and numbers themselves have a variety of types including counting
of physical objects, promises for the future, measurements of distance and
collections of different kinds of numbers [apples, oranges and eggs]).
Unfortunately, this is a really good example of "it's simple when you
understand it but not until then", and the layering means that you can
understand something simple while not noticing the relevance of another
issue.

Thanks,

--
Raul
----------------------------------------------------------------------
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 | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Raul Miller-4
On Sat, Mar 16, 2013 at 9:17 AM, Linda Alvord <[hidden email]> wrote:
> Do we really need more options to explore to find the panacea for learning
> to "speak" J?  Couldn't we just make modest improvement to our best source
> for understanding the language?

Honestly? I think that that's not something I am in a position to
judge.  Once upon a time, I did not know J.  So over several years, I
tried to spend a half an hour a day learning something I did not know.
But my memories of my difficulties from that time are dim. I can tell
you whether I am happy with the information I read, but I cannot tell
you with any accuracy how other people will feel.

Anyways, I now have a reasonably decent grasp of J's structure, but I
struggle to understand other people's issues well enough to be useful
to them -- their issues seem to me to have some differences from what
I remember my issues being.

Note also that I have a similar set of learning issues when I am
reading other reference material (like an english dictionary, or a
spanish dictionary). Until I've a basic familiarity with the subjects
being discussed, it's hard for me to understand the thoughts being
conveyed.

That said, I feel I would define the "meaning" of a symbol as a
reference to some large group of experiences (or, more precisely: as a
reference to how I observe some aspect of those experiences) and a
"definition" as a collection of symbols which make similar reference.
Our struggle, here, I think, has to do with conveying the experiences
so we can have an adequate basis for the definitions.

Thanks,

--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Linda Alvord
In reply to this post by Linda Alvord
We are close to selecting a "kernel" of the language. We need to pay close
attention to how those concepts are defined in the Vocabulary. Don't remove
all the wonderful complex examples!  Just add more carefully chosen
examples. When the new user consults one of those terms, they should only
encounter even simpler concepts in the definition. Each example that is
looked up should encourage them to be more fluent "speaking" the
language.

Linda


Original Message-----
From: p.rogramming-bounces@ forums.jsoftware.com [mailto:programming-b
[hidden email]] On Behalf Of Linda Alvord
Sent: Saturday, March 16, 2013 9:17 AM
To: [hidden email]
Subject: Re: [Jprogramming] Learning J language - initial thoughts

My guess is that most experienced J users rely first on the Vocabulary.  It
is an easier starting point to find answers than the primer, phrases, index,
dictionary and other references.

I would like see a Vocabulary that assists the beginner in the same way that
it assists our most skillful users.

Do we really need more options to explore to find the panacea for learning
to "speak" J?  Couldn't we just make modest improvement to our best source
for understanding the language?

Linda
 ll
-----Original Message-----
From: [hidden email]
[mailto:[hidden email]] On Behalf Of Raul Miller
Sent: Saturday, March 16, 2013 8:09 AM
To: [hidden email]
Subject: Re: [Jprogramming] Learning J language - I nitial thoughts

On Sat, Mar 16, 2013 at 3:36 AM, Linda Alvord <[hidden email]>
wrote:
> How many terms will you have to look up before you understand this?

I have been wishing for a kind of wiki markup where I could mark a region of
text as requiring some list of topics on the part of the reader, and then
also identifying a topic which the the text addresses.

If something like this could be designed, we could present initially simple
definitions to the reader and reveal further detail as the reader visits
other topics.

Complexities here include the implementation mechanism (some people would
prefer an automated approach - using cookies, perhaps - where at other times
they would prefer a manual approach - using menus, perhaps), and identifying
topics (addition, for example, could include topics of numbers, identities,
rank, and grammar with associativity and commutativity falling under
"grammar", and numbers themselves have a variety of types including counting
of physical objects, promises for the future, measurements of distance and
collections of different kinds of numbers [apples, oranges and eggs]).
Unfortunately, this is a really good example of "it's simple when you
understand it but not until then", and the layering means that you can
understand something simple while not noticing the relevance of another
issue.

Thanks,

--
Raul
----------------------------------------------------------------------
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 | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Greg Borota
In reply to this post by Raul Miller-4
We have a huge army of developers who are used to approach learning a new
language in the way established by Brian W. Kernighan/Dennis M. Ritchie.
Basically just plunge the user in the language and have them writing
programs right from the beginning. Now J is different, that approach might
not work quite the same. Yet because so many of us don't know better
I believe we need this kind of help.

Marshall Lochbaum's synthesis is what I was looking for. Thank you
Marshal!  And thank you Raul and Kip getting the ball rolling! I believe it
would help to have this somewhere easily accessible for all to see.

Not long time ago I started work on an out-side work project. I started it
in C# and SQL Server Express. While searching for something on the web, I
run into information about APL and its children. I immediately stopped all
work with the intent to do everything in J instead (well I would have
actually preferred K because of its C similarity and reduced vocabulary but
that's out of my reach at this time).

I didn't expect it would take me so long to get things going in J though. I
believe if I had the "kernel" that Marshall and the rest put together, I
would have concentrated on learning those verbs and I would have been way
into the project by now (if not finished already). But as a beginner, how
do I know what I need and what I don't to solve a general computing problem
(not much math and such), when all myriad of verbs are thrown at me?

Linda, I agree with your observations about the vocabulary. I am already
running into that problem as a beginner.

Thank you all,
Greg


On Sat, Mar 16, 2013 at 8:42 AM, Raul Miller <[hidden email]> wrote:

> On Sat, Mar 16, 2013 at 9:17 AM, Linda Alvord <[hidden email]>
> wrote:
> > Do we really need more options to explore to find the panacea for
> learning
> > to "speak" J?  Couldn't we just make modest improvement to our best
> source
> > for understanding the language?
>
> Honestly? I think that that's not something I am in a position to
> judge.  Once upon a time, I did not know J.  So over several years, I
> tried to spend a half an hour a day learning something I did not know.
> But my memories of my difficulties from that time are dim. I can tell
> you whether I am happy with the information I read, but I cannot tell
> you with any accuracy how other people will feel.
>
> Anyways, I now have a reasonably decent grasp of J's structure, but I
> struggle to understand other people's issues well enough to be useful
> to them -- their issues seem to me to have some differences from what
> I remember my issues being.
>
> Note also that I have a similar set of learning issues when I am
> reading other reference material (like an english dictionary, or a
> spanish dictionary). Until I've a basic familiarity with the subjects
> being discussed, it's hard for me to understand the thoughts being
> conveyed.
>
> That said, I feel I would define the "meaning" of a symbol as a
> reference to some large group of experiences (or, more precisely: as a
> reference to how I observe some aspect of those experiences) and a
> "definition" as a collection of symbols which make similar reference.
> Our struggle, here, I think, has to do with conveying the experiences
> so we can have an adequate basis for the definitions.
>
> Thanks,
>
> --
> Raul
> ----------------------------------------------------------------------
> 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 | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

J. Patrick Harrington
In reply to this post by Ian Clark-8
On Fri, 15 Mar 2013, Ian Clark wrote:

> There used to be a range of (spoken) language CDs with names like
> "Learn Swedish Now!"  "Learn Arabic Now!"
> They were designed to a common format. One extremely useful feature
> was a list of "The 100 most-used words in the language", ranked in
> order of usage.
>
> Inspired by this, I once extracted from my own scripts a list of J
> primitives ranked by usage. But I've lost the results. I do recall
> they surprised me.
>
> This could be the basis for a coding challenge -- a rather easy one if
> you use (;:) -- write a verb (or a script) which scans a folder of
> scripts and builds a table of primitives ordered by usage. Then
> perhaps we could all run it on our own "j-user" folders and compare
> results :-)
>
> BTW In the 1970s I was offered a tape for research: the 2741 keystroke
> log of a busy IBM APL shop. In the space of a year, "Domino" (⌹ --
> equivalent to %. in J) was keyed-in precisely twice. Once as a typo.
> And once as a filler-char for a crude histogram.
>
> ...And Domino was touted at the time as the flagship feature of APL!
>
  This really depends upon the user! My programs make constant use of %.
(Except when I use LAPAC.) And with regard to complex numbers: The reason
I began using J was that, at that time, the APL I had access to (Dyalog?)
did not yet have complex arithmetic, which I *needed* to solve radiation
scattering problems.
  That is not to say that the idea of a J core isn't a good idea.

>
> On Fri, Mar 15, 2013 at 5:43 PM, km <[hidden email]> wrote:
>> Here's a shot at specifying a J core by deleting things from the Vocabulary page.
>>
>> --Kip Murray
>>
>>>>  <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>
>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )
>>
>> =  • Equal      =. Is (Local)   =: Is (Global)
>> < Box • Less Than       <. Floor • Lesser Of (Min)      <: Decrement • Less Or Equal
>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >: Increment • Larger Or Equal
>> _ Negative Sign / Infinity      _. Indeterminate        _: Infinity
>>
>> + Conjugate • Plus      +. Real / Imaginary • GCD (Or)  +: Double • Not-Or
>> * Signum • Times        *. Length/Angle • LCM (And)     *: Square • Not-And
>> - Negate • Minus        -. Not • Less   -: Halve • Match
>> % Reciprocal • Divide
>> %: Square Root • Root
>>
>> ^ Exponential • Power   ^. Natural Log • Logarithm      ^: Power (u^:n u^:v)
>> $ Shape Of • Shape
>> $: Self-Reference
>> ~ Reflex • Passive / Evoke      ~. Nub •        ~: Nub Sieve • Not-Equal
>> | Magnitude • Residue   |. Reverse • Rotate (Shift)
>>
>>
>>
>>
>> : Explicit / Monad-Dyad
>> :: Adverse
>> , Ravel • Append        ,. Ravel Items • Stitch ,: Itemize • Laminate
>> ; Raze • Link
>> ;: Words
>>
>> # Tally • Copy
>>
>> ! Factorial
>> !: Foreign
>> / Insert • Table
>> /:  • Sort
>> \ Prefix
>> \:  • Sort
>>
>> [ Same • Left           [: Cap
>> ] Same • Right
>> {  • From       {. Head • Take  {: Tail •
>> }  • Amend (m} u})      }. Behead • Drop        }: Curtail •
>>
>> " Rank (m"n u"n)        ". Do •         ": Default Format • Format
>>
>>
>> @ Atop  @. Agenda       @: At
>> & Bond / Compose        &. &.: Under (Dual)     &: Appose
>> ? Roll • Deal   ?. Roll • Deal (fixed seed)
>>
>> a. Alphabet     a: Ace (Boxed Empty)
>> b. Boolean / Basic
>>
>>
>>
>> e.  • Member (In)
>> E. • Member of Interval
>>
>>
>> i. Integers • Index Of  i: Steps • Index Of Last        I. Indices • Interval Index
>> j. Imaginary • Complex
>>
>>
>> NB. Comment
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>>>  <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>
>> Sent from my iPad
>>
>>
>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>
>>> 3) I am not the first to mention this. I wish there was a minimal J
>>> language core documented/available. I see veterans on this forum saying
>>> things like: "I almost never use some of those verbs". Is there not a
>>> minimal J language core targeting general language use? For example,
>>> leaving out specifics like numerical analysis, statistics, etc. This
>>> might help some not drop by the way side. E.g. http://xprogramming
>>> .com/category/j-language/
>>>
>> ----------------------------------------------------------------------
>> 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 | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Raul Miller-4
In reply to this post by Greg Borota
On Sat, Mar 16, 2013 at 10:29 AM, Greg Borota <[hidden email]> wrote:
> We have a huge army of developers who are used to approach learning a new
> language in the way established by Brian W. Kernighan/Dennis M. Ritchie.
> Basically just plunge the user in the language and have them writing
> programs right from the beginning. Now J is different, that approach might
> not work quite the same. Yet because so many of us don't know better
> I believe we need this kind of help.

I had a similar problem when I first learned C.

There, my problems turned out to have to do with understanding how to
refer to the C compiler.

Nowadays, I can go:

$ cat >hello.c <<end
#include <stdio.h>
main(){printf("hello\n");}
end
$ make hello && ./hello

... and understand what I am doing. I know that the '$' is the prompt
so I would not type that part in.  I know that the compiler will emit
dire messages that I will ignore.  I know that make will do what I
want here unless I have a makefile in this directory which tells it
otherwise.  I know that 'end' is a directive to the shell which is not
actually a part of the program (and that normally I'd not use <<end
and instead just use ^D ... no, actually, normally I'd use a text
editor instead of cat - these are compromises I've made for clarity of
presentation in email).

And, yes, that kind of thing you do solve just by jumping in and
seeing what breaks.

But, for example, most people that I have interacted with do not use
make to compile programs like this.  (Why? Is that a deficiency in the
way K&R taught C?) Similarly, people have all sorts of different ideas
about how to author C programs - and mostly that does not matter,
because mostly we ignore them.

J currently has a "higher bar to entry" than C, I think, because J
overconstrains execution - if you do a literal transcription of C to J
you will get something that works but is too slow to bother with. If
you do not learn how to simplify your code, in J, you might as well
not bother because other languages will do a better job.

I have very mixed feelings about this.

Hypothetically speaking, there's no reason we could not have a J
compiler that emits programs for use at the unix command line.  J
already includes a variety of transformations on code as well as links
out into the OS, and gcc includes a rich and accessible infrastructure
for building programs.  And, now that J's source is available under
the GPL there are no licensing restrictions preventing a mix of J and
gcc - we could emit RTL directly if we had the energy to do so, and
hand any part of the resulting system to anyone.  We could use
something analogous to Hindley-Milner type inference (except instead
of finding the largest containing type, often we would want to find
the smallest acceptable type) and J's existing structure would mostly
just work as is.  But removing this bottleneck would bring us other
issues and problems.  Already people avoid useful J constructs for a
variety of reasons and this problem could easily get "worse".  [Plus,
of course, it takes time and energy to write a compiler.]  Anyways,
there's a lot of potential noise off in this direction, and it seems
fun but it would get complicated.

Anyways...

J is "different" but not all of the problems are in the documentation.
 Some of the problems are in the implementation, some of the problems
are in other programming languages, some of the problems are in math
curriculum.

Consider, for example:

   1 2 3 * 2 3 4
2 6 12

In many other languages, that would be a loop (SQL is an exception but
is clumsy enough that you can't quite do this this way).

But if you have had any higher math, you have probably been taught to
expect an answer of 20 here. And, that's bad. (scalar product is a
monoid, inner product is not*. We should not use the same symbol for
scalar product as we use for inner product because it's misleading and
it encourages the reader to jump to false conclusions.)  But the
problem here hides under the flag of "standard math notation".  So how
do we deal with this issue?  Do we go on a discursive tangent
addressing all of the potential bad assumption because of the notation
a person might have been exposed to?  It seems to me that that's just
unnecessary noise for anyone not caught up in those kinds of problems.
But that does not mean that the problems are not real.

*Of course, matrix products can be monoids but a "2 by 2 identity
matrix" "multiplied by" a 3 by 3 matrix is not an identity so that
still introduces complexities.

J's

   1 * 2 3 4
2 3 4

is a beautiful thing, but it's also boring if you don't understand the
context that makes it beautiful.  Why should anyone care?

And... similarly... people may be put off by the use of whitespace as
a prompt - they have learned how to cope with prompts that need to be
removed to understand the code, and J's approach is just "wrong" for
"reasons" which are difficult to express.

Do you see where I am going here?

Some of J's problems are that we have not learned how to recognize
things issus that are probably rooted in bogus assumptions. And that
can be a real difficulty, sometimes, for some people.

Anyways, Ken Iverson's approach here was to be presenting some other
topic which had some intrinsic merit. The math, after all, is just a
notation used for conveying ideas. It's the ideas that make it
interesting. I think we need more documentation like Ken Iverson would
have written.

Having an interesting subject gives you something to think about and
helps you focus on ideas which are relevant to your interests.

--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Henry Rich
I agree with Raul's thoughts, and want to add some comments from
actually teaching J in the classroom.

The big hurdle for a professional to learn J is the requirement to think
about things differently.  People have learned how to write loops, and
trained themselves so many years writing loops that they have an very
unpleasant feeling of being lost when they have to think of whole nouns
rather than atoms.  It reminds them of when they were beginners, and
they don't like it.

It takes an unusual personality to make the effort.  Only someone who is
committed to lifetime learning will do it.  This is why J will always be
a language for the enlightened.

The kids I start out on J, on the other hand, pick it up naturally.
They feel lost too, but they expect that and they get over it.
First-year J programmers feel less lost than first-year Java
programmers, because they get more done.


We had an interesting incident this year.  I was teaching recursion &
decided that I would allow the use of the for. control to allow early
termination of a search.  After just 2 weeks of using for., the kids
wanted to use for. for everything, and it took about 2 weeks for them to
stop complaining when I made them use rank instead.


For anyone else teaching J, I have hit upon a good set of homework
assignments.  My problem has always been that writing a long program is
so hard for the kids that they don't work on it much at home and try to
spend class time on it where they can work with the other kids.  But
this year I have them writing a program to solve the game 'Rush Hour' (a
charming board game).  I wrote the program to solve the game and animate
the solution.  It's about 45 lines of J.  I wrote commentary for each
line.  I gave them the commentary without the code.  Their job is to
write one line of code a night, given the commentary and the expected
result for the line.  Some lines are quick, some take hours, but they
are at last doing the homework because it's the right size: one line.

Henry Rich

On 3/16/2013 11:26 AM, Raul Miller wrote:

> On Sat, Mar 16, 2013 at 10:29 AM, Greg Borota <[hidden email]> wrote:
>> We have a huge army of developers who are used to approach learning a new
>> language in the way established by Brian W. Kernighan/Dennis M. Ritchie.
>> Basically just plunge the user in the language and have them writing
>> programs right from the beginning. Now J is different, that approach might
>> not work quite the same. Yet because so many of us don't know better
>> I believe we need this kind of help.
>
> I had a similar problem when I first learned C.
>
> There, my problems turned out to have to do with understanding how to
> refer to the C compiler.
>
> Nowadays, I can go:
>
> $ cat >hello.c <<end
> #include <stdio.h>
> main(){printf("hello\n");}
> end
> $ make hello && ./hello
>
> ... and understand what I am doing. I know that the '$' is the prompt
> so I would not type that part in.  I know that the compiler will emit
> dire messages that I will ignore.  I know that make will do what I
> want here unless I have a makefile in this directory which tells it
> otherwise.  I know that 'end' is a directive to the shell which is not
> actually a part of the program (and that normally I'd not use <<end
> and instead just use ^D ... no, actually, normally I'd use a text
> editor instead of cat - these are compromises I've made for clarity of
> presentation in email).
>
> And, yes, that kind of thing you do solve just by jumping in and
> seeing what breaks.
>
> But, for example, most people that I have interacted with do not use
> make to compile programs like this.  (Why? Is that a deficiency in the
> way K&R taught C?) Similarly, people have all sorts of different ideas
> about how to author C programs - and mostly that does not matter,
> because mostly we ignore them.
>
> J currently has a "higher bar to entry" than C, I think, because J
> overconstrains execution - if you do a literal transcription of C to J
> you will get something that works but is too slow to bother with. If
> you do not learn how to simplify your code, in J, you might as well
> not bother because other languages will do a better job.
>
> I have very mixed feelings about this.
>
> Hypothetically speaking, there's no reason we could not have a J
> compiler that emits programs for use at the unix command line.  J
> already includes a variety of transformations on code as well as links
> out into the OS, and gcc includes a rich and accessible infrastructure
> for building programs.  And, now that J's source is available under
> the GPL there are no licensing restrictions preventing a mix of J and
> gcc - we could emit RTL directly if we had the energy to do so, and
> hand any part of the resulting system to anyone.  We could use
> something analogous to Hindley-Milner type inference (except instead
> of finding the largest containing type, often we would want to find
> the smallest acceptable type) and J's existing structure would mostly
> just work as is.  But removing this bottleneck would bring us other
> issues and problems.  Already people avoid useful J constructs for a
> variety of reasons and this problem could easily get "worse".  [Plus,
> of course, it takes time and energy to write a compiler.]  Anyways,
> there's a lot of potential noise off in this direction, and it seems
> fun but it would get complicated.
>
> Anyways...
>
> J is "different" but not all of the problems are in the documentation.
>   Some of the problems are in the implementation, some of the problems
> are in other programming languages, some of the problems are in math
> curriculum.
>
> Consider, for example:
>
>     1 2 3 * 2 3 4
> 2 6 12
>
> In many other languages, that would be a loop (SQL is an exception but
> is clumsy enough that you can't quite do this this way).
>
> But if you have had any higher math, you have probably been taught to
> expect an answer of 20 here. And, that's bad. (scalar product is a
> monoid, inner product is not*. We should not use the same symbol for
> scalar product as we use for inner product because it's misleading and
> it encourages the reader to jump to false conclusions.)  But the
> problem here hides under the flag of "standard math notation".  So how
> do we deal with this issue?  Do we go on a discursive tangent
> addressing all of the potential bad assumption because of the notation
> a person might have been exposed to?  It seems to me that that's just
> unnecessary noise for anyone not caught up in those kinds of problems.
> But that does not mean that the problems are not real.
>
> *Of course, matrix products can be monoids but a "2 by 2 identity
> matrix" "multiplied by" a 3 by 3 matrix is not an identity so that
> still introduces complexities.
>
> J's
>
>     1 * 2 3 4
> 2 3 4
>
> is a beautiful thing, but it's also boring if you don't understand the
> context that makes it beautiful.  Why should anyone care?
>
> And... similarly... people may be put off by the use of whitespace as
> a prompt - they have learned how to cope with prompts that need to be
> removed to understand the code, and J's approach is just "wrong" for
> "reasons" which are difficult to express.
>
> Do you see where I am going here?
>
> Some of J's problems are that we have not learned how to recognize
> things issus that are probably rooted in bogus assumptions. And that
> can be a real difficulty, sometimes, for some people.
>
> Anyways, Ken Iverson's approach here was to be presenting some other
> topic which had some intrinsic merit. The math, after all, is just a
> notation used for conveying ideas. It's the ideas that make it
> interesting. I think we need more documentation like Ken Iverson would
> have written.
>
> Having an interesting subject gives you something to think about and
> helps you focus on ideas which are relevant to your interests.
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Raul Miller-4
In reply to this post by Raul Miller-4
A related problem is that so very often existing work involving
mathematical notation has what I like to think of as "bogus
assumptions" baked in.

This does not mean that they are wrong.

This does not mean that they are not useful.

This does mean, however, that once I figure out how to express the
concepts in J people are sometimes surprised by the simplicity of the
concept.  But that's not always easy.

Currently, I'm trying to work on
http://en.wikipedia.org/wiki/De_Boor%27s_algorithm - this is something
that's been bugging me since high school (long before I learned about
J). If I can sort out the issues that bother me, it will be fun.
Obviously I am not making very rapid progress...

--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Skip Cave-3
In reply to this post by Linda Alvord
Having a suggested "kernel" of J to learn for beginners is not a bad idea.
Linda's proposal to make the J vocabulary more "beginner friendly" is one
that has been proposed before, and even partially implemented.  However I
believe that we need to do more than just list a set of J primitives for a
beginner to learn.

A list of primitves with links to definitions may be enough for a motivated
computer science grad to get going in J, but that is probably not the best
way for the less-motivated and less-technical, who just want to get a
flavor of J.

The learning curve for any language can be quite steep, particularly if the
student is presented with a large number of concepts right up front. The J
language is particularly bad about doing this, since most all of the
laguage primitives can be displayed on a single page.

For learning, it is better to introduce a subject's concepts gradually and
serially. In addition, the serial steps should promote a "try this and see
what happens" interactive approach, encouraging the student to experiment
with each concept using a live interpreter.

This plan is best achieved by using a narrative approach, which
significantly flattens the learning curve.  The narrative should lead the
newbie through the basic concepts, having the studen read about, and try
out each concept, one step at a time.

However, developing such a narrative can be a large project. We already
have several books which attempt to teach J by presenting J concepts in
small steps. While these books do cover the subject well, I believe that
they are still oriented to a technical, computer-science-grad audience. So
even these books make the learning curve too steep for the non-technical,
less-motivated students and casual investigators. We need an easy-to-read
teaching tool that will ease the reader into the world of multi-dimentional
matrices and the operations that can be performed on them. Think of a book
that would fit in the popular series - "J for Dummies".

There is one book that I believe presents a matrix language in a way that
even the general public could grasp. The book is Gillman & Rose's book "APL
- An Interactive Approach". Years ago, this book taught me APL in a fun and
painless way, and that methodology is still valid today. This style of
teaching tool is the perfect introduction to a complex language such as J
for a less-technical audience..

In fact, Gillman &Rose's book would be the perfect introduction to J for
non-technical users. There is just one problem - the book is about APL, not
J. The good news is that J is similar enough to APL that it wouldn't take
much to  convert their book to "J- An Interactive Approach", thus creating
a basic easy and fun to read J tutorial.

In fact, I would propose that the J community would obtain a valuable
learning resource for the J language by simply "translating" Gillman &
Rose's book from APL to J. This would be a considerably smaller project
than trying to author a "J for Dummies" book from scratch, for a
non-technical audience.

Basically, one could scan in the G&R book, OCR it, and then substitute J
expressions for the APL expressions. Of course, there would need to be some
other updates, modernizing the selectric typewriter nomenclature to
computer keyboard or touchscreens, etc., but it wouldn't be all that big a
project.

Skip

On Mar 16, 2013 8:47 AM, "Linda Alvord" <[hidden email]> wrote:

> We are close to selecting a "kernel" of the language. We need to pay close
> attention to how those concepts are defined in the Vocabulary. Don't remove
> all the wonderful complex examples!  Just add more carefully chosen
> examples. When the new user consults one of those terms, they should only
> encounter even simpler concepts in the definition. Each example that is
> looked up should encourage them to be more fluent "speaking" the
> language.
>
> Linda
>
>
> Original Message-----
> From: p.rogramming-bounces@ forums.jsoftware.com [mailto:programming-b
> [hidden email]] On Behalf Of Linda Alvord
> Sent: Saturday, March 16, 2013 9:17 AM
> To: [hidden email]
> Subject: Re: [Jprogramming] Learning J language - initial thoughts
>
> My guess is that most experienced J users rely first on the Vocabulary.  It
> is an easier starting point to find answers than the primer, phrases,
> index,
> dictionary and other references.
>
> I would like see a Vocabulary that assists the beginner in the same way
> that
> it assists our most skillful users.
>
> Do we really need more options to explore to find the panacea for learning
> to "speak" J?  Couldn't we just make modest improvement to our best source
> for understanding the language?
>
> Linda
>  ll
> -----Original Message-----
> From: [hidden email]
> [mailto:[hidden email]] On Behalf Of Raul Miller
> Sent: Saturday, March 16, 2013 8:09 AM
> To: [hidden email]
> Subject: Re: [Jprogramming] Learning J language - I nitial thoughts
>
> On Sat, Mar 16, 2013 at 3:36 AM, Linda Alvord <[hidden email]>
> wrote:
> > How many terms will you have to look up before you understand this?
>
> I have been wishing for a kind of wiki markup where I could mark a region
> of
> text as requiring some list of topics on the part of the reader, and then
> also identifying a topic which the the text addresses.
>
> If something like this could be designed, we could present initially simple
> definitions to the reader and reveal further detail as the reader visits
> other topics.
>
> Complexities here include the implementation mechanism (some people would
> prefer an automated approach - using cookies, perhaps - where at other
> times
> they would prefer a manual approach - using menus, perhaps), and
> identifying
> topics (addition, for example, could include topics of numbers, identities,
> rank, and grammar with associativity and commutativity falling under
> "grammar", and numbers themselves have a variety of types including
> counting
> of physical objects, promises for the future, measurements of distance and
> collections of different kinds of numbers [apples, oranges and eggs]).
> Unfortunately, this is a really good example of "it's simple when you
> understand it but not until then", and the layering means that you can
> understand something simple while not noticing the relevance of another
> issue.
>
> Thanks,
>
> --
> Raul
> ----------------------------------------------------------------------
> 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
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Ian Clark-8
Let's not overlook "At Play With J" (APWJ)
http://www.jsoftware.com/jwiki/At%20Play%20With%20J
You don't have to buy the book. It's all there for free, via the above link.

For what I see being asked for, as a "gentler" introduction than the
existing primers, APWJ seems to fit the bill. It certainly got *me*
off the ground with J.

Nowadays, from my lofty J perspective :-)  I wouldn't be able to tell
a good beginner's guide from a bad one.


On Sat, Mar 16, 2013 at 3:59 PM, Skip Cave <[hidden email]> wrote:

> Having a suggested "kernel" of J to learn for beginners is not a bad idea.
> Linda's proposal to make the J vocabulary more "beginner friendly" is one
> that has been proposed before, and even partially implemented.  However I
> believe that we need to do more than just list a set of J primitives for a
> beginner to learn.
>
> A list of primitves with links to definitions may be enough for a motivated
> computer science grad to get going in J, but that is probably not the best
> way for the less-motivated and less-technical, who just want to get a
> flavor of J.
>
> The learning curve for any language can be quite steep, particularly if the
> student is presented with a large number of concepts right up front. The J
> language is particularly bad about doing this, since most all of the
> laguage primitives can be displayed on a single page.
>
> For learning, it is better to introduce a subject's concepts gradually and
> serially. In addition, the serial steps should promote a "try this and see
> what happens" interactive approach, encouraging the student to experiment
> with each concept using a live interpreter.
>
> This plan is best achieved by using a narrative approach, which
> significantly flattens the learning curve.  The narrative should lead the
> newbie through the basic concepts, having the studen read about, and try
> out each concept, one step at a time.
>
> However, developing such a narrative can be a large project. We already
> have several books which attempt to teach J by presenting J concepts in
> small steps. While these books do cover the subject well, I believe that
> they are still oriented to a technical, computer-science-grad audience. So
> even these books make the learning curve too steep for the non-technical,
> less-motivated students and casual investigators. We need an easy-to-read
> teaching tool that will ease the reader into the world of multi-dimentional
> matrices and the operations that can be performed on them. Think of a book
> that would fit in the popular series - "J for Dummies".
>
> There is one book that I believe presents a matrix language in a way that
> even the general public could grasp. The book is Gillman & Rose's book "APL
> - An Interactive Approach". Years ago, this book taught me APL in a fun and
> painless way, and that methodology is still valid today. This style of
> teaching tool is the perfect introduction to a complex language such as J
> for a less-technical audience..
>
> In fact, Gillman &Rose's book would be the perfect introduction to J for
> non-technical users. There is just one problem - the book is about APL, not
> J. The good news is that J is similar enough to APL that it wouldn't take
> much to  convert their book to "J- An Interactive Approach", thus creating
> a basic easy and fun to read J tutorial.
>
> In fact, I would propose that the J community would obtain a valuable
> learning resource for the J language by simply "translating" Gillman &
> Rose's book from APL to J. This would be a considerably smaller project
> than trying to author a "J for Dummies" book from scratch, for a
> non-technical audience.
>
> Basically, one could scan in the G&R book, OCR it, and then substitute J
> expressions for the APL expressions. Of course, there would need to be some
> other updates, modernizing the selectric typewriter nomenclature to
> computer keyboard or touchscreens, etc., but it wouldn't be all that big a
> project.
>
> Skip
>
> On Mar 16, 2013 8:47 AM, "Linda Alvord" <[hidden email]> wrote:
>
>> We are close to selecting a "kernel" of the language. We need to pay close
>> attention to how those concepts are defined in the Vocabulary. Don't remove
>> all the wonderful complex examples!  Just add more carefully chosen
>> examples. When the new user consults one of those terms, they should only
>> encounter even simpler concepts in the definition. Each example that is
>> looked up should encourage them to be more fluent "speaking" the
>> language.
>>
>> Linda
>>
>>
>> Original Message-----
>> From: p.rogramming-bounces@ forums.jsoftware.com [mailto:programming-b
>> [hidden email]] On Behalf Of Linda Alvord
>> Sent: Saturday, March 16, 2013 9:17 AM
>> To: [hidden email]
>> Subject: Re: [Jprogramming] Learning J language - initial thoughts
>>
>> My guess is that most experienced J users rely first on the Vocabulary.  It
>> is an easier starting point to find answers than the primer, phrases,
>> index,
>> dictionary and other references.
>>
>> I would like see a Vocabulary that assists the beginner in the same way
>> that
>> it assists our most skillful users.
>>
>> Do we really need more options to explore to find the panacea for learning
>> to "speak" J?  Couldn't we just make modest improvement to our best source
>> for understanding the language?
>>
>> Linda
>>  ll
>> -----Original Message-----
>> From: [hidden email]
>> [mailto:[hidden email]] On Behalf Of Raul Miller
>> Sent: Saturday, March 16, 2013 8:09 AM
>> To: [hidden email]
>> Subject: Re: [Jprogramming] Learning J language - I nitial thoughts
>>
>> On Sat, Mar 16, 2013 at 3:36 AM, Linda Alvord <[hidden email]>
>> wrote:
>> > How many terms will you have to look up before you understand this?
>>
>> I have been wishing for a kind of wiki markup where I could mark a region
>> of
>> text as requiring some list of topics on the part of the reader, and then
>> also identifying a topic which the the text addresses.
>>
>> If something like this could be designed, we could present initially simple
>> definitions to the reader and reveal further detail as the reader visits
>> other topics.
>>
>> Complexities here include the implementation mechanism (some people would
>> prefer an automated approach - using cookies, perhaps - where at other
>> times
>> they would prefer a manual approach - using menus, perhaps), and
>> identifying
>> topics (addition, for example, could include topics of numbers, identities,
>> rank, and grammar with associativity and commutativity falling under
>> "grammar", and numbers themselves have a variety of types including
>> counting
>> of physical objects, promises for the future, measurements of distance and
>> collections of different kinds of numbers [apples, oranges and eggs]).
>> Unfortunately, this is a really good example of "it's simple when you
>> understand it but not until then", and the layering means that you can
>> understand something simple while not noticing the relevance of another
>> issue.
>>
>> Thanks,
>>
>> --
>> Raul
>> ----------------------------------------------------------------------
>> 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
>>
> ----------------------------------------------------------------------
> 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 | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Greg Borota
In reply to this post by J. Patrick Harrington
All the the great feedback helps define better what I, and I think many who
have come in touch with J, were looking for: the general-purpose core of
the language. That is a quite vaguely defined concept, many do
understand it intuitively though.
J is "a general purpose programming language" http://www.jsoftware
.com/help/primer/why_j.htm

I believe this wikipedia quote conveys a somewhat destorted and untrue idea
http://en.wikipedia.org/wiki/J_(programming_language): "J is a very terse
array programming language, and is most suited to mathematical and
statistical programming, especially when performing operations on
matrices." There are things that could be done to correct that wrong
perception. This general-purpose "core" might be one of them.



On Sat, Mar 16, 2013 at 10:05 AM, J. Patrick Harrington
<[hidden email]>wrote:

> On Fri, 15 Mar 2013, Ian Clark wrote:
>
>> There used to be a range of (spoken) language CDs with names like
>> "Learn Swedish Now!"  "Learn Arabic Now!"
>> They were designed to a common format. One extremely useful feature
>> was a list of "The 100 most-used words in the language", ranked in
>> order of usage.
>>
>> Inspired by this, I once extracted from my own scripts a list of J
>> primitives ranked by usage. But I've lost the results. I do recall
>> they surprised me.
>>
>> This could be the basis for a coding challenge -- a rather easy one if
>> you use (;:) -- write a verb (or a script) which scans a folder of
>> scripts and builds a table of primitives ordered by usage. Then
>> perhaps we could all run it on our own "j-user" folders and compare
>> results :-)
>>
>> BTW In the 1970s I was offered a tape for research: the 2741 keystroke
>> log of a busy IBM APL shop. In the space of a year, "Domino" (⌹ --
>> equivalent to %. in J) was keyed-in precisely twice. Once as a typo.
>> And once as a filler-char for a crude histogram.
>>
>> ...And Domino was touted at the time as the flagship feature of APL!
>>
>>   This really depends upon the user! My programs make constant use of %.
> (Except when I use LAPAC.) And with regard to complex numbers: The reason
> I began using J was that, at that time, the APL I had access to (Dyalog?)
> did not yet have complex arithmetic, which I *needed* to solve radiation
> scattering problems.
>  That is not to say that the idea of a J core isn't a good idea.
>
>
>
>> On Fri, Mar 15, 2013 at 5:43 PM, km <[hidden email]> wrote:
>>
>>> Here's a shot at specifying a J core by deleting things from the
>>> Vocabulary page.
>>>
>>> --Kip Murray
>>>
>>>   <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>>>
>>>>
>>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )
>>>
>>> =  • Equal      =. Is (Local)   =: Is (Global)
>>> < Box • Less Than       <. Floor • Lesser Of (Min)      <: Decrement •
>>> Less Or Equal
>>>
>>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >: Increment •
>>>> Larger Or Equal
>>>>
>>> _ Negative Sign / Infinity      _. Indeterminate        _: Infinity
>>>
>>> + Conjugate • Plus      +. Real / Imaginary • GCD (Or)  +: Double •
>>> Not-Or
>>> * Signum • Times        *. Length/Angle • LCM (And)     *: Square •
>>> Not-And
>>> - Negate • Minus        -. Not • Less   -: Halve • Match
>>> % Reciprocal • Divide
>>> %: Square Root • Root
>>>
>>> ^ Exponential • Power   ^. Natural Log • Logarithm      ^: Power (u^:n
>>> u^:v)
>>> $ Shape Of • Shape
>>> $: Self-Reference
>>> ~ Reflex • Passive / Evoke      ~. Nub •        ~: Nub Sieve • Not-Equal
>>> | Magnitude • Residue   |. Reverse • Rotate (Shift)
>>>
>>>
>>>
>>>
>>> : Explicit / Monad-Dyad
>>> :: Adverse
>>> , Ravel • Append        ,. Ravel Items • Stitch ,: Itemize • Laminate
>>> ; Raze • Link
>>> ;: Words
>>>
>>> # Tally • Copy
>>>
>>> ! Factorial
>>> !: Foreign
>>> / Insert • Table
>>> /:  • Sort
>>> \ Prefix
>>> \:  • Sort
>>>
>>> [ Same • Left           [: Cap
>>> ] Same • Right
>>> {  • From       {. Head • Take  {: Tail •
>>> }  • Amend (m} u})      }. Behead • Drop        }: Curtail •
>>>
>>> " Rank (m"n u"n)        ". Do •         ": Default Format • Format
>>>
>>>
>>> @ Atop  @. Agenda       @: At
>>> & Bond / Compose        &. &.: Under (Dual)     &: Appose
>>> ? Roll • Deal   ?. Roll • Deal (fixed seed)
>>>
>>> a. Alphabet     a: Ace (Boxed Empty)
>>> b. Boolean / Basic
>>>
>>>
>>>
>>> e.  • Member (In)
>>> E. • Member of Interval
>>>
>>>
>>> i. Integers • Index Of  i: Steps • Index Of Last        I. Indices •
>>> Interval Index
>>> j. Imaginary • Complex
>>>
>>>
>>> NB. Comment
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>   <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>>>
>>>>
>>> Sent from my iPad
>>>
>>>
>>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>
>>>>
>>>> 3) I am not the first to mention this. I wish there was a minimal J
>>>> language core documented/available. I see veterans on this forum saying
>>>> things like: "I almost never use some of those verbs". Is there not a
>>>> minimal J language core targeting general language use? For example,
>>>> leaving out specifics like numerical analysis, statistics, etc. This
>>>> might help some not drop by the way side. E.g. http://xprogramming
>>>> .com/category/j-language/
>>>>
>>>>  ------------------------------**------------------------------**
>>> ----------
>>> For information about J forums see http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/forums.htm>
>>>
>> ------------------------------**------------------------------**
>> ----------
>> For information about J forums see http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/forums.htm>
>>
> ------------------------------**------------------------------**----------
> For information about J forums see http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/forums.htm>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
Reply | Threaded
Open this post in threaded view
|

Re: Learning J language - initial thoughts

Don Kelly
In reply to this post by Linda Alvord
I heartily agree with your proposal.  My experience, has been somewhat
up and down but having has considerable APL experience, much of it was
made easier for me.However, there are many dictionary entries that jump
in with both feet- often with examples that are more complex than needed
-sometimes putting one in the position of looking up another entry which
in turn uses concepts from the original entry.  I have spent some time
going through making my own examples -hardly complete at present- often
coming up with what "should but doesn't " work and including a brief
warning for myself. Having multiple examples boxed is space saving but
it does make many examples hard to read- partly because the examples are
themselves overcomplex. Maybe a "school dictionary" in addition to the
full library reference dictionary.

Don Kelly

On 16/03/2013 12:01 AM, Linda Alvord wrote:

> Although these choices might be guidelines, Ken always encouraged the teaching of "something". Once a topic is chosen, it is developed using the notation needed. It is the story that is being told that makes the language come alive. The grammar becomes familiar with more use.
>
> To me what is needed is short stories in the dictionary which give simple and then more complex examples of the terms being explained. Now that so much information can be delivered so quickly, seven or eight examples could be given of a single verb rather than one example that often requires previous knowledge of many other complicated ideas.
>
> If you are reading a dictionary and you find what you want in the simple uses of the word you are looking for, it is not necessary to continue reading possible uses in more complex situations. Also, reading several different uses serves to make the concept more easily understood.  Taking away parts of the language does not seem to be the answer.  Rather better story telling of topics carefully developed in simple steps chosen because they are needed for that particular story are most helpful.
>
> Linda
>
> -----Original Message---
> From: [hidden email] [mailto:[hidden email]] On Behalf Of sekm
> Sent: Saturiday, March 16, 2013 12:00 AM
> To: [hidden email]
> Subject: Re: [Jprogrammingi] Learning J language - initial thouwhghts
>
> Thanks.  This was more work than deleting names from Vocabulary, and it is worth it.  --Kip
>
> Sent from my iPad
>
>
> On Mar 15, 2013, at 10:37 PM, Marshall Lochbaum <[hidden email]> wrote:
>
>> Here's a stab at this kind of organization, leaving out words for
>> specific areas of math. Of course these words can be organized in much
>> the same way.
>>
>> BASICS
>> =. Is (Local)    =: Is (Global)
>> _ Negative Sign / Infinity
>> : Explicit / Monad-Dyad
>> " Rank (m"n u"n m"v u"v)
>> NB. Comment
>> _9: to 9: and _: Constant Functions
>>
>>
>> ARITHMETIC
>> - Negate
>> % Reciprocal
>>> : Increment
>>                         <: Decrement
>> + • Plus                +: Double
>> - • Minus               -: Halve
>> * • Times               *: Square
>> % • Divide              %: Square Root
>>
>> <. Floor • Lesser Of (Min)
>>> . Ceiling • Larger of (Max)
>> ^ Exponential • Power   ^. Natural Log • Logarithm
>>
>>
>> LOGIC
>> = • Equal               ~: • Not-Equal
>> < • Less Than           <: • Less Or Equal
>>> • Larger Than         >: • Larger Or Equal
>> +. • Or                 *. • And
>> -. Not
>>
>>
>> LISTS
>> $ Shape Of • Shape      # Tally • Copy
>> , Ravel • Append        ,: Itemize • Laminate
>>
>> { • From
>> {. Head • Take          {: Tail •
>> }. Behead • Drop        }: Curtail •
>>
>> -: • Match
>> |. Reverse • Rotate (Shift)
>>
>> / Insert • Table
>>
>> i. Integers • Index Of
>> e. Raze In • Member (In)
>>
>> /:~ Sort Up             \:~ Sort Down
>> -. • Less
>> ~. Nub
>>
>>
>> COMPOSITIONS
>> ^: Power (If)
>> ~ Reflex • Passive
>> @ Atop                  @: At
>> & Bond / Compose        &: Appose
>> &. Under                &.: Under
>> [ Same • Left           ] Same • Right
>>
>>
>> STRINGS
>> ". Do                   ": Default Format
>> a. Alphabet
>>
>>
>> BOXES
>> < Box                   > Open
>> ; Raze • Link
>> ;: Words
>>
>> Marshall
>>
>> On Fri, Mar 15, 2013 at 11:00:41PM -0400, Marshall Lochbaum wrote:
>>> I'll jump in here and point out that words vary massively in their
>>> potential to confuse. You've taken out >: <: +: -: *: %: , but these
>>> verbs are dead simple to remember (and, as a bonus, you can do all of
>>> them at once), and often make reasoning with J a lot easier. I
>>> couldn't teach J without using these because they are simple monadic
>>> verbs with easy utility. +/&.:*: is a great way to teach how &.: works.
>>> +/&.:(^&0.5) is not.
>>>
>>> On the other hand there are the words--particularly conjunctions and
>>> adverbs--that are very difficult to figure out. You've taken out most
>>> of these, like /. and ;. . I think } and ,. also belong in this
>>> category. } is, though merely awkward in theory, actually a patchwork
>>> of corner cases. ,. and to a lesser extent ,: are difficult to get
>>> right, and I think ,. is better taught as ,"_1 in both valences.
>>> These are the words that really need to be taken out. Leave the
>>> technically useless but simple and convenient words alone.
>>>
>>> This list looks like it's tending towards an effort to gut as many
>>> words as possible and make the language look small. I think a better
>>> approach would be to organize words into a few groups--arithmetic,
>>> logic, lists, compositions, and heavy mathematics--which contain a
>>> larger selection of useful operations and stress the symmetry of
>>> these (why would you take out any of {. {: }. }: when they are easy
>>> to teach in a group?). Words that are truly confusing and take a long
>>> time to understand (H. ,
>>> anyone?) would be left out.
>>>
>>> Marshall
>>>
>>> On Fri, Mar 15, 2013 at 08:15:29PM -0500, km wrote:
>>>> Here's the latest J core, using additional paring suggested by Raul.
>>>>
>>>> I did keep }: because of puzzling things that happen if you use _1&{. instead (giving you a vector instead of a scalar).  And I took out GCD .
>>>>
>>>> --Kip Murray
>>>>
>>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>> Vocabulary  ( Constants   Controls   Foreigns   Parts of Speech )
>>>>
>>>> =  • Equal    =. Is (Local)    =: Is (Global)
>>>> < Box • Less Than    <. Floor • Lesser Of (Min)    <:  • Less Or Equal
>>>>> Open • Larger Than    >. Ceiling • Larger of (Max)    >:  • Larger Or Equal
>>>> _ Negative Sign / Infinity
>>>>
>>>>
>>>> +  • Plus
>>>>
>>>> *  • Times
>>>>
>>>> - Negate • Minus    -. Not • Less    -:  • Match
>>>> % Reciprocal • Divide
>>>>
>>>>
>>>> ^ Exponential • Power
>>>> ^: Power (u^:n u^:v)
>>>> $ Shape Of • Shape
>>>>
>>>> ~ Reflex • Passive    ~. Nub •    ~:  • Not-Equal
>>>> | Magnitude • Residue    |. Reverse • Rotate (Shift)
>>>>
>>>>
>>>>
>>>>
>>>> : Explicit / Monad-Dyad
>>>>
>>>> , Ravel • Append    ,. Ravel Items • Stitch    ,: Itemize • Laminate
>>>> ; Raze • Link
>>>> ;: Words
>>>>
>>>> # Tally • Copy
>>>>
>>>> ! Factorial
>>>>
>>>> / Insert • Table
>>>> /:  • Sort
>>>> \ Prefix
>>>> \:  • Sort
>>>>
>>>> [ Same • Left        [: Cap
>>>> ] Same • Right
>>>> {  • From    {. Head • Take    {: Tail •
>>>> }  • Amend (m} u})    }. Behead • Drop
>>>>
>>>> " Rank (m"n u"n)    ". Do •    ": Default Format • Format
>>>>
>>>>    
>>>> @ Atop    @. Agenda
>>>> & Bond / Compose    &. Under (Dual)
>>>> ? Roll • Deal
>>>>
>>>> a. Alphabet    a: Ace (Boxed Empty)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> e.  • Member (In)
>>>> E. • Member of Interval
>>>>
>>>>
>>>> i. Integers • Index Of
>>>> I. Indices • Interval Index
>>>>
>>>>
>>>>
>>>>
>>>> NB. Comment
>>>>
>>>>
>>>>
>>>>
>>>>      
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>> <<  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  Help  Dictionary
>>>> Sent from my iPad
>>>>
>>>>
>>>> On Mar 15, 2013, at 10:27 AM, Greg Borota <[hidden email]> wrote:
>>>>> 3) I am not the first to mention this. I wish there was a minimal J
>>>>> language core documented/available. I see veterans on this forum
>>>>> saying things like: "I almost never use some of those verbs". Is
>>>>> there not a minimal J language core targeting general language use?
>>>>> For example, leaving out specifics like numerical analysis,
>>>>> statistics, etc. This might help some not drop by the way side.
>>>>> E.g. http://xprogramming .com/category/j-language/
>>>>
>>>> On Mar 15, 2013, at 3:26 PM, Raul Miller <[hidden email]> wrote:
>>>>
>>>> ...
>>>>> I'd probably also eliminate foreigns from "core".  Foreigns are
>>>>> about as peripheral as you can get.  The beginner should probably
>>>>> be told to start with covers (fread, fwrite, ...).
>>>> --------------------------------------------------------------------
>>>> -- 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
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

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