Newsgroups: comp.lang.apl
Path: watmath!watserv2.uwaterloo.ca!torn!howland.reston.ans.net!wupost!csus.edu!sfsuvax1.sfsu.edu!vpcsc4
From: vpcsc4@sfsuvax1.sfsu.edu (Emmett McLean)
Subject: JFAQ  _ May 26, 1993 _
Message-ID: <1993May27.051105.4720@csus.edu>
Sender: news@csus.edu
Organization: San Francisco State University
Date: Thu, 27 May 1993 05:11:05 GMT
Lines: 250



===================================================================
1.    What's J?
2.    Where can I get it?
3.    What publications are available ? And how much do they cost ?
4.    What are the copyrights ?
5.    Is there an instruction set I can peruse?
6.    What _free_ packages are available?
7.    News
===================================================================

1.    What's J?

     J is a functional shareware programming language  
     available via anonymous ftp at watserv1.waterloo.edu.

     Features include list-at-a-time processing, arrays of arrays,
     complex numbers, special features for multiplying polynomials,
     manipulating sets and generating permutations.  Although it
     provides support for numerical modeling, it is not a numerical
     modeling package.  It is a general purpose programming language.

     J was designed and developed by Ken Iverson and Roger Hui.
     It is similar to the language APL, departing from APL in using
     using the ASCII alphabet exclusively, but employing a spelling
     scheme that retains the advantages of the special alphabet 
     required by APL. It has added features and control structures 
     that extend its power beyond standard APL.  

     Although it can be used as a conventional procedural programming 
     language, it can also be used as a pure functional programming 
     language. 

     J is similar to the programming language A used at Morgan Stanley.
     A is not commerically available.

     J is portable and runs on : Acorn Archimedes, AT&T 3B1,
     Apple Macintosh family, Atari ST, DECstation (MIPS-based),
     DEC VAX (ULTRIX & BSD), Interactive 386/ix, IBM RISC/6000,
     IBM PC family, MIPS R3000, NeXT, Philips P9070, Silicon
     Graphics SGI Irix, Sun 3, Sun 386i, Sun 4 (SPARC), and HP95.

     It is possible to call C from J and J from C .

     If you are programming in an UNIX environment, you may wish to
     run J under j-interation-mode.el in Emacs. To get this package,
     ftp to "cmns.think.com" and get it at "gnu/dist-18.55/standard".
     If you prefer the feel of vi to Emacs, you can run vip-mode as 
     a minor mode. This will allow you to use vip's command mode to
     use commands such as z z. z- f F 0 ^ G H M etc. to move around
     the buffer and edit and re-execute commands, and to use vip's 
     insertion mode to execute instructions. Not everyone programming
     on a UNIX box takes this approach as some like running J as a 
     process under X.

     On the PC J's session manager is a single edit window, has a 
     standard menu and supports different fonts. You can run multiple 
     copies of J at once. 

     The window driver supports all standard window classes (button, edit 
     box, listbox, combobox, scrollbar, etc.).  It also supports a graphics
     class in which all GDI drawing commands are supported, a picture class 
     which can display WWF, BMP, and ICO graphic images, and an ole class 
     which can display OLE objects that are connected to servers such as 
     Msgraph and Paintbrush.  Ownerdraw buttons and listboxes are also 
     supported.  J can act as OLE clients and as DDE clients and servers. 
     J in there are no 64K limits. It also has online help.
    
2.   Where can I get it?

     For an executable version cd to "languages/apl/j/exec/*"

     To look at or compile the source cd to "languages/apl/j/source"

     Sometimes the source has a more recent version. 

     To compile set the variable SYS in js.h for your system.
     Set SYS_DOUBLE to one unless when you enter a numeric vector you
     get a core dump. If this occurs set it to zero and remake.
     A shar file which allows you examine the performance of J on
     your machine is available from rockwell@socrates.umd.edu .

     Alternatively, J, as well as a considerable amount of other J
     info is downloadable from BBS\APL, 703-528-7617, 1200-14400b,
     N-8-1, v.32bis, 24hours.  For further information contact
     Dick Holt at dick.holt@acm.org
  
3.   What publications are available ? And how much do they cost ?

     Documentation is available from :

     Iverson Software Inc.
     33 Major Street
     Toronto, Ontario, M5S 2K9
     Phone : (416)-925-6096
     FAX   : (416)-488-7559

     The prices below are in $US. $CDN at par.
     {DISCOUNTS:  50% for 20 or more copies of any one item;
                  25% for 10 or more.
      BOOKSTORES: 50% discount}

     For $24 + postage ($10 North America , $20 Overseas) you get :

       "A Dictionary of J" a comprehensive definitions of commands 
        including a tutorial and ,
       "An Introduction to J" a 45 page adumbration of the language,
        A 3.5 DD inch system diskette of J is also provided.

     Iverson Software Inc. also sells :
 
     "Programming in J" - $15 - A general introduction to programming.
 
     "Calculus" - $25 - This monograph is broader than that found in
     other publications embracing differential, difference, fractional,
     and vector calculus.  

     "An Implementation of J" - $90 - Explanation of the source
     code and information about LinkJ, the utility by which
     C is called from J and J called from C.

4.   What are the copyrights?

     Printed Iverson Software documentation is copyrighted. The copyright
     for the source is shown below.

/* ----------------------------------------------------------------------- */
/* J-Source Version 6.2 - COPYRIGHT 1992 Iverson Software Inc.             */
/* 33 Major Street, Toronto, Ontario, Canada, M5S 2K9, (416) 925 6096      */
/*                                                                         */
/* J-Source is provided "as is" without warranty of any kind.              */
/*                                                                         */
/* J-Source Version 6.2 license agreement:  You may use, copy, and         */
/* modify the source.  You have a non-exclusive, royalty-free right        */
/* to redistribute source and executable files.                            */
/* ----------------------------------------------------------------------- */
/*                                                                         */

