On 01/03/2018 04:00 PM, Raul Miller wrote: I think that J's "killer advantage" would be that it focuses on programming concepts which other languages bury or lose in the noise.
Personally, I use J for exploratory programming and often take those explorations I think I know what you mean, but for me that language is Mathematica. I'd guess that J works like that for you because you know J inside-out and forwards and backwards, but I don't think J has any intrinsic qualities that make it better suited for exploration than say Mathematica, Python, or even javascript. I think Mathematica does have such intrinsic qualities because it is a thoroughly multi-paradigm language with an enormous number of built in functions. and deploy them in some other environment. What environments do you like when performance matters or you need a GUI? Thinking about how to implement something in J has often been helpful in finding relatively simple solutions to otherwise complex, amorphous problems. I have not found any other language better suited for this than J, though I have found concepts from a variety of other languages to also be quite useful for this, at times. Put differently: J pressures you to express your ideas clearly. Once that's done, it's easy to implement them in any language. That's not my idea of good language for exploration! But I guess it depends on whether you mean algorithmic exploration or more purely conceptual exploration. When I'm playing with mathematical ideas I don't want to be bothered by implementation issues. But I can see that if you're starting to formulate the structure of a large program the imposed discipline of J could be helpful, as long the the ultimate target language isn't too different. Going the other way - taking an utter mess and trying to express that clearly and concisely? That's *painfully difficult*. Which is not to say that messes are bad - they can be quite useful, extremely practical and have some other advantages also - but they are not the only good thing to aim for. Sometimes one's ideas are a mess, and the exercise of trying to realize them in code is useful. Also it can indeed be the case that other languages can express some concepts more clearly than J. No one language can have a monopoly on clarity, this is inherent in the structure of mathematics, if nothing else. That said... J's roots are in concisely documenting how computer architectures work. And I think that's why it shines. Is that still the case? For example J has (as far as I know) no support for multiple processors or even threads. And isn't the goal of "documenting how computer architectures work" strongly at odds with that of a high level language facilitating exploratory computing? Finally, I should mention that I have implemented things like dicts in VS APL (which had no nested array capabilities whatsoever). J doesn't quite have a couple of the tools I found useful there, but that's rarely an issue and if I cared I could reconstruct them. As Larry Wall has been fond of pointing out: there's more than one way to do it. But J has one enormous advantage over Mathematica: it's free. It may become my favorite scripting language. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
