J Source to be released under GPL
old.nabble.com
old.nabble.com
* http://en.wikipedia.org/wiki/J_%28programming_language%29
* A good intro - _J for C Programmers_ (http://www.jsoftware.com/help/jforc/contents.htm)
* A more casual intro - "Mind if I do a J?" (http://jeffzellner.com/miidaj/)
Thanks. For those who prefer PDFs, that book and more material are available at http://www.jsoftware.com/jwiki/Books . (Had to dig around a bit, because, in spite of the original URL, the book was not listed in the help page.)
Question: I have a vague memory of seeing a web page named something like "A Garden of ..." with neat examples, either for J or K. However, my search-fu is failing me.
Now let's sell tickets to some cage fights, for instance http://www.jsoftware.com/jwiki/Essays/Sudoku versus http://norvig.com/sudoku.html
P.S. The credit at the bottom of the J Sudoku piece led me here: http://www.vector.org.uk/ . Seems an interesting place to visit. It even features articles headed "APL is not for programmers" (quote: "At this point the average programmer turns off, drops out, gets his coat and leaves the building, heading for mom and the kids. We, on the other hand, will continue.")
(I'll copy it here, because it's short enough for that:
p,:3/:_(p:9\:!81)%3
s:{*(,x)(,/{@[x;y;:;]'&21=x[&|/p[;y]=p]?!10}')/&~x}There is already an open source K implementation called kona https://github.com/kevinlawler/kona , and now J is joining. There are old J source codes floating around, but the latest is from 1993 if I'm not mistaken.
* Also, from communicating with the author: it's a clean re-implementation based on experience with it, not an open-sourced version of "real" K. (I've never used K or Q.)
I got the '93 J to work, too (on OpenBSD), but it's evolved a lot since then, and having the official version open will draw a lot more attention.
Also, thanks for answering some of my questions about J, K, and valence/rank a while back.
Thanks, I didn't realize there was an ambiguity here. I've updated the GitHub page to be clearer on this point.
Also, K operators often rhyme with the C meaning of the same characters: &=and/min, |=or/max, monadic*=first (like C dereference when applied to a vector; trenary?=[vector]choose. I think there are a few others.
Also, you're welcome :)
I meant less verbose, of course. But it's too late to edit.
This is the reason to learn J. It is a clean, fast course in a programming style that puts linear algebraic concepts at its heart. If you are interested in functional programming, work through this book. The "tutorial" part is about 60 pages, which should be worked through, and the dictionary part about 150 pages, which can be dipped into.
quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
Anyone who does any significant amount of work in J care to comment? It seems like a super-niche language, which would take more time to come up with and mentally-parse existing code than the same operations in other languages. Of course, once you're fluent, you're fluent, but it looks like Vim to the Vim'th power...Personally, I found J a very interesting interesting exercise, and APL is historically SUPER important, but for practical uses they have been way superseded by matlab/ Octave/ R and the T/P/R* scripting languages. (At times my friend will say something like "in J you can compute the sum of a matrix IN JUST ONE LINE... and I will point to "sum(A)" in matlab, as opposed "$&$%^%$%M" in J, or whatever it is.)
K may be more brain friendly than J. But as far as I am concerned, J makes assembler and badly written Perl look easy to read.
(I'm only a novice J programmer, but I quite like the language.)