Newsgroups: comp.lang.apl
Path: watmath!watserv2.uwaterloo.ca!watserv1!FZC@CU.NIH.GOV
From: "Dick Holt" <FZC@CU.NIH.GOV>
Subject:  Beginner's guide to Low-Cost "Real-Work" APLs
Message-ID: <Bwu901.7r6@watserv1.uwaterloo.ca>
Sender: root@watserv1.uwaterloo.ca
Reply-To: TDARCOS@MCIMAIL.COM
Organization: University of Waterloo
Date: Wed, 28 Oct 1992 15:40:04 GMT

[Note: This document has been reformatted for Internet; the original
boxes appearing within the document had IBM-PC 8-bit characters which
may not reproduce on non-IBM systems.]


A Beginner's Guide to Low-Cost "Real-Work" APLs  (about 2300 words)

This article is a beginner's guide to low-cost APL interpreters,
compiled by the APLSIG of the Capital PC User Group (CPCUG).
Comparisons emphasize work and business applications -- because it's
the workplace that generates demand for technological innovation, and
pays for it.  I emphasize free or low cost APLs, because these are
likely entry points for exactly the kind of people who are most badly
needed by the APL community -- namely newcomers.

Indeed, APLers are invited to help get this article published
(electronically or in print) much more widely, to reach those who don't
now use APL.

It's an "apples and oranges" comparison because the various APLs are
themselves "apples and oranges".  It may contain errors of fact, as
well as opinions that are wrongly informed.  Corrections are invited.

A central theme of this article is that APL vary widely in size, speed,
performance, and price.  An advantage of this heterogeneity is that APL
offers "something for everyone".  A disadvantage is that there is
little compatibility among versions.  In any event, at least two free
or low cost APLs -- with big workspaces, good speed, and many useful
features -- should now be increasingly attractive to people who have
never used APL before.

To begin, here are a few speed and size comparisons, referenced to the
free demo of APL*PLUS v10.1, a widely used commercial APL:

Size, and Relative Speed: For five simple benchmark tests (B1-B5).

               :----------------------------------------:----------+
               : Time relative to APL*PLUS: > = fastest : WS Size  |
+--------------:-------+-------+-------+-------+--------:----------+
|              :       |       |       |       |        : quadWA * |
|Interpreter   :   B1  |   B2  |   B3  |   B4  |   B5   : CLEAR WS |
+--------------:-------+-------+-------+-------+--------:----------+
|APL*PLUS demo : >1.00 | >1.00 |  1.00 |  1.00 |  1.00  :    0     |
+--------------:-------+-------+-------+-------+--------:----------+
|APLI386       :  1.13 |  2.11 | >0.24 |  0.97 | >0.03  :  1044k   |
|APLIPC        :  1.11 |  2.36 |  0.50 |  1.25 |  0.12  :   262k   |
|APLISW        :  1.39 |  2.36 |  0.50 |  1.25 |  0.12  :   312k   |
|TryAPL2       :  4.52 |  2.48 |  4.17 | >0.36 | >0.03  :   233k   |
|Sharp APL/PC  :  1.46 |  2.41 |  0.67 |  1.40 |  0.15  :   195k   |
|I-APL         : 20.78 | 30.95 | 26.50 | 10.22 | 79.40  :    31k   |
+--------------:-------+-------+-------+-------+--------:----------+
   All benchmarks times are normalized to APL*PLUS demo = 1.00
   Benchmark B1: Q*9; where Q is (2.5+iota 1800): 1800 exponentiations.
   Benchmark B2: (iota 3000) divided by 44.3: 3000 f.p. divisions.
   Benchmark B3: +/iota 15000: 15000 integer additions.
   Benchmark B4: 20!40, looped 1000 times (no, looping doesn't cost
                 all that much time).
   Benchmark B5: length 10,000 boolean vectors, and-ed and or-ed 10
                 times (100,000 boolean operations).
* Defaults for my machine: QuadWA for APLI386 is as large as RAM
permits, and may be increased further by a user-transparent virtual
(on-disk) workspace.  QuadWA for APL*PLUS demo is zero, since the
)CLEAR WS is, by design, inaccessible.  QuadWA for others is config-
uration dependent, except for I-APL, which is limited to 31.6k on DOS
machines (less if cover fns used for graphics, files, help, etc.).

Benchmarks are designed to avoid WS FULL in I-APL, and to run in a few
minutes or less on my machine.  Times are normalized to APL*PLUS, and
are independent of disk speed.

