<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Matt Manela's Blog : J</title><link>http://blogs.msdn.com/matt/archive/tags/J/default.aspx</link><description>Tags: J</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>The J Language</title><link>http://blogs.msdn.com/matt/archive/2008/04/27/the-j-language.aspx</link><pubDate>Mon, 28 Apr 2008 08:13:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8434353</guid><dc:creator>MattManela</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/matt/comments/8434353.aspx</comments><wfw:commentRss>http://blogs.msdn.com/matt/commentrss.aspx?PostID=8434353</wfw:commentRss><description>&lt;p&gt;I have been experimenting with this programming language called &lt;a href="http://www.jsoftware.com/" target="_blank"&gt;J&lt;/a&gt;.&amp;nbsp; J is a full featured programming language capable of doing anything your more conventional language do.&amp;nbsp; What makes J different is how it approaches solving problems.&amp;nbsp; All functions (called verbs in J) can be applied to any n-dimensional array.&amp;nbsp; This ability to consume large sets of data in the same way as single values makes for some concise (and dense) solutions.&lt;/p&gt; &lt;p&gt;One such example I saw was this function which finds the mean of a list of numbers:&lt;/p&gt; &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;mean =: +/%#
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So far in my readings I am able to understand that much but I came across a implementation of quick sort that looks like this:&lt;/p&gt;
&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; height: 46px; background-color: #f4f4f4"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;quicksort=: (($:@(&amp;lt;#[) , (=#[) , $:@(&amp;gt;#[)) ({~ ?@#)) ^: (1&amp;lt;#)&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I have no clue at all yet what the hell that is doing.&amp;nbsp; But hopefully i'll eventually get there.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;At first I was skeptical about the value of a language like J (or &lt;a href="http://en.wikipedia.org/wiki/APL_%28programming_language%29" target="_blank"&gt;APL&lt;/a&gt; the predecessor of J).&amp;nbsp; After playing with it though I am convinced of its power but I still question its maintainability.&amp;nbsp; It is really cool how short and concise your programs can be but if you go back to update it in a year will you (or someone else) be able to know what is going on.&amp;nbsp; Every tutorial I read says something along the lines of "once you get used to it you can read it super easily"&amp;nbsp; however I am still questioning that.&amp;nbsp; I have used regular expression for a long time and they still take me a long time to parse what they are doing. I don't see J as being much different.&amp;nbsp; But I am sticking with it for now and I will see if I encounter an epiphany and suddenly be able read and understand J easily :)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8434353" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/matt/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/matt/archive/tags/J/default.aspx">J</category></item></channel></rss>