From J Wiki
Jump to navigation Jump to search

Henry Rich, Financial Consultant

After 25 years of C and assembler programming, I discovered J in 1994 and have made it the only programming language I use. My biggest J application, and the one that pays my bills, is a 20,000-line system for financial management; I have also used J for projects ranging from neural-network simulation to economics research, and it has been suitable across the range.

With J, my home PC runs as a real data center, launching hundreds of Web transactions per hour, staying connected to a real-time data feed from the financial exchanges, displaying interactive graphs, and responding to user mouse-clicks with quick response. I could not possibly have gotten such a complex system running without J.

J is a towering intellectual achievement. Assembling a number of unique ideas, including some that seem crazy (no loops? no structures? no strong typing?), the result is, magically, a system of unparalleled scope and power. J reminds me of the interior of a Gothic cathedral: I see its strength and beauty, but I can only marvel at the minds that could create it; and I wonder whether they created it in one flash of insight, or used some scaffolding of thought that could raise the work to such perfection without leaving a trace.

Beauty is a fine thing, of course, but few businesses appraise employees on their aesthetic sensibility. Managers and programmers who are considering using J have many reasonable concerns that I would like to offer reassurance on:

First, "do I have to reeducate my entire staff?"

You probably can't. Some of those old dogs won't be able to learn the new tricks, and others will not see how knowledge of J will improve their resume. But the staggering productivity of J will allow you to get better results with fewer people.

The language has such expressive power that programs get written faster, of course; but just as important for me is the congeniality of the execution and debugging environment. My big application takes about 10 minutes to get initialized, but I only have to run that initialization once a day: during code development I simply reload the application on top of the running system. The J interpreter smoothly switches to the new code while the application is running. No edit/compile/load loop for me! I save roughly 2 hours a day, every day, just by never having to compile and load.

I save more time from the easy debugging. Creating test data is trivial, since I can just stick a new function into a running system and run it using the data established in the running system.

A small team of J programmers can outperform an army of C programmers.

Second, "is J stable enough to bet my product on?"

Yes. I would not have said this in 1997, because new features, and therefore new problems, were being added as fast as problems were being fixed. Starting in late 1998 the tide turned, and by mid-1999 J was definitely suitable for commercial use. Now it is by far the most reliable application on my PC.

Third, "isn't an interpreted language going to be too slow for serious computing?"

It is true that if you write J like C you are going to have slow programs. But if you write J like a native speaker you will be surprised at how fast it runs, because the primitives have had so much work put into making them fast.

As an example, when your programmers sort a list, how fast is that? If you're unlucky, your guy will code a bubble sort and burn lots of CPU time. Most of the time you will have a programmer who calls a library function that uses quicksort, with NlogN performance; that's OK. Depending on the data, many cases could actually use an algorithm that runs in linear time, but seldom will your programmer go to the effort to use such an algorithm - and you probably don't want him to, since it adds complexity in exchange for a hard-to-quantify performance benefit.

Using J, your programmer simply uses the 'sort' verb, and the system selects insertion sort, quicksort, or (surprisingly often) ultra-fast linear-time sort - whichever is best.

Fourth, "can a small company like Jsoftware respond if I find a serious problem?"

Emphatically yes. I am just a little user, generating only two licenses for J, but whenever I have had a problem that stopped production, the guys at Jsoftware have immediately moved to fix the problem, giving it very high priority (I have had only one such problem since mid-1999, and that turned out to be my error - they got right on it anyway and showed me my problem). They really care about their customers. Small companies will always tell you that they will be more responsive than big ones; in Jsoftware's case, it's true.