Observations

Speed and size vary enormously.  APLI386 has a quadWA 30 times larger
than I-APL (on my machine), and does integer addition 17 times faster
than TryAPL2.  For exponentiation, TryAPL2 is 3-4 times slower than all
except I-APL.  All Iverson software is 2-4 times faster than APL*PLUS
for +/iota 15000.  APLI386 is more than 100 times faster than I-APL for
+/iota 15000.

For dyadic shriek (!), TryAPL2 is 3 times faster than both APL*PLUS and
APLI386,and 29 times faster than I-APL.  Although not commonly used,
dyadic ! is purposely chosen to highlight speed variations.  Non-
integer arguments for ! weren't tested.

For boolean operations -- a putative strong point of APL -- APLI386 and
TryAPL2 are 30 times faster than APL*PLUS, and mre than 2500 times
faster than I-APL.  Both APLI386 and TryAPL do boolean operations so
fast that I had to run them 10E7 times to find out which was faster.
TryAPL2 seems to be about 1/2 of one percent faster than APLI386.

These speed tests aren't directly comparable: Iverson APLI386 uses the
32 bit instruction set of the 386 chip -- none of the others do.
Benchmarks can be notoriously misleading, and your times may be
different.  Run your own tests.

Blitzing speed and big workspaces are important, but they're not the
only things to consider.  Effective use of APL also depends on features
like a full-screen editor, vendor support, useful application
development tools, good documentation, and smooth upgrade paths.

Hardware is also a factor.  Only APLI386 requires a 386 machine.  All
others work on a 386 and on lesser machines.  Among free or low-cost
interpreters, only TryAPL2 requires a color monitor (EGA or better),
but Iverson's APL characters are inaccurate on a monochrome monitor.

Can I do "real work" in any of these low-cost APLs?

APL*PLUS demo: No  -- User-defined fns/system commands inaccessible
TryAPL2      : Yes -- But with del editor, no DOS or APL files
APLI386      : Yes -- 386 required, also does Windows
APLIPC       : Yes -- 386 not required
Sharp APL/PC : Yes -- Limited: poor documentation, not easily available
APLISW       :  ?  -- Limited: no DOS files, no APs
I-APL        :  ?  -- 31k WS, slow, no error trapping

To be fair, the APL*PLUS demo and I-APL aren't designed to do real
work.  They're designed to showcase product features or to teach APL.
Within varying limits, real work is feasible all other APLs.

Upgrade Path and Prices ($US)
                                                    Upgrade Path
+--------------+--------------------------------++-------------------+
|              |         Disk    Documentation  || $ Full    $ 386   |
| Interpreter  | Type    Price   Price @        || Product   Version |
+--------------+--------------------------------++-------------------+
| APL*PLUS demo| flat    free*   free/on-screen ||  $695     $1700   |
| TryAPL2      | nested  free*   free + LJ print||  $500    Included |
| APLI386      | boxed   $30     $30 - 2 books  ||   Is full product |
| APLIPC       | boxed   $30     $30 - 2 books  ||  APLI386  APLI386 |
| APLISW       | boxed   free    some on-screen ||  APLIPC   APLI386 |
| Sharp APL/PC | boxed   free+   unavailable?   ||  APLIPC   APLI386 |
| I-APL        | flat    free+   $25            ||  Any of the above |
+--------------+--------------------------------++-------------------+
*    Free from original source (see "Sources" below), and downloadable
     free from the BBS\APL (301-384-3672, 1200/2400/9600 b, N-8-1,
     24hrs).  Request to download may be needed.  Some suppliers may
     charge a nominal fee.
+    Disks, but not documentation, may be downloaded free from the
     BBS\APL, and may also be available elsewhere.
@    Documentation for Sharp APL/PC may be hard to get and is hard to
     use.  Iverson documentation is an imperfect hybrid of Sharp APL/PC
     (orphaned v17) material, mainframe material, and new on-screen
     Iverson material.

Prices may be discounted: street price, volume, educational, dealers,
etc.  Ask.  See "Sources" below.

IBM (TryAPL2 and APL2/PC), Iverson (and Sharp), and APL*PLUS II (386
version) all provide "nested" or "boxed" arrays -- all in incompatible
ways.  Also, many "flat" features aren't compatible among various APLs,
and APL*PLUS isn't fully compatible with APL*PLUS II.

Because of numerous and deep incompatibilities, switching from one APL
to another can be an obstacle to upgrading.

