On Apr 25, 2009, at 5:35 AM, Don Watson wrote:
> Your second question, Bill, is the $64,000 question. I am only
> thinking
> presently of the issue of persuading the J community that there is
> something
> worth doing.
Don, Ric, Skip, Fraser, Raul, et. al.,
First, let me say that I have been enjoying this discussion
immensely. Not only for the topic, which is of interest (more about
that below), but also by the manner in which the disagreements are
recognized, stated, and rebutted. In these days of increasingly
strident, disharmonious, barely-formed thoughts and better-left-
unsaid irrational self-expressions, the manner of discourse on this
list, and this topic in particular, has been as refreshing as a cool
glass of water on a hot day. Thank you all.
Don's original proposal for 'S' was specifically for the purpose of
enabling younger students to more easily adopt and use J (based on the
unproven assumption that tacit J was an impediment).
While some of you have been focusing on the issue of Don's specific
proposal of adapting J's tacit expressions into something else, some
of you have also recognized what I also think is the real issue:
removing the impediments to J's increasing adoption and usage.
Of course, it is argumentative whether or not J is perfect as it is.
Irrespective of any belief that J is perfect as it is, some of you are
concerned with the current rate of adoption and usage of J as a
language.
It might be interesting to read an interview of Arthur Whitney, in an
issue of ACM's Queue, Feb/Mar 2009, pg: 17, where he is discussing why
he wrote Q while still supporting K.
> AW: K was all symbolic. It was 20 symbols with a prefix
> and an infix meaning. With Q, the idea was to have all
> the monadic cases be words. So now infix are the symbols
> and prefix are the words.
>
> BC: This gives it what you call the wordiness—I think what
> others might call readability. For those who are not in
> that world, will a Q program look more readable than a K
> program?
>
> AW: Absolutely, because a lot of these symbols are familiar
> to people from other languages—plus, minus, times,
> greater than, less than. If they’re looking at a K program
> that’s using all 20 of them, they will know a half or a
> third of them, whereas if they’re looking at a Q program
> they will know about two-thirds of them.
>
> BC: How important is the readability to the uninitiated?
>
> AW: From a sales point of view, I think it has helped a lot.
> For someone who programs a few hours a week, I don’t
> think it would make any difference once they learned K
> or Q.
The point of the above quotation is that Arthur recognized an
impediment to the adoption of K (at least in the vertical field of
finance), and developed Q using K definitions for all the monadic
verbs. Thus, making all monads prefix operators as words, and leaving
all dyadic verbs as infix operators.
So what problem was Arthur really addressing? Rate of adoption caused
by what?
Unfamiliarity with the symbols? Overlapping meanings to the same
symbol? Or, was it the difficulty of parsing many juxtaposed symbols?
If there were more symbols in ASCII, there would probably be less
overlapping usages of meaning to symbols, where the same symbol has
two meanings depending upon the context: a monadic function, and a
dyadic function, and which usually (but not always) have related
meanings.
But, even if we had no overlapping meanings on the same symbol, there
would still be the problem of parsing J "words" among a string of
juxtaposed symbols.
A test case: it will take J experts a few seconds to parse this
"sentence":
!@;#$%,^+&*-([.])-
to realize that it's not a proper J sentence at all, but just random
graphical characters from the keyboard. A J learner would have to
work very hard to figure out that it's just gibberish.
Part of Arthur's problem was making it easier for his sales team to
convince new customers that the tool they were trying to sell to them
made things easier. It's hard to convince someone that their job will
be easier with a new tool, if you find it hard to even read the
language of that tool.
So, the symbolic nature of J's language impedes rapid understanding of
the meaning, and, even more, it impedes rapid parsing of the sentence
into its parts.
I think the major part of the impediment to learning and writing J is
the juxtaposition of graphical symbols, where the "human parser"
becomes challenged because we have hundreds of years of parsing
certain characters, such as '&', '.' and ':' one way, and J challenges
those human language parsing rules.
Some of you have said that once the J language is "acquired" that
these impediments fall away, but what I am describing is an impediment
to making the acquisition in the first place.
I'm not very expert at J, so I can only make guesses about the best
way (if any) there is to address these impediments to adoption and
usage. But, some of you are very expert at the language, as I've
deduced from discussions, and from reading the sources to your
contributions to the J library.
If I had to toss out an idea (which has probably been done before),
here's one for the IDE: a "verbose transcription" mode?
Perhaps having a display mode in the J IDE which presents symbolic
verbs using spelled-out names (with spacing of course) might help? If
this "verbose mode" existed in the IDE, then a J learner could open
any J script, and upon rendering in "verbose transcript" mode and
easily decipher the meanings. Of course, with the correct library of
operator name definitions, the J learner could also write complex J
sentences and scripts using either words or symbols. When saving to a
file, the "verbose transcription" mode would translate (where
possible) the symbolic names into their normal J symbolic equivalents.
Anyway, thanks again for the fascinating discussion on the merits of
revising J's tacit expressions, and for all the other thoughtful
discussions that this list has provided.
--
Alan Stebbens
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm