In his post, Harvey gives examples where he shows where the keyword tagging of information is critical to the learning experience. As I have mentioned in earlier posts, beginners and casual users have a very difficult time finding how to build the functions that they want in J. This is primarily because the names that the neophyte might commonly enter into a search engine to find a specific function or example, is simply not in J's documentation. As Harvey explains in his post: "the terms currently used may be quite exact, but many of them are not the first word that may come to mind for the concept involved; the index of words needs to include additional alternative English words for some of the terms chosen as well as inverted forms (that is, both "natural logarithm" and "logarithm, natural")"

I know from direct experience, nearly 2/3rds of the time, the functionality I seek in the documentation can't be found because of missing terminology. The functions I need are almost always there somewhere, I just can't find them. This isn't an indexing problem. The J Ndx and the Google domain search does a fine job of indexing. This is a semantics problem. The words used by the searcher aren't the words used by the author.

If the user finally does find what they are looking for (often by posting a request to the forum), it should be standard procedure for the user, or the person who answered the users question, or the author, to add the keywords that was used to ask about the function, to the documentation for that function. In this case, Harvey talks about the PDF version of the Dictionary in his post, so this isn't a wiki issue.

I am convinced that even though J is a powerful, general-purpose language, it will stay a specialist's tool, as long as this reference problem isn't solved. The paradigm shift required to grasp the basic concepts of J (or APL) is a significant barrier. Much of this barrier is simply the lack of common semantics between the learner and the documentation. Today, only the truly dedicated are willing to expend the energy to overcome this barrier.

Information on J comes in many forms; PDF documents, Forum posts, Wiki pages, MS Word docs, HTML docs, and more. Search engines have solved the problem of indexing all of these kinds of documents into a single index, allowing a single search to find keywords and return documents in all of these formats. The problem we face is the inverse of that - how to allow a neophyte user to add keywords (tags) to all of these formats so that it gets put into the search engine. Like the search process, a single simple step should allow a user to tag keywords onto the information he finds. Ideally, the find and tag operations could be performed in the same process.

So that is the challenge for J, if it wants to truly expand its user base. Some out-of-the-box brainstorming may be required to come up with the solution....

Skip.
.
.
.

PackRat wrote:
Hi, I've got a couple of doc nitpicks from a "beginner" perspective:

(1) Could the Dictionary *please* have "Related Words" sections added to the entries for both the monadic and dyadic forms of words? There could be one related or several related words--or perhaps no related words. I'm thinking primarily in terms of cross references to related words (for example, box/ace) or to opposites and inverses (for example, take/drop, box/open, square/square root, infinity/negative infinity)--
of course, these should be hotlinked in the online version.

As a beginner, I have the darndest time trying to find related terminology. The Dictionary seems to indicate *no* relationships between the words contained in it (that is, no "see also" references). Perhaps there are relationships, but they certainly do not seem at all intuitive to a new user. (I'm aware, of course, that there is a relationship between inflected forms, but that symbolic relationship is not always obvious in the terminology used.)

(2) The Dictionary (at least its PDF print version) needs two major additions to its indexing: (a) the terms currently used may be quite exact, but many of them are not the first word that may come to mind for the concept involved; the index of words needs to include additional alternative English words for some of the terms chosen as well as inverted forms (that is, both "natural logarithm" and "logarithm, natural")--a good index has *lots* of entries; and (b) an "alphabetical" index of the primitives in ASCII order for quick assistance to new users in figuring out sequences of verbs, etc., found in published scripts, electronic books, documentation resources, and forums. (I've had to create such indexes for my own learning purposes, but I don't think new users should have to do that for themselves.) The "Ndx" does fine with alphabetical entries, but there's plenty of room along the top of the page to include the punctuation symbols as well. To truly be a "master" index, it should include the "base" symbols; the inflections would be included under each base symbol.

Curiosity question: how come the ijt and ijs entries in "Ndx" aren't hotlinked?

(3) EXAMPLES! EXAMPLES! EXAMPLES! Advanced users can easily get by (that is, "Oh, I see!") with only a single example or two, but new users need lots more. This is by far the most common complaint among new users of *any* software, whether application, language, or whatever. What I think is needed is an additional "Dictionary of Examples", where there might be, say, 10-15 examples for each verb, adverb, control, foreign conjunction, etc. These examples would use "real" data (that is, avoid the iota/integers generator), both numeric *and* textual, and would illustrate all sorts of cases where this verb (etc.) might be practically used. Perhaps there might be a separate "dictionary" of examples for the verbal commands in the "Definition Summaries" (such as wd, gdbmp, colhdr, rplc, etc.) What would also be extremely useful for newer users is a small collection of "real world" type application script examples that would have *extensive explanatory commentary*. I'm not looking here for multi-hundreds of lines of code (which I guess, based on forum messages, is what sophisticated commercial application scripts must seem to have), but for simple scripts that might be up to, say, 20 to 50 lines that illustrate a self- contained "mini-application" (even something as simple as reading a disk file, massaging the data in some way, and writing the revised data back to disk--this is a basic operation that is fundamental to most or all other application scripts). The forums and such provide lots of elegant single-liners and such, but there's little about the preferred method(s) of creating application scripts: what should be at the head of the script, how to arrange code for best understanding and maintenance, and what code and cleanup should be at the end of the script.

(4) All online documentation should also be available in PDF files. (Some is, some isn't; some current PDF's may be official, some may be "unofficial".) There should be "Print PDF" buttons associated with each online document.

(5) I'm a librarian, but I was a former (35 years ago) elementary school teacher and have done some teaching at the college and adult level, too. These experiences reinforced for me the values of simplicity and clarity in the learning process. The current problem with J is that, with all the current documentation and such, one jumps into the middle of the language. There is no real "beginning" aspect for brand-new users. Because J requires a paradigm shift in thinking (compared with other programming languages), I feel that it is absolutely necessary that J have a new additional set of documentation designed specifically for "beginners" that takes things "slow and easy". Much of the content could, of course, be derived from some of the current documentation--just re-worded, re-phrased, and simplified, with lots of examples.

By the way, if anything above is misphrased or seems to be a misunderstanding of J, please remember that I'm a beginner to J, and I'm still learning little by little as I have opportunity.

There has been discussion about making J more widely known and used. I think that "new user helps" along the line of what I described above could be useful towards reaching that goal.

Harvey


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



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

Reply via email to