> I have a paper at:
> www.bcompanion.com/verbs
>
> It is an attempt to make J more consistent and thus easier to
> learn.
> Explicit definition is replaced and three alternatives to the two
> character
> primitives are considered.
Don,
I printed your "paper", on paper, and read it.
After reading it, I thought about it for a while. These are my
thoughts:
You don't like the current fork syntax, so you are proposing a new
one, using symbols that already have a well-established meaning in J
scripts '{' and '}', which is a disruptive change for existing J
experts.
You don't like the current mappings of symbols to functions, so you
are proposing a new set of two-character symbols, some of which may be
obvious to mathematicians, but surely the rest are more or less
arbitrary abbreviations of convenience.
Your reasons for using two-character symbols were, hmm, less than
compelling to me:
Different length names being inconsistent?
Lack of brevity prevents elegance?
I disagree with these specific rationalizations, but perhaps that's
just me. Mathematic formulae often use different length symbols: ln,
exp, sin, cosh, sigma, avg, mean, etc.
Most pure mathematical texts go through a sequence of definitions, so
that the final summary equations are in units of single character
symbols previously defined. This is easily accomplished in J, without
needing "standard" two character symbols.
Also, two character abbreviations will, at some point, be ambiguous.
For instance, "Sq" could mean "Square" or "Square root". Of course, I
can memorize it, but why is this any different than memorizing '*:' or
'%:'?
The association of '*' and '*:' to multiplication and '%' and '%:' to
division are more useful to me than the non-association that occurs
with character names. I like the feeling that occurs with '%:' and
'*:', one of unification.
On the other hand, I do like having names for certain phrases, because
it helps with comprehension, later, when I'm re-reading the code.
Verbs like "each" or "apply", or "select", etc. are J phrases,
sometimes complex ones, and not just named symbols.
The changes you are proposing would not be J, they would create a
language more like R, Matlab, or Mathematica.
Why not use those languages and environments? In some ways, R is even
richer than J in its use of objects and attributes (something I wish J
could do better, without having to cobble it up myself).
More generally, it appears that you are trying to solve a currently
intractable problem -- taking a concise, terse language, J, focused on
mathematics and analysis and replacing it with something slightly less
concise, slightly less terse, which you have been calling "S" and now,
"J2", for the purpose of "lowering the barrier to entry" (as marketing
folks say) and enabling more rapid comprehension of the language in
order to teach mathematics.
The problem is that using 2-character symbols, and changing basic
parsing syntax (e.g. '{' and '}' being special and not normal verbs)
does not produce a significantly easier language to learn, only a
different one, that, perhaps you find easier.
I would submit that using J to teach mathematics might be made easier
if the teaching were to follow the standard sequence of most math
texts. Here's a simple example of a sequence of definitions:
d0 =: 100 NB. initial distance
d1 =: 200 NB. next distance
t0 =: 2 NB. initial time
t1 =: 10 NB. next time
v0 =: d%t0 NB. initial velocity
v1 =: d%t1 NB. final velocity
a =: (v1 - v0)%(t1-t0) NB. acceleration
You can imagine the definitions leading up to the following complex
equation:
Esv =: ((3*(Rp^3)*(c^6)) % (8*pi*(G^3)*mp*(M^2))^%3)*Enb
The point, IMHO, is that learning mathematics with J is possible
without changing the language, and students can be brought along
easily, incrementally, one symbol at a time. It's actually much
simpler than learning a new alphabet, like cyrillic for Russian, or
katakana, hiragana, and especially kanji, when learning Japanese. For
example, これは、日本語です。Это Русский язык.
Learning how to build hooks, forks, and using atop, bond, under, dual,
and agenda can also be accomplished one lesson at a time. Practice
makes perfect! повторение матъ ученя!f
I have my own complaints about J, and K, and APL, but I don't think
the solution to my complaints is to change the syntax of the
languages. I'll explain my complaints in a separate email.
Good luck with your teaching!
--
Alan
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm