Intro

Introduction

J is a general-purpose programming language available on
a wide variety of computers. Although it has a simple structure
and is readily learned by anyone familiar with mathematical
notions and notation, its distinctive features may make it difficult
for anyone familiar with more conventional programming languages.

This introduction is designed to present J in a manner that makes
it easily accessible to programmers, by emphasizing those aspects that
distinguish it from other languages. These include:

 1 A mnemonic one- or two-character spelling for primitives. 2 No order-of-execution hierarchy among functions. 3 The systematic use of ambivalent functions that, like the minus sign in arithmetic, can denote one function when used with two arguments (subtraction in the case of -), and another when used with one argument (negation in the case of -). 4 The adoption of terms from English grammar that better fit the grammar of J than do the terms commonly used in mathematics and in programming languages. Thus, a function such as addition is also called a verb (because it performs an action), and an entity that modifies a verb (not available in most programming languages) is accordingly called an adverb. 5 The systematic use of adverbs and conjunctions to modify verbs, so as to provide a rich set of operations based upon a rather small set of verbs. For example, +/a denotes the sum over a list a , */a denotes the product over a , a */ b is the multiplication table of a and b . 6 The treatment of vectors, matrices, and other arrays as single entities. 7 The use of functional or tacit programming that requires no explicit mention of the arguments of a function (program) being defined, and the use of assignment to assign names to functions (as in sum=:+/ and mean=:sum % #).

The following sections are records of actual J sessions,
accompanied by commentary that should be read only after studying
the corresponding session (and perhaps experimenting with variations
on the computer). The sections should be studied with the J
system and dictionary at hand, and the exercises should be attempted.
The reckless reader may go directly to the sample topics.