I am not a strong proponent of altering J's symbology. However, as an
old APL user, I always loved the single-symbol-per primitive feel of
APL, even with the associated printing and keyboard hassles. After using
J for a few years, several half-baked ideas keep popping up in my mind
about "what-if" scenarios of single-symbol options for J. Don and
Roger's discussion on alternate symbols in the forum spurred me to
collect these half-baked ideas into a post and throw them out for
discussion.

If one did want to change J's symbols, or at least provide an alternate
symbol set for J, the goal should be to define a single symbol for each
primitive that describes in a shorthand way, what that primitive does.
The ideal primitive symbol should convey the basic actions of each
primitive to a person not familiar with the language. The current ASCII
symbols J uses are heavily loaded with pre-developed semantic
associations that new users bring to the table. A symbol set without
this semantic baggage, could perhaps speed the learning curve and and
retention process for J.

This isn't to say that inventige these descriptive symbols would be
easy, or even possible, but it would be a worthy goal. With the graphics
capability of today's computers, the technology is there to do it.
Coming up with truly descriptive symbols is the problem. The symbols in
an automobile dash panel indicating oil pressure, water temperature,
fuel level, etc. come to mind as examples of "descriptive symbols".
Those symbols were carefully developed so that they are not language or
culture-specific, but they are enough to define the functionality of an
indicator to anyone with a basic understanding of how an automobile
works. Defining symbols that hint at, let alone define, each J
primitives' function, especially to a non-user, would be real challenge.
But, descriptive symbols could potentially reduce learning curves and
improve language retention.

The plan whould be to provide single-character function-descriptive
"descriptive symbols" that would replace non-descriptive single ASCII
characters as well as all two-character primitive ASCII symbols that use
period or colon. There should be no attempt to provide symbols for
combinations of primitives. No sigma symbol for "+/" for example. The
rule would be: one J primitive - one descriptive symbol. No exceptions.
Another requirement would be that related operations should have symbols
related in an obvious graphical way (same color? same outside shape?).

How to enter these "descriptive symbols" on a keyboard is another
challenge. The descriptive symbol mode could be just that, a mode that
any J script can be converted into. So in the descriptive symbol mode,
one types in the standard one- or two-character ASCII characters for the
J primitive, but in the DS mode the descriptive symbol appears on the
screen. A single function keystroke could switch the display between the
descriptive symbols and ASCII. So, the programmer always types in the
ASCII mode, but the screen displays either regular J or the descriptive
symbols, depending on the mode. The descriptive symbols could be a
display option, but J code would always be ported using the ASCII
scripts. We had to type multiple keystrokes for some APL symbols, so
this is no different.

Other alternatives or features for descriptive symbols would be pop-up
"tool tips" for each primitive symbol, that pop up when the mouse is
placed over each symbol in an expression. Or a "hot-link" mode where
every symbol in a J expression is a hyperlink to the dictionary
definition of that symbol. For that matter, the hyperlink scheme could
be used on today's ASCII J code too.

Providing a hyperlink to a primitives' dictionary definition is the most
obvious help scheme. However, a beginner wanting to know what each
symbol does may need to be pointed to a more lengthy description of the
primitive that doesn't assume so much prior knowledge of J and the
dictionary conventions.

The primary goal of any alternate symbology would be to reduce the
"Huh?" reaction to J by most newcomers, improve the learning curve for
beginning learners, and help veterans like me to remember what the heck
that ASCII character does, that I haven't seen in a while. In any case,
true functionally descriptive symbols would be a significant challenge
for a graphic designer.

Just a thought...

Skip Cave

<<<>>>
Roger Hui wrote:
> Using "∑i.5" to display "+/i.5" obscures the power
> of adverbs.  +/x and */x tell you that the two operations are related.  Not 
> so Sigma x and 
> Pi x.  And what do you do for *./x (for example)? 
> Big LCM?
>   

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

Reply via email to