On 11 December 2012 06:23, Johann Hibschman <[email protected]> wrote: > it seems like such a linear way to work.
i think that sums it up. If an effort were made to make j a truly 2D language i think it could meet and vastly exceed all the values we all attribute to `traditional` notation. As it is we have a full dimension tied behind our back. With tablets and such, with fat fingers, the need, and the possibilities, are growing evermore acute. greg ~krsnadas.org -- from: Johann Hibschman <[email protected]> to: [email protected] date: 11 December 2012 06:23 subject: Re: [Jchat] Was: [Jprogramming] J v Python I can't pretend to either be an educator, but for my own use, I've found that J makes for a great computational notation and a great notation for writing about mathematics on computers, it doesn't work well for me as a pen-and-paper notation for actually doing math. If I'm writing something up, I'm naturally contrained to a single linear line of text, and I don't have to worry about how long it takes me to handwrite symbols. If I'm doing work on paper, on the other hand, I can work in two dimensions with fractions, and it matters that I find "*" to be a relatively slow symbol to draw. Similarly, "traditional" notation naturally maps to simple algebraic manipulation in a way that J doesn't. If I have e = a + 2*b + c + d (traditional) I can write e - 2*b = a + c + d while the same tokens in J, e = a+2*b+c+d can only naturally be "split" rather than reordered. (e-2*b+c+d) = a Even, then, the "split" only works for an initial element, since it's not true that e = a-b-c-d is the same as (e+c-d) = a-b I'm not that satisfied with these examples. The point I'm trying to express is that since J expressions are strictly cumulative, most manipulations require an awareness of the entire expression, unlike algebraic notation, whch builds on the associativity and commutativity of addition. As an example, I found it much easier to work out a basic derivation of the quadratic formula in traditional notation rather than in J notation. In J, it would be hopeless if I didn't use the polynomial verb. 0= (c,b,a) p. x 0= ((c%a),(b%a),1) p. x (*:-:b%a) = (((c%a)+*:-:b%a),(b%a),1) p. x ((-c%a)+*:-:b%a) = *:((-:b%a),1) p. x (*:-:%a)*((*:b)-4*a*c) = *:((-:b%a),1) p. x ((],-) (%:(*:b)-4*a*c))%2*a) = ((-:b%a),1) p. x x = (2*a)%~b (+,-) %:(*:b)-4*a*c vs. 0 = c + bx + ax^2 0 = c/a + (b/a) x + x^2 b^2/4a^2 = c/a + b^2/4a^2 + (b/a) x + x^2 b^2/4a^2 - c/a = (b/2a + x)^2 (b^2 - 4ac)/4a^2 = (b/2a + x)^2 +- sqrt(b^2 - 4ac)/2a = b/2a + x x = (-b +- sqrt(b^2 - 4ac))/2a Writing out the J on paper took forever, with lots of fiddly little colons and adding extra parentheses to make the expressions work. I often had to "go back" and insert parenthesis around expressions, which isn't a problem on a computers, but is a nuisance on paper. Lest you think this is a trivial example, it extends (I think) to bigger problems. If I try to imagine working my way through a typical (say) undergraduate physics E&M problem set using J notation, I think I'd grind to a halt. J is optimized for feeding into a computer, not for writing on a whiteboard or on paper. I know APL was used as a non-computer notation, but I think the "funny symbols" actually help there, and even then it seems like such a linear way to work. Now, I have no easy way to extrapolate to greater educational policy, but I can say that I'm glad to have both notations at my disposal now: traditional for working things out symbolically and J for implementing and experimenting numerically. Regards, Johann ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
