{
  "version": "https://jsonfeed.org/version/1",
  "title": "array languages on Oliver Mooney",
  "icon": "https://www.gravatar.com/avatar/afdf18aef884a13f727e2621203725d3?s=96&d=https%3A%2F%2Fmicro.blog%2Fimages%2Fblank_avatar.png",
  "home_page_url": "https://olivermooney.com/",
  "feed_url": "https://olivermooney.com/feed.json",
  "items": [
      {
        "id": "http://OliverM.micro.blog/2021/07/17/array-programming-languages.html",
        "title": "Array Programming Languages",
        "content_html": "<p>I&rsquo;ve been <em>fascinated</em> by languages like <a href=\"https://aplwiki.com\">APL</a>, <a href=\"https://www.jsoftware.com/\">J</a> and <a href=\"https://mlochbaum.github.io/BQN/\">BQN</a>, and the succint expression of dense computation they allow.</p>\n<p>Sure, I&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&hellip; <em>dissimilar</em> to what programmers normally expect to see, code-wise.</p>\n<p>I genuinely love that APL stands for &ldquo;A Programming Language&rdquo;. Iverson&rsquo;s <a href=\"https://www.jsoftware.com/papers/tot.htm\">Notation as a Tool of Thought</a> is eye-opening in its promise, no less so today then when it was written. <a href=\"https://mlochbaum.github.io/BQN/\">BQN</a> 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&rsquo;d start with J, especially as it doesn&rsquo;t need the symbol set APL requires, and it has some interesting means of combining operators (<a href=\"https://code.jsoftware.com/wiki/Vocabulary/hook\">hooks</a> and <a href=\"https://code.jsoftware.com/wiki/Vocabulary/fork\">forks</a>) that looked fun to play with too. There&rsquo;s also <a href=\"https://codeberg.org/ngn/k\">ngn/k</a>, an open-source implementation of <a href=\"https://en.wikipedia.org/wiki/K_(programming_language)\">K</a> that has an <a href=\"https://ngn.bitbucket.io/k/\">online playground</a> if you just want to jump in and be bewildered.</p>\n<p>That means that my total experience <em>writing</em> APL-style code to date amounts to some tentative J written while following <a href=\"https://www.jsoftware.com/help/primer/contents.htm\">their tutorial</a>. I&rsquo;ll publish some notes on the experience when I&rsquo;ve completed it. It&rsquo;s been fun so far, but not without its own warts &amp; cruft. Host OS interactions look, well, absurd. But I&rsquo;m still the neophyte here, so it&rsquo;s their party.</p>\n",
        "date_published": "2021-07-17T15:59:12+01:00",
        "url": "https://olivermooney.com/2021/07/17/array-programming-languages.html",
        "tags": ["programming","array languages"]
      }
  ]
}
