User:Devon McCormick/ProposedWikiEmphasis

From J Wiki
Jump to navigation Jump to search

New Wiki

As we develop this new version of the J Wiki, it's useful to have a few areas on which to focus. The following suggestions arise from the wiki meetings held over the past few months but is by no means complete. Look here for a retrospective on what has been discussed in the J wiki meetings. However, this current page is intended to be forward-looking in order to provide guidance for anyone who wants to pitch in on this effort.

Topics at the end of these meeting minutes also suggest some directions to explore. Also, Raul did some research on the wikis of other languages we may want to consult for ideas.

Some Immediate Tasks

Beginner-oriented Material

Integrating the J playground ("J in a browser") with new and existing topics seems like a good goal to keep in mind.

It may also be useful to categorize or organize material under broad topics of interest, like these:

 * General student of array languages
 * Data Scientist
 * Quantitative developer
 * Web developer
 * Database developer
 * Installing J (detailed instructions per platform)

Other Suggestions

We have these suggestions from Ian Clark. I think he agrees with our ongoing emphasis on beginners and introductory material but has this to add:

...a meaty masterclass on (say) debugging may fire-up a J newcomer if it's not couched in J-speak or somehow else mystified. They may not follow the detail without doing some homework, but be impressed with how much easier it is than they're used to.

Masterclass topics

Ian started of with general guidance and suggests some areas in which he is interested in pursuing but would welcome any help offered.

J best-practice

J tools to make life easier for the jobbing programmer, the use of which may not be obvious to a beginner. Or tools which suit a particular sort of workflow or problem-solving approach, which even a J journeyman might not know about.

The sort of things that are *not* to be found in the programming forum or NuVoc, but more like a chapter from 50 Shades Of J, or At Play With J.

  • Debugging - using (13!:) versus Run > debug… Avoiding use of debug at all via line-by-line re-execution in the session manager, having assigned (y=:…) and (x=:…) .
  • stdlib gems - ignoring verbs that a C++ programmer would expect to be there, or verbs like mean or avg, which are flaunted for their gee-whizz value.
  • string handling - Not just { {. {: but stdlib tools like rplc, (;:), taketo, regex and handling unicode.
  • Understanding someone else's tacit expression, e.g. examples from _z_ locale or addons. Use of (13 :), addon: tte, dissect. Reducing to a train and dividing into triples. In fact *dissect* merits a whole masterclass to itself". Henry Rich also sees this as a good point of emphasis. Ian says "It's something I've never got on top of (having long fossilized my J usage and so never felt the need for)."
  • Rank - how it makes functional composition far easier to code than does APL. Why does J need so many confusing conjunctions and constructs for function composition: Atop (@), At (@:), Compose (&), Appose (&:), Hook ((u v)), Fork ((f g h)) (…actually it doesn't)? A bit of history as to how it all arose, why ("0), ("1), ("_) covers 99% of what you'll ever need.

Impressive Visual Displays

There are many great math-based images available in J, from Mandelbrot on down [except that we do not have a Mandelbrot example.]

In any case, some people respond better visually to graphics than to text or math, so we should put up some good examples of what J can do here both with mathematical abstracts and some real-life graphs.