Coding 2020-12-31
So, what do I do for a change of pace? Try to learn a seven-month-old programming language in a paradigm that I sort of know about, by looking over some language-agnostic coding challenges. I don't know, either.
So, here's some background. APL was a programming language focused on manipulating arrays and having incredibly terse syntax. While it has influenced several programming languages that I have experience with (of... varying quality), I haven't really tried to use any language with its combination of terseness and power before. APL inspired several other languages to that degree, such as J, which I believe is the APL-like that I first saw actual syntax of, on Hillel Wayne's blog. (That category should get a new entry that functions as a gentler introduction to J at some point.)
I am not trying to learn J.
Now, I don't even remember how I heard of the language I am trying to learn, whether Hillel mentioned it on his twitter or if I saw it somewhere else or what, but I've vaguely had my eye on a language called BQN, which is like APL, but with some fundamental differences, that, to the degree I understand them, seem to address some of the minor niggles I encountered with NumPy. The documentation, tutorials, and interpreters are by now at the point where, through trial and a lot of error, I can bash out a solution to basic coding challenges, sometimes.
Here's a solution to the first Advent of Code puzzle: •Out -´ ⥊ =⌜⟜"()" •FChars "day_1.txt". To be clear, that's the first ever, near as I can tell. Also to be clear, I don't know if that's the idiomatic way to do that. And I'm going to have to rewrite it some to be able to handle the second part of the challenge.
Anyway, I'm also looking at the BQN VM implementations, and vaguely wondering how well an RPython VM would work. The BQN VM is not the most minimal non-esolang that I've considered porting to RPython, but the interpreter version looks pretty small, so I'd be interested in taking some time to get a Python port, then finesse it into RPython, then give the compiler a few hours to chew on it.
Anyway, this took way longer to write than I intended, so it has to be done now.
Good night.