Fascinating. And given that GoL is Turing complete, it should be theoretically possible to implement a Turing machine in the cellular automaton that could then run a copy of the Forth interpreter running the APL program running the CA.
Please make your Turing complete game of life execute arbitrary Lisp code and you will have rescued the holy grail of computer language hacker nerdom here.
SectorLISP is x86-specific, so this wouldn't just be neatly mushing existing things together, but I think the result could be very interesting nonetheless. I'm tempted to note that SectorLISP's tiny size could make this a reasonable one-shot/nerdsnipe-sized weekend project :D
I might need to learn APL. It seems like I'm missing out on something. Lisp was a gift which helped with my C and Elixir. That was a mini-revelation in itself.
APL, K or J ; I've learned APL, and was able to use it effectively - but things only really "clicked" when I learned K; And despite several attempts, J never did click for me -- not sure why, probably the associations I have for the ascii characters are too strong to break.
But yes, highly recommend learning members of this family. It will help your C for sure as well, though possibly not in ways you'd expect.
After using APL and K for a while, I realized 95% of "abstraction" features in C++ / C# and friends are useless; I now avoid C++; My C code became way shorter, way more efficient, way simpler -- but also much less orthodox.
Pronounced, this would be "x at grade-down of count of each x" - and indeed, in "q" (a syntactic sugar for K that uses words instead of symbols), this is almost how you would write it (rather: "x at downgrade count each x". It's basically algorithmic math notation: In math you say "b^2-4ac" rather than "b squared minus 4 times a times c". In K you say "x@>#:'x".
It's not just a matter of symbol/syntax familiarity - there's also idioms, etc. But the "scariness" is similar to the "scariness" of a language like Japanese or Arabic, which uses different graphic elements, syntax, vocabulary, and idioms. You might not like it, but it's not because there's something weird or wrong about it -- it's just foreign.
I learned APL on a mainframe over 30 years ago, which is not something I'd recommend (also, you're unlikely to have access to one), but rumor says Dyalog has good tutorials, such as "Mastering Dyalog APL", see links here https://www.dyalog.com/getting-started.htm
tl;dr - a 200 line implementation of Life together with a heavily annotated version of the same thing. Might get you into APL or scare you off, more likely.
In his weekly column the famous IT philosopher explains issues in computation in a very thoughtful manner.
Recently, Conway's Game of Life was implemented as a one-liner in APL executed in FORTH. APL is another weird-looking programming language. Implementing Conway's game of Life yet again is important because it is a fundamental example of a computation. In this case, the one-liner is important because it is an example of how to concisely express a computation.
Conway's Game of Life is a cellular automaton. A cellular automaton is a discrete model of computation. It consists of a grid of cells, each of which can be in one of a finite number of states. The state of the automaton is updated in discrete time steps, according to a fixed rule. In Conway's Game of Life, the rule is that a cell is alive in the next time step if and only if it was alive in the previous time step and exactly two or three of its eight neighbors were also alive. If a cell is not alive in the previous time step, then it is alive in the next time step if and only if exactly three of its neighbors were alive.
The one-liner in APL executes the Game of Life rule on a two-dimensional grid of cells. The input to the one-liner is the state of the grid at some time step, and the output is the state of the grid at the next time step. The one-liner is able to do this because it uses a clever trick. It treats the input grid as a one-dimensional array of cells, and it uses the fact that the Game of Life rule can be expressed as a matrix operation.
The one-liner is:
life←{↑1 ⍵∨.↑1 3 4⍵}
This one-liner is an example of how to concisely express a computation. It is also an example of how to use a powerful programming language to express a computation in a simple and elegant way.