Choosing a Personal Programming Language

Dick Bowman

Contents

It's more than three years since I wrote a potted comparison of what were then the available "APL" implementations (as usual, I take the inclusive definition of APL, so that we also can consider J, K, Nial and so forth - if not Forth); much changes and it seems appropriate to review the options today.

My criterion here is that I am looking for a "personal" programming language, for applications tying together personal needs rather than a heavy-duty corporate requirement (so I don't need to bother about workgroup collaboration, mainframe communications, hiring external assistance and all that sort of thing).  My environment is Windows NT, and I have data scattered across flat files and MS Office constituents; I want to produce applications which I may use intensively, or may use very rarely.

In my previous article I produced a "wish list", and this time I will attempt to score the contenders against this list.

Return to Contents

VB, Delphi and that sort of Stuff

Committed array-programmer I may be, but these things are popular and (certainly with VB and Delphi) they keep fairly close to the state of the GUI art.  But they're hard work once you get past the initial etch-a-sketch stages.  It looked once as though hybrid developments (APL for the internals, VB/Delphi for the externals) could be a good runner, but that needs work as well.  But they are priced at a level where an individual can take a look and not feel that they've condemned the family to a Sunblest-and-lard diet for the foreseeable future.  At present the productive products are tightly coupled to the Windows environment (sure, you can do low-level interface work in anything, but I thought that we were here to solve problems, not write code).

I keep them around, but don't anticipate doing very much with them.  Useful to be aware of how the rest of the world has to live.

Return to Contents

APL*PLUS

I've never been able to work up much enthusiasm for APL*PLUS; it's there, and the first Windows version was quite good - I think.  I've not been keeping up with the state of their art, and this may be an unfair assessment.  What's interesting is what Cognos is going to do now that they have acquired the product.  OLAP tools (in general) labour under the absence of any kind of array-aware notation and one would like to think that Cognos are smart enough to put the elements together (in which case they would have a compelling - if corporate - set of tools).  But the present evidence is that they are not doing this.

Return to Contents

APL2

Finally available for Windows, APL2 comes with two problems for the present purpose:

APL2 looks like a good product for corporates wanting to move their mainframe APL2 applications onto PC platforms, but not a captivate-the-newcomer product.  It has a nice enough form design utility, but at the end of the day I just can't face all that stuff about APs and shared variables (nice theory, needs a lot of supporting documentation and examples).

Return to Contents

Sharp APL (SAX)

I remember the initial ISIAPL port of the mainframe Sharp APL product quite fondly, but it faded away when ISI put all of their resources behind J.  Maybe Soliton offered something similar, but it never impinged on my consciousness.

Now we see Soliton offering SAX for Linux (if my ever-optimistic understanding is correct, for free for the individual user).  Sounds almost too good to be true, even in a climate where "anything" is seen as a desirable alternative to paying yet more money to Microsoft.

I get tempted by Linux (although recent commercialisation seems to be fast rushing down the path of becoming a haven for the usual collection of computer industry spivs), but haven't yet been convinced that it is a truly rich and viable desktop option (I got caught up in OS/2 mania a few years ago, too early to see that it was going nowhere, so perhaps I'm over-correcting).  One of the things stopping me has been the absence of a useable programming language; SAX may be changing this.

I think that a key factor will be whether or not SAX has the tools to be a viable language for writing applications with that "me too" look and feel.

Return to Contents

Dyalog APL

Really the best of the bunch in terms of features (both GUI and language extension).  There's not a lot you can't do with Dyalog APL, and my only technical misgiving is that sometimes Dyadic seem to rush into an implementation without considering all of the design options, leaving the user with something a little incomplete or inconsistent over the longer haul.

The big technical downer is that all of the extensions mean that it's easy to get locked in to Dyalog (although that's true for all of the products, I guess).

The other downer is the cost.  Again, a corporate captive market price which isn't really finished until you add in the 20% (annual) DSS support subscription.

My head tells me that Dyalog APL is the rational choice, but my wallet tells me that it's not a cost-effective choice, and my heart tells me that I feel Dyalog APL is too closely connected to my paid-for work.

Return to Contents

J

J has been filling the personal programming language need for me for three or four years now.  Largely selected on the basis of being sufficiently different from my daily grind (and also because of the significantly lower price).  It's not perfect, by any means, and does suffer from a lot of "attitude".

J has probably got the language aspect better sorted out than any of the others (in the sense of consistency, rather than the intrinsic beauty of the verb names); it has workable (and workmanlike) integration with the GUI, and seems to interface with most of those PC things.

