Why Should I Use J?
Personally, I have many goals for the J language. But one of the big ones is helping other people realize just how productive they could be in their favorite computing environment(s) if they also understood J.
Raul Miller - February 20, 2014
J is a relatively simple language. You can give it to a gradeschool student, and expect them to pick up some of the vocabulary in a relatively short time. We have various tutorials illustrating some of this.
At the same time, computing environments tend to be intimidating. Inevitably, people will be using any computing facility to solve all sorts of problems and the problem that then arises is: how can you find the parts which are relevant to your problems and issues. And J is no exception to this rule.
So one of the first things you need to learn to appreciate with J (or any computing environment) is the simple things. In J those will tend to be the topics discussed in the introductory tutorials.
But J is also an extremely powerful and concise language. It's a representation of the life work of Dr. Kenneth Iverson - arguably one of the brightest thinkers about the nature of computing and computing devices. So while it's easy to get started with J you should also be careful to pace yourself in learning J. Too much too fast and you might give up long before you really appreciate what it has to offer, too slow any you might find yourself bored.
A related issue is that for most applications you will be using a relatively small part of J's vocabulary - maybe less than 20% of the primitives and a much smaller fraction of the content in the libraries. Finding the *right* subset of the language for your current purposes can be important.
Still, the concepts present in J have been (gradually) been adopted by other parts of the computing industry and most of the best developers have at least heard of J, APL or Arthur Whitney's variants. In particular, SQL bears some strong resemblance to J - except that SQL focuses on long term representation of data while J is a general purpose language that includes the SQL-like Jd database. Also, Hadoop embodies concepts from J.
That said, it is difficult to adequately describe J's strengths to someone who does not know the language. In terms of practical applications, understanding needs a lot of work - J is powerful enough that in some contexts we will need to find ways of failing to use most of that power so we can concentrate on what we need. But this also means that simply describing it to someone is not going to convey its strengths very well. It's an interactive language and if you do not play with it you will never get anywhere with it.