aboutsummaryrefslogtreecommitdiff
path: root/commentary
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-05-21 10:17:49 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-05-21 10:17:49 -0400
commit79f7eba03755f3f38686bff5c52b838f3692bbab (patch)
treed128e45aaea009ba144e7ab657e67dee688b1f10 /commentary
parentde6bd55ee2dd97e33196fd910bb157dccad05938 (diff)
Editing
Diffstat (limited to 'commentary')
-rw-r--r--commentary/history.md2
1 files changed, 1 insertions, 1 deletions
diff --git a/commentary/history.md b/commentary/history.md
index 5e8e172a..cec68e01 100644
--- a/commentary/history.md
+++ b/commentary/history.md
@@ -6,7 +6,7 @@ I ([Marshall Lochbaum](https://mlochbaum.github.io/)) began designing BQN as a "
### Background
-I learned [J](https://aplwiki.com/wiki/J) as my first computer programming language in 2009, and it's been my language of choice for personal projects from then until I started working with BQN. My first exposure to APL was [Dyalog APL](https://aplwiki.com/wiki/Dyalog_APL), which I began learning gradually after starting work at Dyalog in 2017; while I understand every primitive in detail (I've substantially reimplemented most of them), I've never written even a medium-sized script with it. I studied APL's history and many other APL dialects while helping to create the new [APL Wiki](https://aplwiki.com/wiki/Main_Page) in late 2019. In particular, I found [A+](https://aplwiki.com/wiki/A+) to be a very sound design and nominally took it the starting point for BQN. As a result, BQN draws more from a general concept of APL than any particular dialect.
+I learned [J](https://aplwiki.com/wiki/J) as my first computer programming language in 2009, and it's been my language of choice for personal projects from then until I started working with BQN. My first exposure to APL was [Dyalog APL](https://aplwiki.com/wiki/Dyalog_APL), which I began learning gradually after starting work at Dyalog in 2017; while I understand every primitive in detail (I've substantially reimplemented most of them), I've never written even a medium-sized script with it. I studied APL's history and many other APL dialects while helping to create the new [APL Wiki](https://aplwiki.com/wiki/Main_Page) in late 2019. In particular, I found [A+](https://aplwiki.com/wiki/A+) to be a very sound design and nominally took it as the starting point for BQN. As a result, BQN draws more from a general concept of APL than any particular dialect.
I have been working on programming language design since 2011 or earlier. The start of my first major language, [I](https://github.com/mlochbaum/ILanguage), might be placed in 2012 when I published a paper on its approach to mapping, unifying J's trains and function rank. By this time I had worked with several languages including Python and Factor, and implemented little interpreters in Java, Scala, and Haskell. There are many new ideas in I and some of them have made it to BQN, but the language has served mainly as a warning: its pure and simple syntax and approach to array and tacit programming lead to a rigidity that seems to take over from any human designer. And the end result is not usable. So I sought out constructs that would give back some control, like APL's two-layer function/operator syntax and explicit functions (although Dyalog has lexical scoping, it is crippled by the lack of closures and I ended up learning proper use of lexical scoping from Javascript—I've never done real work with any actual Lisp). Another language that I envisioned before BQN, called Iridescence, goes further in this direction, with Python-like syntax that is "noisy" relative to APL. It remains purely theoretical (I'll implement it some day) but has already had an influence on some BQN primitives.