Juggle Home - Bits'n'Pieces - Feature Hitlist - Problem Reports - Mailing lists - The J Repository - References +-------------------+ | 9!:12'' | |5 | +-------------------+

J documentation

Some advice on what to read and what not to read if you are a J beginner. This is a very personal perspective.

Most of the documentation / tutorials which J beginnners are hunting for usually falls into one of two categories:

  1. The "J is easy" camp

    maintains that J --or at least a subset of J-- can be easily learned and used. Examples:

    • the "Introduction to J" / "Sample Topics" (these days bundled with the proper "Dictionary of J")
    • J Primer
    • Learning J
    • NuVoc
    The style is often informal, and often the mere presentation of expression/result pairs is deemed sufficient to make you learn how J works.

  2. The "learn all the details!" camp
    • Dictionary of J (the third, "reference" part of the Introduction/Samples/Dictionary bundle)
    • J for C Programmers

    These documents are very rigid and do get down to the details.

Truth is: in J, details matter. Many details. And most are invisibly at work, often fooling your eyes.

My personal experience: the informal docs didn't work for me. In particular, looking at the "expression/result" samples I developed consistent but too naive and wrong models of the J language. These wrong guesses would carry me across half of my own experiments but did utterly fail with the other half. This caused lots of frustration.

This is how I finally made it:

On a two-week skiing vacation in the Alps, I had no computer but the (small) "Dictionary of J" booklet with me. In the evenings, I sat down and sloooowly read that, starting at the beginning, and making sure to skip *nothing*. Very soon, on page 3, I would stumble over details I hadn't even been aware of so far, but which were at the core of many of my mis-understandings. Having these resolved, all other pieces of the big J puzzle started to fall into place, too.

Mind you: it was still slow reading. Often I spend 30-60 minutes on just a single primitive.

Highly recommended: JfC

These days, Henry Rich's marvellous "J for C Programmers" exists and is much easier to read. Henry really understands how J works and tells you everything at a gently pace -- and without omitting anything.

You don't have to be a C programmer. Any prior programming experience will be good enough, and I expect that even without any other programming language on your back, you will do fine with this book.

Beware of the "easy" stuff

I am afraid that many authors in the "J is easy!" camp have not really understood J themselves but just think they do. These authors are certainly well meaning and put lots of efforts into the documentation they provide, but --very sadly for all parties involved-- if it's wrong, it's wrong.

I am particularly sceptical about the NuVoc community effort. All too often I find wordings I can not be happy with.

"Typical use" and "related primitives" are worthwhile additions in the NuVoc, but they are no substitute for a complete and systematic definition. The oh so late addition of rank specs is indicative of the projects shortcomings.

Disguised tutorials

If you have learned the J foundations but are still a beginner, you can find good examples for elegant J in these two places not really advertising as "learner's books" -- but they are:
  1. The "J Phrases" collection.

    It doesn't say so anywhere, many of the J phrases are developed in a tutorial fashion, often teaching variations of expressions or building more complex expressions from simple base parts.

    Most phrases are just two or three primitives bolted together, already yielding something useful.

  2. Cliff Reiter's "Fractals Visualization and J"

    I like this book for its very tasteful application / use of J. The J expressions all have decent size and yet they solve real problems ("computing images"). You won't find those endless one-liners they throw at you on the mailing lists.

+-------------------+ | 9!:12'' | |5 | +-------------------+ Juggle Home - Bits'n'Pieces - Feature Hitlist - Problem Reports - Mailing lists - The J Repository - References