Pricing isn't as attractive as it once was, and new versions are tending to break older code.  I'm no expert, but I find I can hack out a useful solution to most stuff (J also comes with a useful set of scripts which extend the language - for example the plotting package takes care of most graphing requirements).  J4 feels a lot better than J3.  I have no experience with J in other environments, but both Linux and (uniquely?) Windows CE are catered for.

I'll probably stay with J for the foreseeable future.

Return to Contents

K

I was really taken with the downloadable K-Lite, which trades off data-structural complexity (everything is a list, more-or-less) for performance and a very tightly-coupled GUI.

Unfortunately paid-for K makes APL seem inexpensive and I'm not clear how long Kx Systems are going to allow free downloaders to persist.  K-Lite is also eloquently silent on interoperation with other applications (for example, OLE with MS Office).

I'm keeping my eyes on K, I don't think it's ready for mass-market prime time yet.

Return to Contents

Nial

Easily forgotten, Nial has a lot of APL2-like content (both derive from Trenchard More's array theory).  The student version is freely available and has (in the past) appeared on free cover CDs.  Not a sophisticated GUI, and not a lot of opportunity (at least in the student edition) to interoperate with your other applications.

I believe there's a paid for (more than APL, less than K) version; but I haven't given Nial the time and attention which it deserves (and, so far as I can tell, the free distribution didn't get Nial much attention from the outside world).

Return to Contents

Comparative Table

Scores from 0 (bad - impossible) to 5 (good - ideal); this is a highly subjective table - weight and rescore to suit your own preferences.

  APL Engine Price GUI Interfaces Vendor-free Development Environment Self-contained executables
VB, Delphi, etc. 0 4 5 5 0 4 (Note 5) 5
APL*PLUS 4 1 3 Unknown 0 3 Unknown
APL2 4 1 3 2 0 3 Unknown
Sharp APL (SAX) 4 (Note 2) Unknown Unknown 0 Unknown Unknown
Dyalog APL 5 1 4 4 0 4 5
J 5 3 3 3 0 3 (Note 6) 5
K 3 (Note 1) (Note 3) 2 (Note 4) 1 0 2 (Note 6) (Note 7)
Nial 3 Unknown 1 1 0 2 Unknown

Notes:

  1. K is fairly significantly outside the APL mainstream; it scores higher than this in its own terms
  2. SAX is promoted as "royalty-free", and I've decided that I don't know what this means
  3. K-Lite is free, K-Proper is megabucks
  4. Rating the K GUI in terms of applications looking and feeling like MS Office; it scores higher in its own domain
  5. In terms of being an environment for developing in these languages...
  6. Both J and K use scripts, which I am less than enthusiastic about
  7. K-Lite doesn't; K-Proper does

Return to Contents

The Future

I'd like to see an end to the domination of Windows; whether that will happen with Linux or something else I wish I could foretell.  If the change was dramatic and discontinuous everything could go up in the air and it might be hard to find any APL in the new world (because it will surely cost mega-plenty to get there).

If everything stays as it is, I expect my preferences to continue more or less as they are.

If one of the vendors adopted a radically different (lower) pricing policy I'd surely sit up and notice (not necessarily in that order).

If Linux happens, I'm sure that SAX will be a strong contender.

It would be nice to see K become a real contender (and this may be just as much a matter of my recasting my aspirations as K undergoing massive changes).

It would be good to see the world tiring of the endless monotony of the scalar languages, and at least one APL vendor grabbing the mantle of APL-for-the-masses.  But it's a high-risk strategy, and frankly I don't think that the average programmer has the mental agility to use one of these elite languages.

I would also (and this really is optimistic) like to have a purchasing choice based on performance and price rather than being locked in by language features.

Return to Contents

Conclusions

For me, the only real contenders are Dyalog APL and J; the latter wins by a whisker on grounds of price and consistency - it also feels leaner.  That's not to say that J is perfect.

There are interesting options lining up for the future (tangibly SAX, and possibly K - if someone decided to aim it at the big time).

Your choices should vary.

But what's most rewarding is to realise that in our obscure little corner of the world we have a much wider choice open to us than do "the mainstream"; anyone who has spent the past five years writing VB has literally nowhere else to go.

Return to Contents

Return to the J\APL Contents page

Copyright Dogon Research, 1999-2013; latest revision 7 March 2013 (repaired links)