Okay, let's actually talk about the facilities provided by the project instead of Brainfuck in general, shall we?
First of all, the sound channels: 10/20/30/.../310/320 Hz? What? 10 and 20 Hz are inaudible frequencies, and A of the first octave 440 Hz which you can't play.
As for the actual output mechanism:
The output instruction (.) increments the output pointer. If the output pointer is divisible by 33, it changes the delay of a sound channel to the value at the current memory cell. Otherwise, it changes a pixel on the screen to the value at the current memory cell.
What is an "output pointer"? The delay of which sound channel, exactly, is changed? And similarly, which pixel on the screen, exactly, is changed? What about decrementing the output pointer?
Meh, Brainfuck is clearly inadequate as the base for a modern computer.
Concurrent Brainfuck, now, that's where it's at. Forget "GPUs" and their measly "thousands" of compute units... can you imagine how many Brainfuck cores we can fit on to a system with a 5nm process? Millions, probably.
If there is any system that deserves to be tagged inconceivable performance, it would be such a system.
NUMA is for when you have expensive processors, hence few processors, and need to share the memory. This definitely calls for just giving what would be each NUMA node its own few-hundred-thousand CPUs and letting them use a communication bus directly to talk among themselves.
"Just". Such a wonderful word in these sorts of conversations. All we have to do is "just" compile modern languages into Brainfuck for these processors, no problem. All we have to do is "just" build the hardware for the rest of the system on a radically different paradigm than all current computers. I'm sure we can "just" repurpose some FPGAs for this for prototype purposes. It's all so easy here in "just"land I'm surprised we don't "just" do it.
GreenArrays have really cool chip that boasts "the most power efficient per instruction executed" when they released it. On the order of picojoules per cycle IIRC.
The chip has 144 independent computers (not processors -> computers)
The inventor of the Forth programming language, Chuck Moore, developed it, and is designed to execute with this parallel model in mind. A parallel Brainfuck system might be a cool project to port over to this platform.
Yeah, I had that in mind when this idea jumped unbidden into my head.
With something less blindlingly stupid than brainfuck, it's a legitimately interesting architecture. I fear between CPUs, GPUs, and the fact that apparently we're going straight to custom hardware for neural nets, there isn't a niche for this in our world. But there certainly is a parallel universe in which we went down this road instead starting circa the late 1970s, and in that universe it is the GPUs and custom neural net architectures that are facing the uphill battle because while they may be better at their task than the 2048 "conventional" CPU systems in that world, they have a hard time being better enough to justify the investment.
I did it, I took the plunge and just bought a dev board.
You are definitely right on with regard to the custom hardware, but I still want want to experiment with it, and I'm pretty sure there will be good niches for such flexibility/low power operations.
There are still a lot of problems that are solved/need solving in which neural nets are superfluous/overkill for (I think).
I might try my hand at some DSP for radio or audio to start.
I'll also think I'm gonna try their Forth implementation, I've never used it before, but it seems like a pretty neat language.
Maybe Uiua stack/array programming would make for a better port down the line.
I just had to enter a complain to the Cisco security umbrella that my work uses - "I am getting tired of the high quality security checks that uses scary words in the url as a metric..."
sure, but on the other hand one time when this project I'm on was just starting out I put a link on our teams channel to one of the netlify deployment builds for a PR I wanted a tester to test and I got an urgent message demanding I explain why I was sharing dangerous links over teams trying to infect my coworkers.
Do I understand correctly that each frame one is to call the output/“.” command 33(number of pixels) times, 32(number of pixels) times for audio, and (number of pixels) for drawing to the screen?
Hm, and, the way to do this.. would it be to, before a part where you actually output the output, you first store what you intend to output in region of the tape, and then go through that part to make the output?
Also, what happens if the computations take too long and you don’t have time to compute the frame?
This appears not entirely different to modern pixel shaders on GPUs, which basically run a program for every pixel on the screen. Quite efficient if you have large amounts of concurrent execution units.
See https://www.shadertoy.com/view/MdXSWn .
First of all, the sound channels: 10/20/30/.../310/320 Hz? What? 10 and 20 Hz are inaudible frequencies, and A of the first octave 440 Hz which you can't play.
As for the actual output mechanism:
What is an "output pointer"? The delay of which sound channel, exactly, is changed? And similarly, which pixel on the screen, exactly, is changed? What about decrementing the output pointer?