<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0">
  <channel>
    <title>array languages on Oliver Mooney</title>
    <link>https://olivermooney.com/categories/array-languages/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Sat, 17 Jul 2021 15:59:12 +0100</lastBuildDate>
    
    <item>
      <title>Array Programming Languages</title>
      <link>https://olivermooney.com/2021/07/17/array-programming-languages.html</link>
      <pubDate>Sat, 17 Jul 2021 15:59:12 +0100</pubDate>
      
      <guid>http://OliverM.micro.blog/2021/07/17/array-programming-languages.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been &lt;em&gt;fascinated&lt;/em&gt; by languages like &lt;a href=&#34;https://aplwiki.com&#34;&gt;APL&lt;/a&gt;, &lt;a href=&#34;https://www.jsoftware.com/&#34;&gt;J&lt;/a&gt; and &lt;a href=&#34;https://mlochbaum.github.io/BQN/&#34;&gt;BQN&lt;/a&gt;, and the succint expression of dense computation they allow.&lt;/p&gt;

&lt;p&gt;Sure, I&amp;rsquo;ve always been fascinated by programming languages. But one constant bugbear has been just how much code it takes to express any significant computation. Array languages offer a set of primitives that operate and compose on much richer data sets (n-dimensional arrays) than the default in other languages, at the cost of looking quite&amp;hellip; &lt;em&gt;dissimilar&lt;/em&gt; to what programmers normally expect to see, code-wise.&lt;/p&gt;

&lt;p&gt;I genuinely love that APL stands for &amp;ldquo;A Programming Language&amp;rdquo;. Iverson&amp;rsquo;s &lt;a href=&#34;https://www.jsoftware.com/papers/tot.htm&#34;&gt;Notation as a Tool of Thought&lt;/a&gt; is eye-opening in its promise, no less so today then when it was written. &lt;a href=&#34;https://mlochbaum.github.io/BQN/&#34;&gt;BQN&lt;/a&gt; seems to be the best-available modern open-source implementation, but its documentation is still lacking, especially for programmers new to APL-derived languages. So I thought I&amp;rsquo;d start with J, especially as it doesn&amp;rsquo;t need the symbol set APL requires, and it has some interesting means of combining operators (&lt;a href=&#34;https://code.jsoftware.com/wiki/Vocabulary/hook&#34;&gt;hooks&lt;/a&gt; and &lt;a href=&#34;https://code.jsoftware.com/wiki/Vocabulary/fork&#34;&gt;forks&lt;/a&gt;) that looked fun to play with too. There&amp;rsquo;s also &lt;a href=&#34;https://codeberg.org/ngn/k&#34;&gt;ngn/k&lt;/a&gt;, an open-source implementation of &lt;a href=&#34;https://en.wikipedia.org/wiki/K_(programming_language)&#34;&gt;K&lt;/a&gt; that has an &lt;a href=&#34;https://ngn.bitbucket.io/k/&#34;&gt;online playground&lt;/a&gt; if you just want to jump in and be bewildered.&lt;/p&gt;

&lt;p&gt;That means that my total experience &lt;em&gt;writing&lt;/em&gt; APL-style code to date amounts to some tentative J written while following &lt;a href=&#34;https://www.jsoftware.com/help/primer/contents.htm&#34;&gt;their tutorial&lt;/a&gt;. I&amp;rsquo;ll publish some notes on the experience when I&amp;rsquo;ve completed it. It&amp;rsquo;s been fun so far, but not without its own warts &amp;amp; cruft. Host OS interactions look, well, absurd. But I&amp;rsquo;m still the neophyte here, so it&amp;rsquo;s their party.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>