Choosing a Personal Programming Language - 2002

Dick Bowman


Return to Contents


Earlier articles gave a background to my requirements for a personal programming language, and in the previous (1999) edition I found myself opting for J as language of choice, closely followed by Dyalog APL.

Time flows on its weary way, and it's always time to review and consider - especially as two new contenders have emerged in the last year or so.

For those too impatient to peruse the past, I restate my goal of finding a programming language for personal use which I can employ in the Windows environment to interface with other accumulated data, programs and applications; I want to achieve an "OfficeXX" look and feel because while I may use some of these personal applications on a daily basis others may be used far less frequently.

The motivation is the usual conceit that my requirements may go outside the mainstream and that I can tailor something for my own personal use which fits my needs better than any mainstream package.

My working environment continues to be Windows - much as I'd like to change, I'm not convinced that the grass really is that much greener in the rolling pastures of Linux (and is there anywhere else that's a really serious contender?).

I'm not bothering myself with any of those ancient freebie relics that run in DOS windows - maybe a newcomer can learn a bit of syntax with them, but I think that overall they do more harm than good.

Return to Contents

VB, Delphi and that sort of Stuff

I've diddled around with these things in the past - seduced by the eye-candy and (truth be told) because I believed that familiarity would improve my marketability as a general-purpose consultant.

Time to get off the fence - I really can't be bothered with them at all any more.  I'm an array-language programmer and I just don't have the patience to deal with all their half-baked syntax and hand-holding candy floss texture.

Just one example - so easy to pick-and-click a form with a heap of controls - but where's the overview (compared to a Dyalog or J form definition)?

The only thing I'll say in their favour - it's worth keeping something like VB around so that you can look at the help information on all those ActiveX controls that Microsoft spewed onto your PC.

Return to Contents


What are Cognos up to?  Is it yet another cash cow for a holding company?  Despite all the bravura of an annual vendor-sponsored conference all I get is the feeling of an interpreter treading water.  I don't feel I'm missing anything by not exploring this alternative.

Return to Contents


Again, seems to be moribund.  Here the impression I get is of IBM continuing to keep a few crazies locked into a padded room just in case something comes of it and they can be quick off the mark.  Is IBM still deluding itself that it can regain past glory by reinventing itself as e-commerce and piling all the eggs into its Java basket (or basket-case, don't even want to waste any more words discussing that particular heap of playdough)?

The "free trial" packaging is welcome and I'll leave it lying on the PC until the CPU meter runs out of time.  I'd put effort into APL2 if I felt that there was any sort of future there (and don't forget, APL2 has long had a slew of language features like complex numbers and indexing functions which have not reached common acceptance).

APL2 was good, but seems to be sold only as an escape-road for mainframe customers migrating to the PC.

Return to Contents


Newest kid on the block?  Maybe, sort of - although chronologically it probably predates K in all but general availability.  And precisely why are Morgan Stanley getting into the free software business?  Surely they have more direct ways of finding programming talent?

What stops APlus being more attractive to me is its Unix/Linux parentage; the full product probably is a good contender for that environment, but what's on Windows is a DOS-window notation demonstrator.  I don't know what it would take to bolt something like Tcl/Tk onto it (and Tcl/Tk is just one of the good things to have happened to J in the past few months).

I watch, but am not doing a lot more for now.

Return to Contents


This is an interesting newcomer; which I looked at last year.  It certainly demonstrates that new APL interpreters are feasible (one of the great APL myths is that the ability to write - and use - APL interpreters was made temporarily available to the human race about 20 years ago and is no longer a part of the range of human mental abilities).  I liked the hook into Tcl/Tk as a route to providing GUI facilities - especially as this opens the door to an escape route from Microsoft.

The negative side of APL2C was that it seemed rather fragile and was on the wrong side of the critical mass equation.  But check it out - last time I looked it was free so long as you could tolerate the nagging and didn't want to use its "compile-to-C" USP.

Return to Contents

Dyalog APL

I use Dyalog APL every day as an income-earner, and it was this which was the major factor in deciding that it was not what I wanted to use for personal projects several years ago.  Dyalog APL is pretty feature-rich, runs quickly enough and is well-supported; it is definitely on the right side of the critical mass hill.

The other major strength of Dyalog APL is that everything (or at least more than is usually enough) comes as part of the package.  I can write Office-style lookalikes which hook naturally into my Office-technology data storage (directly using COM - without having to run through transfer file procedures like making .csv files).  I can add ActiveX components if I like - but I don't have to look outside of Dyalog APL for the vast majority of my needs (and learning the ins and outs of ActiveX components is not for the terminally impatient).

As for the question of freshness - I find that as my personal work is uncluttered by the baggage of history I can happily use the newer language features and have an adequately different style from that in my day-to-day work.  I'm beginning to use Dyalog APL where the fit is best.

Return to Contents


In the last survey J was my option-of-choice.  It was quick, inexpensive, adequate and different.  It is still all of these, and I like the intellectual rigour which underlies J.  But it began to irritate; probably as much because I don't spend enough time with J to get really fluent (and so can't parse-by-inspection).  Also, the GUI is ageing, and J-applications have something of a dated look about them; I wanted to add some of the newer Windows controls and this meant going to third-party ActiveX.  This works, but it takes time to source suitable controls, to learn their characteristics and to deploy them sensibly - let alone that some cost real money (remember, this is just my personal use, and I'm not going to be selling anything).  There are indications that the J GUI facilities may soon be getting a makeover.

I think that - for a realistic application - J's locales are too limited, and I don't find the programmer aids anywhere near as convincing as Dyalog's Workspace Explorer, for example; I'm not that keen on scripts - J seems to be built on "words" but doesn't give the programmer a place to build up a vocabulary (John Baker's JAR is an add-on that may help a lot in this regard).

Something else which seems to be both a strength and a weakness of J is the apparent breadth - OpenGL, complex numbers, mapped files, regular expressions.  But the impression I get is that they all get started and never finished - perhaps it's just that there isn't a broad set of texts about using J.

I think J is suffering from eliteism - I get a picture of the "in crowd" who've grown with J from the start - something that made me uncomfortable at the J2000 User Conference was a flavour of "we don't use that old-fashioned APL stuff any more".  A good aspect (of this side) of J is that it offers an escape from the general lousiness which afflicts so many commercial APL applications.

That said, there are still many good things about J, and I'm keeping one foot in the camp.  It would be particularly good to see one or more of the mainstream APLs pick up concepts like the rank adverb and run with them.

Return to Contents


Didn't go any further with K than my initial look; the application/GUI link is great, but the end-result too idiosyncratic for my purposes.  I'm not that keen on any of the script-style programming approaches - and that again is a personal judgement.

Return to Contents


Unfortunately, Nial seems to be sinking out of sight.  Finding Nial on a magazine-cover CD seemed like a great prospect for some more general takeup but it didn't seem to happen (should the APL/J world have been more overtly appreciative of this initiative and its possibilities?).  I continue to do not a lot more than look at the Nial icon.

Return to Contents

Sharp APL (SAX)

With SAX still not living in the Windows world I can't look at it - much as I would like to.

Return to Contents


From a two-horse conclusion in 1999 (use J certainly for the data-processing, and think about VB/ActiveX to add the frills) I end up with a different two-horse conclusion in 2002.

My choice of personal programming language at this time is Dyalog APL for the majority of uses, with J in reserve where the computational richness is the overriding factor (thinking about, but possibly not achieving, a Dyalog-J synthesis).  I'm encouraged by seeing new entries in the field of possibilities, if a little discouraged by thinking about how they illustrate the height of the hurdle that has to be cleared to achieve plausibility.  I'm also encouraged by seeing hooks to tools like Tcl/Tk as a means of both lowering the hurdle and opening up a path out of Windows.

Return to Contents

Return to the J\APL Contents page

Copyright Dogon Research, 2002-2013; Latest revision 7 March 2013 (repaired links)