Hi Fraser,
Thanks for your email, I found it very helpful.
You state:
"It seems to me that your concept of what is in school mathematics dates
from 30 or more years ago than what is in the texts today. The language for
the school mathematics curriculum must be able to produce a wide range of
graphics, be suitable for many operations with sets, be a good tool for
exploring a range of statistical ideas as well as providing a tool for
covering some of the traditional topics which you have discussed. Most texts
include a good deal of material you have labelled as computer science, but I
would classify as appropriately specifying an important mathematical
algorithm. J is in fact an excellent fit for this."
I agree with you. However, the school curriculum is aimed at the lower
end of the spectrum, for which it is good. There isn't a lot of Mathematics
in it. I found that for the 10 year old boy I am giving enrichment, I have
had to find university texts.
_______________________________________________________
You state:
"I think you will also find that the concept of a function has a very
important role in this material and that can be enriched greatly using J and
its very simple tools for defining new functions and exploring their
behaviour. I therefore think your avoidance of using simple defined
functions in expressions is misplaced. In my experience students wanted
them - and used them. Mathematics teachers will not really get up to speed
unless they take them aboard in the rich way Ken intended with his language
tools. You might like to look at a paper by Walter Spunde (a keen J user)
who was concerned
with teaching teachers. http://www.icme-organisers.dk/tsg14/TSG14-15.pdf"
From the email that I sent yesterday, you will realize that you have
convinced me. I agree.
___________________________________________________________
You state:
"Polynomials form an important traditional topic in elementary school
mathematics. To treat them sensibly in J you really must use the primitives
and teach students the relationship between the traditional notation and the
elegant and simple tools in J. To re-express everything in a manner which
mirrors the traditional tools just does not make sense."
I think you will agree that elegance and simplicity require rules that
are simple, powerful, logical and small in number. The rules in explicit J
exactly fit these criteria. I agree with you entirely with regard to
explicit J. I have no wish for the rules of explicit J to be changed.
However, the rules in tacit J may be powerful, but they are not simple,
logical or small in number.
I originally called what I was proposing S, because I wanted to
emphasize that I did not want to interfere in the work of J users. This
would be an extra and separate facility. However, this has probably caused
confusion. I will now call it Revised Tacit J. These are the complete rules
for Revised Tacit J:
In the explicit J expression:
1) Wherever there is a y to the left of a right parenthesis, remove it.
2) Whenever there is a y to the left of dyadic verb, replace it by (]).
3) Wherever there is an x replace it by ([).
This has 3 rules, which are simple and small in number. It is logical,
because at execution time the system:
a) Can find all right parentheses and put the right argument to the left of
them - from where y was taken.
b) Can find all "]" and place the left argument to their right,
````from where x was taken.
Now give me the rules for your tacit programming and show them to be fewer
in number, simpler, more elegant and more logical.
__________________________________________________
To continue, the vocabulary of J has other rules:
1) Use %: for square root.
2) Use *: for square.
and so on.
I have not seen explained why these are needed. It may be
obvious to many of you, who weren't bothered because you could
see through it to the value of J, but it needs to be explained to many
others, for whom extra rules are a barrier. If you want J to spread,
it would be helpful to do something about it.
I am not suggesting that a single symbol be used for all 2 character
J primitives, and I agree with Ric that many people will quickly adjust
to the two character primitives, but if you want J to spread, you need
to remove barriers.
I am going to look into this and will be back. I think that if there
were
an introductory version of J in which the most frequently used and
earliest used primitives could be given the same symbol as in
Mathematics, it would help to get people started. They could then
move to the two character symbols whenever they were ready. But I
will have more to say later.
_________________________________________________________
You state:
"The students now are all computer users. They have experience of the need
to follow the rules for a particular program or game or whatever."
I agree, but making students learn and use Mathematics rules was the old
way of teaching the subject. The emphasis today is on students understanding
what they are doing.
________________________________________________________
You state:
"The biggest problem is not with the students but with the teachers
that you are trying to reach."
I agree and have stated so previously.
________________________________________________________
You state:
"After you have done so, there is the further problem Bill
mentioned, of getting the material into the curriculum."
If you expect to get a big change quickly, then yes, but that isn't how
things get done successfully in life. I did give some of the history of how
APL spread. First you get champions who are able to quickly see the
advantage. You don't force them, they just get enthused and get going -
bottom up. When it has spread, that's when those at the top get interested.
APL spread like wildfire. You have to ask yourself "Why hasn't J spread?"
It isn't because you can't convince those at the top, it's because you can't
convince enough at the bottom.
________________________________________________________
You state:
"For some reasons which I do not understand the Computer Science departments
seem to have been inoculated against the use of J even though it is an
exceptional functional language."
APL was spread by Computer Centres for disciplines that needed to use
computers. Universities used to have - I don't know whether it still
exists - intense rivalry between Computer Centres and Computer Science
departments. Computer Centres could get students on their computers using
APL without them having to take a computer course from the Computer Science
department - a loss of control that was resented.
J is similar and doesn't fit into the nice slots of Computer Science -
so it is ignored.
_________________________________________________________
You state:
"You seem to be very concerned about the symbols. The programmers of the
world, many of them exceptional mathematicians use words. Mathematica has
thousands of functions which all have distinct word names. Having a whole
set of new primitivie characters is not necessary for commercial success
with mathematicians. We should not be frightened to use words instead of the
symbols for the primitives. In my experience school students can start
readily with the primitive names and drop them at any time they are
sufficiently familiar with the graphic representation which is the standard
in this forum."
I don't have a problem with using words where they help and are needed.
My problem is using them when they are only needed because something
is wrong.
_______________________________________________________
You state:
"There clearly is something worth doing, but do not expect to persuade the
whole J community. All that is needed is a small group who actually do the
things they think are needed."
Nothing gets done in life because everyone agrees. There are some people
who are committed to the same idea and will always agree. There are some who
are strongly against the idea and will never agree. In the middle are a
group who will listen and either be convinced or see the flaws in the
argument for change. Which way the central group goes decides the issue.
________________________________________________________
You state:
"I found there was a real difference between learning styles of students,
and some will find an imperative style which you seem to be promoting
attractive, while others will favour the understanding and structure you can
attain with tacit form. To force all to use the same style may not be the
best approach and I would urge you to find some ways of introducing both."
I am a little puzzled as to how what I am proposing is imperative. It
is, however, interesting to pursue the idea you have introduced that some
students like an imperative style.
There are three questions that are fundamental to analysis, education
and perhaps life. They are "Why?", "What?" and "How?" They should be used in
that order. Until we are clear about why, we can't be clear about what;
until we are clear about what, we can't be clear about how.
Children seem to be born willing to ask why. Some are lucky and get
answers. When the rest don't get answers, they stop asking why, which
cripples their future. Mathematics was formerly taught by explaining a
little of what and a lot of how, but not much why. A big problem with
primary teacher education is the fact that all the candidate teachers were
taught like this, when the new methods of mathematics education emphasize
why.
I would suggest that the students you have that prefer an imperative
style are ones who have had the why knocked out of them long ago.
I must have been one of the fortunate ones, because my education always
taught me to ask why. When I looked at tacit J for the first time, I asked
myself why I can write:
+/ *: 2 6 8 9
but have to write:
sumsq =: +/ @: *:
Why is that @: necessary?
J documentation is very good at explaining what and how - but contains
very little on why.
I tried a few alternatives that I submitted to the General Forum, but I
just couldn't get to understand J that way. Then I started right from the
beginning and proceeded forward logically until I found something that made
sense - which I am now calling revised tacit J. That resulted in the paper
that I submitted to the chat forum on 22nd April.
I then subjected your tacit J to the same kind of analysis and
determined why. Someone decided that it would be very concise to write four
symbols side by side to represent a fork followed by a hook. This is a very
concise way of defining the deviation from the mean, for example. The
problem is that a one off rule that doesn't fit the rest of the rules leads
inevitably to a mess.
I have stopped worrying about avoiding confrontation with J users.
This discussion is long past that. J is broken and until it is fixed, there
will be no expansion of use.
______________________________________________________
You state:
"You do not seem to have used [: mentioned by Raul in any of the
material so far but it provides a neat tool for including and using
monadic verbs."
I have not used it because it is not necessary in the revised
tacit form.
______________________________________________________
You state:
"You are concerned about the inclusion of nouns in trains. A noun can
replace the left argument of any verb in an even position in the train.
Simple use of [ and ] and parentheses enables arbitrary functions of the
noun to be used in a train. Use of the reflex adverb can solve the problem
of it being a right argument of the function being used."
I am discouraged that tacit J seems to discourage the use of
constants to the left of dyadic verbs, but can live with it. You can
include a named noun to the left of a dyadic verb in tacit
programming as you wish. However, if you wish to avoid global variables
that have to be set before a named verb can be used, then you must
avoid named nouns in the definition of that verb.
____________________________________________________
Don
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm