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