Keyboard and Other Incompatibilities

Keyboards for IBM and APL*PLUS are similar.  They're the traditional
APL keyboards.  Iverson keyboards are slightly different, but resemble
the APL*PLUS "unified" keyboard as used in the APL*PLUS demo.  Many
Iverson APL keys are in the "traditional" place, differing mainly in
the use of lower case, and in the use of ALT rather than SHIFT to get
special APL characters.  Most Sharp keys are in the same place as
Iverson keys.  Users of these APLs can probably switch from one to
another without too much difficulty, at least as far as the keyboard is
concerned.  Non-keyboard incompatibilities -- mainly in quad fns and
shared variables -- are also difficult.  TryAPL2, APL*PLUS demo,
Iverson Software, and CPCUG APL lessons all have on-screen keyboard
diagrams and on-screen help.

Because I-APL attempts to adhere to ASCII, its keyboard is almost
completely unrelated to any other APL keyboard.  Does mean that the I-
APL keyboard is "bad"?.  No.  It's simply that switching from I-APL to
any other more powerful APL is harder than switching among these other
APLs.  From a beginner's perspective, all APL keyboards are "bad".

In its 1991 APL classes, the CPCUG found the APL keyboard to be the
greatest single obstacle to learning APL.  Students who begin with I-
APL must learn a new APL keyboard if they want to upgrade to a more
powerful APL.

Editors

A full-screen editor is essential for modern programming, in APL or in
any other language.  Among commercial products, APL*PLUS and APL*PLUS
II have a superior built-in assembly language editor.  Iverson products
have a full-screen editor fn that may be copied into your WS.  IBM's
APL2/PC also has an editor fn that may be copied into your WS, or you
may also use something like IBM's "Personal Editor" for APL2/PC.

TryAPL2, Sharp APL/PC, APLISW, and I-APL have only the obsolete "del"
editor.  The del editor is a line editor like DOS's EDLIN, lacking only
most of its convenience.

Full-Screen Management

APL*PLUS v10  -- Yes, excellent, versatile, strong
APL*PLUS demo -- No, screen management is user-inaccessible.
TryAPL2       -- Yes, uses shared variables.
IBM APL2/PC   -- Yes, uses shared variables.
APLI386       -- Yes, uses shared variables.
APLIPC        -- Yes, same as APLI386 above
Sharp APL/PC  -- Yes, difficult
I-APL         -- Yes, has FSCREEN.IWS with GET and PUT cover fns
APLISW        -- No

Files             DOS Files          APL Component files

APL*PLUS demo --  No                 No, quad fns inaccessible
APL*PLUS      --  Yes                Yes
IBM APL2/PC   --  Yes                Yes
APLI386       --  Yes                Yes
APLIPC        --  Yes                Yes
Sharp APL/PC  --  Yes                Yes
I-APL         --  Yes (cover fns)    No (cover fns available)
TryAPL2       --  No                 No
APLISW        --  No                 No




Documentation

APL*PLUS demo -- On-screen keyboard tutorial/description of features.
TryAPL2       -- On-screen doc. & lessons; LJ printable user manual.
APLI386       -- On-screen, plus two inexact books.
APLIPC        -- Identical to APLI386 above.
APLISW        -- Some, on-screen.
I-APL         -- Good on paper, not much on-screen.
Sharp APL/PC  -- None on-screen, paper not easily available, difficult.

On-screen Help Suppied

APL*PLUS demo -- Excellent, also excellent for full products.
TryAPL2       -- Good, in WS TRYDOC.TRY.
IBM APL2/PC   -- I don't know.
APLI386       -- F1: Fairly complete, paper documentation essential.
APLIPC        -- F1: Identical to APLI386 above.
APLISW        -- F1: Identical to APLI386 above.
Sharp APL/PC  -- No.
I-APL         -- No.

Function Keys: settable on all except APLISW and I-APL.  Varying
degrees of pain on all others.

APL Lessons Availability: CPCUG APLSIG's generic, interactive, on-
screen lessons are available for all APLs discussed here, some also in
French.

Non-English Language Keyboard/Character Support: This feature is
important only if you care about being competitive in today's global
marketplace (not everybody does).  Among APLs discussed here, only
TryAPL2 includes instructions for the keyboard and National Code Pages.
On-screen non-English characters and non-English keyboards can be made
in other APLs, with varying degrees of pain.

Calls to Machine Language/C/Fortran etc.

