diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-05-21 10:17:49 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-05-21 10:17:49 -0400 |
| commit | 79f7eba03755f3f38686bff5c52b838f3692bbab (patch) | |
| tree | d128e45aaea009ba144e7ab657e67dee688b1f10 /commentary | |
| parent | de6bd55ee2dd97e33196fd910bb157dccad05938 (diff) | |
Editing
Diffstat (limited to 'commentary')
| -rw-r--r-- | commentary/history.md | 2 |
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. |
