Skip to content

Comments on J Questionnaire

Vector 8:4, page 83

language design implementations

Transcribed from the printed issue; not yet reviewed. Read it in the PDF of the issue, page 83

We were pleased by the interesting articles appearing in the J Section of the January VECTOR, and by the report on the questionnaire. We offer the following comments:

  1. “The Atari user did not get an editor at all. Characters can be typed on the command line, and there is a destructive backspace, but nothing else.” Terminal input/output are implemented in such a way as to avoid interference with underlying facilities. A line editor would have been available if the system had one; that line editing is not more “user friendly” on the Atari is a deficiency of the underlying system.

  2. “... the Suite variable an awkward method of program control”. Since the effect of $.=. label is equivalent to branch to label, it is hard to see what the difficulty is. Perhaps readers are looking for something like if then else, do while, or case statements, matters that are better handled by gerunds combined with agenda (@.) and power(^:) as illustrated in part by the following examples from An Introduction to J:

       +:'-:'*:'%: @. (4&|@<.)"0 i. 10
    0 0.5 4 1.73205 8 2.5 36 2.64575 16 4.5
       1:'(]*$:@<:) @. * "0 i. 6
    1 1 2 6 24 120
    
  3. “... or insist on tacit definition and operators for everything.”. Whereas we encourage tacit programming, we do not agree that proscription (even of obscenities) belongs in language design. In particular, beginners in tacit programming find it useful to make an explicit definition in the form m : d, and then enter m : 11 and d : 11 to see the equivalent tacit forms.

  4. “... would love graphics support.”. The current availability of the documented J Source (in C) will make it possible for others to port J to further systems, and to provide links to graphics and other resources appropriate to the particular system.

  5. “... if the 640K barrier was broken” This barrier was imposed by the limitations, both technical and legal, of the C compilers previously available. J for the 386 is now compiled using WATCOM C386, and the barrier no longer exists.

  6. Although McIntyre’s use of names such as lesser_of is valid, we would advise instead the use of names such as lesserOf and LesserOf. The reason is that a name with an underscore will be treated as a locative; for example, abc_def refers to the name def in the locale (or file) abc. Locatives are referred to and assigned in the normal manner.