APL*PLUS      -- Yes
APL*PLUS demo -- Yes, example provided of calls to C
TryAPL2       -- No, requires AP210, not included in demo
IBM APL2      -- Yes, FORTRAN WS included in product
APLI386       -- quadNA type improvements planned
APLIPC        -- quadNA type improvements planned
I-APL         -- Yes, machine language expertise needed
APLISW        -- No

Commercially Motivated                                    Market
Vendor Support                      Kaizen Strategy?*     Responsive?

APL*PLUS      -- Hot-line + bbs     Yes, to a fault       Highly so
APL*PLUS demo -- Ask salesperson    Apparently            Very Likely
TryAPL2       -- Hot-line, free     Yes                   Apparently
IBM APL2      -- Hot-line, free     Yes, not to a fault   Unknown
APLI386       -- Hot-line, toll     Yes                   Apparently
APLIPC        -- Hot-line, toll     Yes                   Apparently
APLISW        -- No                 No                    No
I-APL         -- No                 No                    No

 *   Kaizen is the Japanese term for a reliable corporate commitment to
     unceasing, market-driven, improvement and innovation.

Run-Time Systems: Programming APL for run-time systems, whether for
commercial use or just for your work group, requires strong skills in
error trapping.  All APLs here, with the exception of I-APL, have error
trapping features -- and all are incompatibly different.  TryAPL2's
error trapping is undocumented.

IBM APL2 includes a free run-time .EXE system.

APL*PLUS and APL*PLUS II provide run-time systems at varying prices:
APL*PLUS 5-pack is $250, unlimited is $995; APL*PLUS II 5-pack is $875,
unlimited is $5000.

Pricing strategy for Iverson APLI386 and APLIPC make run-time systems
inexpensive for distribution in small numbers.  If you develop an
application that will sell many copies, APL*PLUS may be cheaper.  I-APL
may be distributed free, but commercial use is prohibited.

Odds and Ends: Iverson Software products (and Sharp) have built-in
complex numbers.  However, complex number cover fns are not hard to
write, and are available as shareware, or come with some other APLs.
Only I-APL uses "direct definition" functions, thus furthering its
incompatibility with other APLs.  Only APL*PLUS II and Iverson APLI386
do windows.  Only I-APL is available on a very wide range of machines,
such as ATARI, BBC, Archimedes, or Mac II.

Other Info          Graphics       Color        Printer Support

APL*PLUS            Yes            Yes          V. good
APL*PLUS demo       Yes            Yes          not accessible
IBM TryAPL2         Yes            Yes          V. good for LJ
IBM APL2/PC         Yes            Yes          V. good, via AP80
APLI386             Yes            Yes          V. good (LJ, PS, DM)
APLIPC              Yes            Yes          Identical to APLI386
I-APL               Possible       Possible     Limited
APLISW              No             No           No

Sources

APLI386/APLIPC  :  Iverson Software Inc.
                   33 Major Street, Suite 466
                   Toronto, Ontario
                   Canada M5S 2K9  416-925-6096,  Fax 416-488-7559

TryAPL2         :  IBM APL Development       (specify disk size)
                   M46/D12-278B Santa Teresa Lab
                   Box 49023, San Jose CA 95161-9023 USA

APL*PLUS demo   :  Manugistics Inc.
                   2115 East Jefferson St.   Suite 1729
                   Rockville MD 20852  USA   301-984-5412

I-APL:
USA                UK inquiries              UK Orders
6611 Linville Dr.  11 Auburn Rd. Dept. 278   59 The Crescent, SQ5
Suite 314          Redland                   Milton, Weston-super-mare
Weed CA 96094      Bristol BS6 6LS           Avon BS22 8DU

Call for Action

This comparison of APLs is a collaborative effort by the APLSIG of the
CPCUG.  We've invited corrections and improvements from APL vendors.
I'm not sure that we've got everything right.  Readers are invited send
corrections and improvements (on disk please) to Dick Holt, Box 4496,
Silver Spring MD 20914, or upload them as an ASCII file to the BBS\APL,
301-384-3672, 1200/2400/9600b, N-8-1, 24hours.

The APL community is invited to distribute this article widely outside
the APL community.  Plagiarism and modifications are welcome.  This
article is downloadable as COMP-APL.ZIP, containing both ASCII and
WP5.1 versions, from the BBS\APL.

<< If this article appears after mid-February 1993, my address will be
3802 N. Richmond St. Arlington VA 22207, and the BBS\APL phone number
will have changed. >>



