As I was thinking about Don's attempts to redefine J in order to make
it easier to teach (in theory), I also thought about my own reluctance
to use J in my professional environment (financial).
One of the main reasons for our not using J in my company is that the
adoption and usage rate is so low, that the cost of that choice would
be high in either hiring specialized developers, or training our
developers, and then, in maintaining the specialized culture that is
necessary for long-term support of any unique development environment.
How can I commit company resources to a development environment that
requires specialists to do development, or, alternatively, requires my
existing Java, ObjC, Python, and Ruby developers to spend considerable
amount of time learning J just to become productive? And, once
having become productive in J, are now even more critical than they
used to be, which is not a healthy thing for any company.
To avoid the problem of depending upon a few, highly specialized J
developers, we would have to develop a J culture, in which new hires,
or college interns, would learn our specialized J development
environment, and, those that were productive and found the work
interesting would become part of the continuity of the J culture.
Alternatively, by choosing a popular (e.g., Ruby) development
environment, with its very high levels of adoption and usage, it's
large library of packages ("gems"), and correspondingly large
development pool, I can find more Ruby developers quickly, at lower
cost than I could for J. And, I would not need to train them much,
except in the special classes that we would have built for our own
purposes.
The problem of J's low level of adoption and usage is like the problem
of esperanto. It is a perfectly logical, artificial language, but one
which almost no one uses. The reason no one uses esperanto, is
because it is not integrated into any culture, as are all native
languages.
J, even more than esperanto, is a logical, concise, and, to some
purists, beautiful language which allows for compact expressions of
powerful, high-level operations. The mathematics field is a culture
that appreciates J (and APL and its other derivatives). Perhaps,
physicists also appreciate it for similar reasons.
For interesting reasons, there are some technical folks in the
financial and investing fields that have developed a culture of using
APL, K, and perhaps J.
But, other technical or scientific cultures, and certainly the
mainstream, have not been exposed (as much) to APL, K, and J, and are
thus not inclined to choose it for their computational analysis and
solutions.
If I were the "king of J", and I wanted to increase the rate of
adoption and usage of J, I would follow Don's idea of teaching kids J,
and begin a program of getting elementary kids using J on their
partially subsidized laptops so that by the time they reach high
school, they will feel lost without their little J console.
I would also get J into the computers at the high-schools for similar
reasons -- so that the kids going off to college will naturally want J
on their college laptops.
I would also begin a rapid development of J apps for the most popular
PDAs and SmartPhone, certainly one for the iPhone and perhaps Palm
Pre, for the same reason -- get people to begin using J on their
ubiquitous PDA and they'll "gotta have it" on their computer, too.
Get people using J's easy calculator-like features, and gradually,
more and more people will begin discovering its other features.
And, if there's a J platform on lots of computers and PDAs, then
developers will build more J packages to solve problems so that users
do not even need to know that much about the J language itself, just
use it as a platform.
Need to keep track of expenses? you can spend $$$ for MS Excel, or you
can use this handy J Expenses package.
Need help managing your calorie tracking? Use this shareware J
package that provides caloric estimates on many kinds of food, and
helps you track your diet.
Need to estimate your mortgage? Just load up the handy J mortgage
calculator.
This is how you create demand, and lower the barriers to adoption and
usage.
This is the approach that Wolfram has begun to follow -- getting
variants of Mathematica into more markets and opportunities, except
that they aren't very far along. I imagine they're having a hard time
putting Mathematica into small devices without having the battery go
dead in 15 seconds! :-)
A good example of a portable, powerful, expressive, mathematical
language is Frink. It runs on almost any portable computing device
that supports Java, which includes most PDAs and smart phones.
However, Frink is at the beginning of its lifetime, and there is no
IDE, no set of common libraries, no large user base .. yet.
I hope this has given some food for thought. I've admired J for
personal reasons, and have been wanting to use J in my professional
environment, but until recently, had not really clarified why I
couldn't. I'm hoping that not too far in the future, I'll be able to
make a different choice.
--
Alan Stebbens
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm