
The J Programming Language [video] - kencausey
http://www.infoq.com/presentations/j-language
======
fprotthetarball
Is anyone using J as a component in a "modern" application? I am looking for
an excuse to learn the language, but my current projects are more traditional
web applications.

I could likely find an excuse for it in data analysis/manipulation, but that
seems like the obvious application.

~~~
ProfVitzli
I think everybody who is using APL would have good reasons to use J (which is
actually APL's successor and was also created by Ken Iverson). If one is
interested in these kind of languages, he should definitely also check out
Arthur Whitney's magnificent K and Q
([https://en.wikipedia.org/wiki/K_%28programming_language%29](https://en.wikipedia.org/wiki/K_%28programming_language%29)).

~~~
alexcash
If you want to try out q there's a similar video available for it here:
[http://www.timestored.com/kdb-guides/getting-started-
kdb](http://www.timestored.com/kdb-guides/getting-started-kdb)

q isn't open source but it is widely used by most major banks to analyse their
time series data and there are very well paying and interesting jobs
available.

------
minikomi
I really appreciated the pacing of this talk. In depth, but not too much so,
with just enough of a taste to make me want to find out more.

------
tormeh
Too many special characters. This is why I don't like Haskell. As a polyglot,
it's really helpful to have a piece of syntax spell out what it does. Python
is usually really good at this. I don't get how it can be so hard for language
designers to learn this. Why use ":+" when you can use "append"? Now I have to
google "Scala append" every time I start writing a new Scala program. Good
job. But at least the Scala example uses "+", which is sort of understandable
with lists. You can suspect that it has something to do with appending when
reading code. What does ">>=" even mean? Or "(($){.R)"? WTF? I give up. I
don't like languages that try to fight me.

~~~
klibertp
Stop trying to fight a language, then? Just learn those few unfamiliar
constructs the language is build upon and start using it. Actually, in J there
is not that much of what you need to learn, here is the full list:
[http://www.jsoftware.com/help/dictionary/vocabul.htm](http://www.jsoftware.com/help/dictionary/vocabul.htm)

And here is a bit more involved explanation of what those words mean:
[http://www.jsoftware.com/jwiki/HenryRich?action=AttachFile&d...](http://www.jsoftware.com/jwiki/HenryRich?action=AttachFile&do=view&target=J602_RefCard_color_letter_current.pdf)

If there is one thing I learned as a polyglot it's that language usage
patterns differ and trying to use one language as if it was another is
counterproductive. My advice is to learn more and practice more - at some
point you'll start seeing higher-level patterns in language design and will be
able to cope with many, now unfamiliar, features and design decisions.

~~~
tormeh
I do see patterns in languages, it's just that the patterns are hidden below
arbitrary nonsensical syntax that has to be relearned every single time I
switch language. Some syntax, like Python's, is easier to remember and guess
than other syntax. I conclude that Python's syntax is good and Haskell/J's
syntax is bad.

Basically, I want the languages I use and have to constantly relearn to have a
syntax that is quick to pick up after having partly forgotten it for the nth
time. That requires memorable and guessable names and keywords.

~~~
avmich
I'd recommend reading Iverson's "Notation as a Tool of Thought"
([http://www.jsoftware.com/papers/tot.htm](http://www.jsoftware.com/papers/tot.htm))
. Operator looks for APL - and then for J - were modelled after mathematical
notation, which had to be extended somewhat towards computations. But can you
imagine writing on a whiteboard, say, "samples_transposed" instead of A'?

You definitely can use words instead of many symbols in J. I highly doubt
though you want to do that for the core language. Much more productive - IMO -
is to learn the vocabulary - which is very finite. Yes, I know it's a great
show stopper for those considering learning J.

------
bgilroy26
Dadgum has a great review of a J programming book here:

[http://prog21.dadgum.com/19.html](http://prog21.dadgum.com/19.html)

~~~
aethertron
More Prog21 J posts:

[http://prog21.dadgum.com/14.html](http://prog21.dadgum.com/14.html)

[http://prog21.dadgum.com/48.html](http://prog21.dadgum.com/48.html)

[http://prog21.dadgum.com/121.html](http://prog21.dadgum.com/121.html)

[http://prog21.dadgum.com/141.html](http://prog21.dadgum.com/141.html)

------
jboggan
J is really fun. There are a lot of Project Euler problems you can
hypothetically do as one-liners and that's highly amusing to me at least.

Edited to add examples: [http://www.hakank.org/j/](http://www.hakank.org/j/)

------
omaranto
I recommend installing a J interpreter on your phone or tablet. It's concision
makes it a great choice for coding without a physical keyboard (specially with
a specialized J virtual keyboard). It's great for, say, doing Project Euler
problems while you're waiting in line.

