Thanks Ric,

    I agree that the way to introduce a formula is to gradually work up to 
it demonstrating as you go. I find cut and paste and the fact that pressing 
return on an expression back a few steps brings it down invaluable in doing 
this. In S that sequence is unbroken and consistent. In J you reach the 
point where there is a need to change gear into tacit J and deal with a 
completely new set of rules.

Don

----- Original Message ----- 
From: "Sherlock, Ric" <[email protected]>
To: "Chat forum" <[email protected]>
Sent: Wednesday, April 22, 2009 7:27 PM
Subject: Re: [Jchat] Language S


>> From: Don Watson
>>
>>     I am interested in using the J system for experiential use in
>> elementary
>> and secondary school Mathematics. It has many advantages, including
>> free
>> availability for education.
>>
>> . However, no one would claim it is easy for teachers to learn J. What
>> I
>> have done in this paper is describe a language - called S, for school -
>> that
>> seems to be closer to Mathematics and needs no tacit programming form.
>
> Don,
> I'm still not convinced that the effort you are putting into defining a 
> new language wouldn't be more productively spent (from an 
> engaging-kids-in-maths point of view) in working on ways of using J in its 
> current form.
>
> I agree that the tacit form of J takes a bit (or a lot) of getting used 
> to, and I agree that it would make life less confusing to leave it out of 
> your teaching (at least to start with).
>
> You put a bunch of restrictions on what the ideal model shouldn't do 
> because the focus should be on the Mathematics
>  * no intermediate variables and intermediate verbs
>  * only one-line S models are required
>  * no constants
>
> In my experience mathematical formulae often occupy multiple lines, often 
> use intermediate variables and/or intermediate verbs/functions. They also 
> often include constants (pi, Euler's number etc).
>
> Using your example of standard deviation - the mathematical formula is 
> often also written:
> (imagine Sigma for 'E')
>       _______________
>      /        _  2
>     /  E( x - x )
>    /   __________
>  \/       n - 1
>
> In this version, xbar (x with a line over the top) and n are both 
> basically either an intermediate verb or noun:
>  xbar = mean(x)
>  n = count(x)
>
> Here is an off-the-cuff example of how you might introduce someone to the 
> mean and standard deviation using existing J. I'm sure it can be improved 
> on both didactically and syntactically, but the idea is to put forward how 
> a teaching session using existing J might look.
> How would the equivalent look in S?
> Is it that much better that the effort of developing and maintaining a new 
> language is required?
>
> ========== J session ===========================================
>   NB. The arithmetic mean is often used to provide an estimate of the 
> middle or centre of a set of values.
>   NB. To calculate the mean of some values, we sum those values and divide 
> the sum by the number of values
>   NB. So for the values y
>   y=: 4 5 6 2 3 4
>   NB. The sum of the values is:
>   +/y
> 24
>   NB. the number of values is:
>   #y
> 6
>   NB. the sum divided by the number is:
>   24 % 6
> 4
>   NB. We can do this in one step:
>   (+/y) % #y
> 4
>   NB. We can define the formula for the mean as a verb for easy reuse:
>   mean=: verb : '(+/y) % #y'
>   mean y
> 4
>   mean 3 7 4 5 8 2 3 4 5
> 4.55556
>
>   NB. The standard deviation is often used to provide an estimate of the 
> spread of a set of values.
>   NB. To calculate the standard deviation of some values,
>   NB. we take the take the sum of the squared deviations of the values 
> from their mean,
>   NB. and then divide that number by 1 less than the number of values and 
> take the square root.
>   NB. The deviations from the mean are:
>   y - mean y
> 0 1 2 _2 _1 0
>   NB. the sum of their squares is
>   +/ *: 0 1 2 _2 _1 0
> 10
>   NB. or combined:
>   +/ *: y - mean y
> 10
>   NB. now divide by 1 less than the number of values
>   (<:#y) %~ +/ *: y - mean y
> 2
>   NB. and finally take the square root:
>   %: (<:#y) %~ +/ *: y - mean y
> 1.41421
>   NB. It is again helpful to define the formula as a verb for easy reuse:
>   stddev=: verb : '%: (<:#y) %~ +/ *: y - mean y'
>   stddev y
> 1.41421
>   stddev 3 7 4 5 8 2 3 4 5
> 1.94365
> =====================================================
>
> This "session" could be be easily adapted for presentation using the 
> existing Lab facility in J.
>
> If you decide to move forward with your idea I suggest that you might like 
> to come up with a different name:
> * Using a single letter as a name for something has a lot of disadvantages 
> when it comes to searching for that name on the internet.
> * There is already a language called S 
> <http://en.wikipedia.org/wiki/S_programming_language>
>
>> I apologize for not using the Wiki. My generation was not brought up
>> to understand instructions. Few things used to have complexity.
>
> Compared to the complexity of the thought that went in to your proposed 
> syntax, using the wiki is very simple!!
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm 

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

Reply via email to