5.   Is there an instruction set I can peruse?

     Here is a list. If you would like a pretty printed reference card
     of instructions (beautifully implemented in latex by Christopher
     Browne) ftp to "watserv1.waterloo" and cd into "languages/apl/j/help
     /reference.card"
   
     For example, to create the instruction "From" enter "{", to create 
     "Head" enter "{." , and to create "Tail" enter "{:" .      
+---------------------------+------------------------+-----------------------+
| Language Summary          | Iverson Software       |                       |
+---------------------------+------------------------+-----------------------+
|                           |.                       |:                      |
+---------------------------+------------------------+-----------------------+
| = SelfClassify Equal      | IsLocal                |Is(Global)             |
| < Box          LessThan   | Floor       LesserOf   |Decrem       LessOrEq  |
| > Open         LargerThan | Ceiling     LargerOf   |Increm       LargerOrEq|
| _ NegativeSign_Infinity   | Indeterminate          |Infinity               |
| + Conjugate    Plus       | Real_Imag   GCD_Or     |Double       NotOr     |
| * Signum       Times      | Polar       LCM_And    |Square       NotAnd    |
| - Negate       Minus      | Not         Less       |Half         Match     |
| % Reciprocal   Divide     | MatrixInv   MatDivide  |SquareRoot   Root      |
| ^ Exponential  Power      | NatLog      Log        |Power        Chain     |
| $ ShapeOf      Shape      | Suite                  |SelfReference          |
| ~ Evoke        Reflex     | Nub                    |NubSieve     NotEq     |
| | Magnitude    Residue    | Reverse     Rotate     |Transpose              |
| . Dot          DotProduct | Even                   |                       |
| : ExplicitDefinition      | Obverse                |Adverse                |
| , Ravel        AppendItems| RavelItems  Append     |Itemize      Laminate  |
| ; Raze         Link       | Cut                    |WordFormation          |
| # Tally        Copy       | Base2       Base       |Antibase2    Antibase  |
| ! Factorial    OutOf      | Fit_Customize          |Foreign                |
| / Insert       Table      | Oblique     Key        |GradeUp      Sort      |
| \ Prefix       Infix      | Suffix      Outfix     |GradeDown    Sort      |
| [ SameLeft                | Lev                    |                       |
| ] SameRight               | Dex                    |                       |
| { Catalogue    From       | Head        Take       |Tail                   |
| } Amend                   | Behead      Drop       |Curtail                |
| " Rank                    | Do          DoLeftIfErr|Format                 |
| ` Tie_Gerund              |                        |                       |
| @ Atop                    | Agenda                 |At                     |
| & Bond_Compose            | Under_Dual             |Appose                 |
| ? Roll         Deal       |                        |                       |
+----------------------------------------------------------------------------+
|)  label                   a. Alphabet                  A. Atomic Permute   |
|b. Boolean                 c. Characteristic            C. Cyc-Dir * Permute|
|e. RazeIn MemberIn         E. Member of Interval        f. Fix Verb         |
|i. Integers IndexOf        o. PiTimes  Circle           p. Polynomial       |
|x. LeftArgument            y. Right Argument            0: Zero  1: one     |
+----------------------------------------------------------------------------+

6.   What packages are available?

     A graphics package is available for plotting under XWindows.
     E-mail  sam@kalessin.Jpl.Nasa.Gov for details.

     J has been successfully imbedded into Gambit Scheme  by 
     Dennis Neal Holmes (now at IBM) and Dr. John Howland at
     Trinity University.  The resulting language is called
     APROL for Array Processing Lisp. This language is currently
     available on the MAC. Email jhowland@ariel.cs.trinity
     for details.

     A set of programs for the implementation of keyed files
     written my Mike Powell is available.  These routines
     provide the basic components for implemention a relational
     database for your applications.  These routines will
     eventually make their way to the archive at watserv1.
     For now email emclean@sfsuvax1.sfsu.edu for details.

     Several projects are either in the wishful thinking stage
     or are currently in progress. They are :

     1. A combinations verb and an LinkJ implementation
        of Mike Powell's keyed files programs 
        Emmett Mclean , emclean@vax1.sfsu.edu

     2. LAPACK interface (some progress but awaiting C version of LAPACK)
        David Gurr, gurr@phase.mcg.edu

     3. J to C translator (currently at the design stage only)
        Robert Bernecky, rbe@yrloc.ipsa.reuter.com
   
     4. An Optimizing Compiler (current status unknown)
        Raul Deluth Miller-Rockwell, rockwell@socrates.umd.edu

7. News

    At APL93 in Toronto, this August the following J presentations will
    discuss J applications:
   ------------------------------------------------------------------- 
    Identification of Parallelism in
    Neural Networks by Simulations in the Language J
    
    Alexei N. Skurihin and Alvin J. Surkan.
   ------------------------------------------------------------------- 
    JVOX
    David G. Smith and Joey Tuttle.
    
    It is easy to learn J; just talk to your computer.  Voice recognition
    technology is already on the desktop.  You can use voice input to
    bypass some common obstacles and promote gratifying and enjoyable
    experimentation with the language.
   ------------------------------------------------------------------- 
   
    As an aside, ISI is expecting to have several booths at APL93.
   
    They will be introducing French and Japanese versions of the
    Introduction and Dictionary, and will be available to answer
    questions you have about programming with their products.

