<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: J, or how I learned to stop worrying and love the matrix</title>
	<atom:link href="http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/</link>
	<description>Because my LiveJournal is too silly</description>
	<lastBuildDate>Sat, 17 Sep 2011 02:28:35 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Simon Beaumont</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-150206</link>
		<dc:creator>Simon Beaumont</dc:creator>
		<pubDate>Tue, 23 Dec 2008 14:48:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-150206</guid>
		<description>Well j certainly looks interesting - as someone who would like matrices and other mathematical structures handled in a seamless manner, I got all excited - and nearly downloaded it - but then, since there is no 64bit version available for OS X, I looked for the source code kit... aha! so to use Jsoftware&#039;s phrase: &quot;I wont be betting the farm on it...&quot; or even downloading it until they open source it... imagine depending on a language you can&#039;t build for your platform of choice... sounds like another J thing - mind you that didn&#039;t stop it catching on... Live free or die ;-) back to the Haskell...</description>
		<content:encoded><![CDATA[<p>Well j certainly looks interesting &#8211; as someone who would like matrices and other mathematical structures handled in a seamless manner, I got all excited &#8211; and nearly downloaded it &#8211; but then, since there is no 64bit version available for OS X, I looked for the source code kit&#8230; aha! so to use Jsoftware&#8217;s phrase: &#8220;I wont be betting the farm on it&#8230;&#8221; or even downloading it until they open source it&#8230; imagine depending on a language you can&#8217;t build for your platform of choice&#8230; sounds like another J thing &#8211; mind you that didn&#8217;t stop it catching on&#8230; Live free or die <img src='http://blog.mikael.johanssons.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  back to the Haskell&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michi</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-147202</link>
		<dc:creator>Michi</dc:creator>
		<pubDate>Thu, 11 Dec 2008 16:58:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-147202</guid>
		<description>What?: I agree that the compactness alone is not a virtue. However, compact (tokenwise) expressiveness _is_. I&#039;d rewrite, in a &#039;legible&#039; fashion the solution above as:

+/ , 5 = q: &gt;: i. 100
plus.listOperation(flatten(5.equals(primeFactorization(increment(100.firstIntegers())))))

and even so, the real power herewithin lies, to some extent, in having a primitive for prime factorization and - more importantly - in having very smooth transitions between applying functions on atomic elements and on generalized arrays.

This last point is important. Really.

The real power, as I perceive it, isn&#039;t in the notational choices -- though the notational choices and the inherently linguistical language of the community certainly are powerful -- but rather in this array agnosticism. Any function is automatically a Python/Haskell map. (Or zipWith, as it were). And THIS is an approach that for instance Java simply does not lend itself to easily. At all. And it is also an approach that opens up for the compiler/interpreter to do really interesting things under the hood to your code, knowing what it can expect.</description>
		<content:encoded><![CDATA[<p>What?: I agree that the compactness alone is not a virtue. However, compact (tokenwise) expressiveness _is_. I&#8217;d rewrite, in a &#8216;legible&#8217; fashion the solution above as:</p>
<p>+/ , 5 = q: >: i. 100<br />
plus.listOperation(flatten(5.equals(primeFactorization(increment(100.firstIntegers())))))</p>
<p>and even so, the real power herewithin lies, to some extent, in having a primitive for prime factorization and &#8211; more importantly &#8211; in having very smooth transitions between applying functions on atomic elements and on generalized arrays.</p>
<p>This last point is important. Really.</p>
<p>The real power, as I perceive it, isn&#8217;t in the notational choices &#8212; though the notational choices and the inherently linguistical language of the community certainly are powerful &#8212; but rather in this array agnosticism. Any function is automatically a Python/Haskell map. (Or zipWith, as it were). And THIS is an approach that for instance Java simply does not lend itself to easily. At all. And it is also an approach that opens up for the compiler/interpreter to do really interesting things under the hood to your code, knowing what it can expect.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pozorvlak</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-147189</link>
		<dc:creator>pozorvlak</dc:creator>
		<pubDate>Thu, 11 Dec 2008 15:05:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-147189</guid>
		<description>This post made the front page of programming.reddit, FWIW. Nothing terribly interesting in the comment thread, but there were lots of equivalent one-liners in various languages.</description>
		<content:encoded><![CDATA[<p>This post made the front page of programming.reddit, FWIW. Nothing terribly interesting in the comment thread, but there were lots of equivalent one-liners in various languages.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: What?</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-147088</link>
		<dc:creator>What?</dc:creator>
		<pubDate>Thu, 11 Dec 2008 11:35:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-147088</guid>
		<description>This isn&#039;t about a compact code, you can replace the tokens with more verbose terms, and it is still stupid.

&quot;100&quot;.countTrailingZeros()
100.countTralingZeros()


Thanks. I like my code readable, verbose, simplest, most dogged way of coding it with no short cuts, so I can say &#039;I know that method works, I know what it does, I don&#039;t need a test for it, I don&#039;t need damn javadoc&#039;.

If I get an exception, if I trace a bug down to the wrong result here, guess what, I&#039;ve saved hours.

Simplest implementation wins over all, all the time.</description>
		<content:encoded><![CDATA[<p>This isn&#8217;t about a compact code, you can replace the tokens with more verbose terms, and it is still stupid.</p>
<p>&#8220;100&#8243;.countTrailingZeros()<br />
100.countTralingZeros()</p>
<p>Thanks. I like my code readable, verbose, simplest, most dogged way of coding it with no short cuts, so I can say &#8216;I know that method works, I know what it does, I don&#8217;t need a test for it, I don&#8217;t need damn javadoc&#8217;.</p>
<p>If I get an exception, if I trace a bug down to the wrong result here, guess what, I&#8217;ve saved hours.</p>
<p>Simplest implementation wins over all, all the time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Justin</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-147055</link>
		<dc:creator>Justin</dc:creator>
		<pubDate>Thu, 11 Dec 2008 08:06:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-147055</guid>
		<description>I&#039;ll persevere, it is quite intimidating though</description>
		<content:encoded><![CDATA[<p>I&#8217;ll persevere, it is quite intimidating though</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wayne D. Young</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-147009</link>
		<dc:creator>Wayne D. Young</dc:creator>
		<pubDate>Thu, 11 Dec 2008 02:13:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-147009</guid>
		<description>I made a good living programming APL, a precursor to J,  in the early 90s. I always liked programming in it. We were so dorky that we&#039;d have little impromptu competitions to write the shortest program, preferably one or two lines, to accomplish a task. A math background is helpful in my opinion. Pure dorkiness. Nice to see an article on J.

Wayne D. Young</description>
		<content:encoded><![CDATA[<p>I made a good living programming APL, a precursor to J,  in the early 90s. I always liked programming in it. We were so dorky that we&#8217;d have little impromptu competitions to write the shortest program, preferably one or two lines, to accomplish a task. A math background is helpful in my opinion. Pure dorkiness. Nice to see an article on J.</p>
<p>Wayne D. Young</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tracy Harms</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-146981</link>
		<dc:creator>Tracy Harms</dc:creator>
		<pubDate>Wed, 10 Dec 2008 22:56:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-146981</guid>
		<description>Good reading, this; thanks. Welcome to J! Sounds like you&#039;re ready to have your mind boggled.

One thing you wrote was inaccurate in a way that I think deserves correction.

&gt; , gets us an 1xn matrix with the same entries, read
&gt; row by row, from left to right, as we started with

Ravel (,) results in a simple list, not a one-by-n array. That is, its items are arranged on a single axis, not on two axes.

What I&#039;ve said here is probably what you meant to say, but as it is possible (and different) to have a 1-by-n array that&#039;s a distinction you&#039;ll learn to keep track of as you work with J.

Examples:
   fives=: 5=q:&gt;:i.100
   $ fives
100 6
   $ , fives
600
   $ ,: , fives
1 600</description>
		<content:encoded><![CDATA[<p>Good reading, this; thanks. Welcome to J! Sounds like you&#8217;re ready to have your mind boggled.</p>
<p>One thing you wrote was inaccurate in a way that I think deserves correction.</p>
<p>&gt; , gets us an 1xn matrix with the same entries, read<br />
&gt; row by row, from left to right, as we started with</p>
<p>Ravel (,) results in a simple list, not a one-by-n array. That is, its items are arranged on a single axis, not on two axes.</p>
<p>What I&#8217;ve said here is probably what you meant to say, but as it is possible (and different) to have a 1-by-n array that&#8217;s a distinction you&#8217;ll learn to keep track of as you work with J.</p>
<p>Examples:<br />
   fives=: 5=q:&gt;:i.100<br />
   $ fives<br />
100 6<br />
   $ , fives<br />
600<br />
   $ ,: , fives<br />
1 600</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: winterkoninkje</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-146970</link>
		<dc:creator>winterkoninkje</dc:creator>
		<pubDate>Wed, 10 Dec 2008 21:35:24 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-146970</guid>
		<description>Ah sweet sweet APL. The vocabulary is strange to say the least, but it does offer a whole new way of thinking about things. My favorite bit of the language is the generalized matrix multiplication (or tensor multiplication really). It&#039;s obvious why that&#039;d never fly in C-like languages, but I&#039;m surprised that it hasn&#039;t been adopted in the functional community.</description>
		<content:encoded><![CDATA[<p>Ah sweet sweet APL. The vocabulary is strange to say the least, but it does offer a whole new way of thinking about things. My favorite bit of the language is the generalized matrix multiplication (or tensor multiplication really). It&#8217;s obvious why that&#8217;d never fly in C-like languages, but I&#8217;m surprised that it hasn&#8217;t been adopted in the functional community.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Fork</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-146954</link>
		<dc:creator>Peter Fork</dc:creator>
		<pubDate>Wed, 10 Dec 2008 19:39:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-146954</guid>
		<description>So &quot;,&quot; take a m x n matrix and makes it a 1 x mn vector?

Is this line equivalent?

 +/ +/ 5 = q: &gt;: i. 100</description>
		<content:encoded><![CDATA[<p>So &#8220;,&#8221; take a m x n matrix and makes it a 1 x mn vector?</p>
<p>Is this line equivalent?</p>
<p> +/ +/ 5 = q: &gt;: i. 100</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sergio</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-146947</link>
		<dc:creator>sergio</dc:creator>
		<pubDate>Wed, 10 Dec 2008 19:14:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-146947</guid>
		<description>Makes you wonder why APL did not flourish :-)</description>
		<content:encoded><![CDATA[<p>Makes you wonder why APL did not flourish <img src='http://blog.mikael.johanssons.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michi</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-146937</link>
		<dc:creator>Michi</dc:creator>
		<pubDate>Wed, 10 Dec 2008 18:25:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-146937</guid>
		<description>Justin: Which is why I took this particular one apart. The major benefit I see with J is that it has idioms for some truly awesome things. And, just like Matlab, it has the equivalent to map or zipWith in Haskell, Lisp et.c. as a completely natural and obvious thing to do.

It has a choice of signage that&#039;s kinda imposing, but as I said above, it might well be worth getting into.</description>
		<content:encoded><![CDATA[<p>Justin: Which is why I took this particular one apart. The major benefit I see with J is that it has idioms for some truly awesome things. And, just like Matlab, it has the equivalent to map or zipWith in Haskell, Lisp et.c. as a completely natural and obvious thing to do.</p>
<p>It has a choice of signage that&#8217;s kinda imposing, but as I said above, it might well be worth getting into.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jusitn</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/j-or-how-i-learned-to-stop-worrying-and-love-the-matrix/comment-page-1/#comment-146934</link>
		<dc:creator>Jusitn</dc:creator>
		<pubDate>Wed, 10 Dec 2008 18:17:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=186#comment-146934</guid>
		<description>Compact to the point of being unreadable, at least for me.</description>
		<content:encoded><![CDATA[<p>Compact to the point of being unreadable, at least for me.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

