The Domino Computer
andrewt.net
andrewt.net
IIRC, we managed to get AND, OR, NOT, XOR working and I set about building a half adder. It needed a lot of beach space, since it was a fairly shallow slope and you needed the balls to get up enough speed to work the logic.
The end result was, unfortunately, that the sea started washing away my design before I quite managed to debug it.
Ultimately I'd have needed to find a way to build a bigger chunk of logic and keep the balls circulating around it - didn't get that far but felt ready to do so if a post-apocalyptic scenario called for it.
This is a calculator: a machine cable of doing a one-off operation (implementing something interpretable as a calculation) before requiring further intervention. "Computer" should be at least reserved for those that can do a lot of instructions, preferably indefinitely, without human involvement.
And I don't think this is a terminological nitpick, it bleeds into a fundamental disconnect that leaks out in their puffery:
>The aim is to demonstrate how very simple reactions, simple enough that they occur in real physics, can be combined to perform mathematical calculations — which hopefully helps explain how large numbers of transistors can combine to play Doom.
No, it doesn't. No matter how many of these domino calculators you string together, you're not getting Doom (even with the appropriate hardware to use the calculation's results). To model the core dynamic needed to run Doom, you at least need the ability to indefinitely run such calculations, in a way that subsequent ones depend on the results of earlier ones. By construction, these systems can't do that, and provide no insight into how you would.
It does provide a demonstration that a (non-electronic) physical system can implement the dynamic behind addition. Cool. But I'm not sure what layperson actually has trouble on that point. There are lots of physical systems that do that -- the confusion, I think, would lie in how you can bridge the gap to Doom. (At least, it was for me when computers seemed mysterious.)
Cool, they found one more physical way to implement a specific calculation. Call it a domino calculator. Don't call it a computer, don't imply it solves the core difficulties needed to run Doom.
Okay, rant over, now you can accuse me of making a mountain out of a molehill.
Also, more pedantry - if you string enough domino calculators together, you could get arbitrarily long running-time of Doom - even the 49.7 days of uptime after which Windows 95 would restart. :)
Eventually I realized the same thing you called out here. You need a few extra things to really do computation instead of calculation. Memory, for one, and branching is crucial. But these little demo "computers" like this and Steve Mould's water computer always leave these out.
There's probably dozens of little curious minds like mine that look at this, get excited that they'll finally understand how that magic rectangle works, and then get frustrated when they can't see how the rubber meets the road (because they're missing crucial pieces through no fault of their own).
Here's an earlier comment where I fleshed out the point (connected to a possibly dubious, parallel argument about LLMs). Start from "If my point isn't clear":
I still remember clearly the day I in college read the SICP chapter on simulating circuits and realized how computers work -- a purely functional circuit combined with a clock to govern that circuit so its inputs come from memory which came from the previous state but its outputs go into memory for the next state. Prior to that I always had the same confusion you describe -- logic happens, but how does anything actually progress?
Branching isn't really necessary per se in that you can do tricks to avoid it but essentially accomplish the same thing (differentiable computing leans heavily on this), eg if you want to select A or B, rather than saying `if(x) a else b`, you can say `xa + (1-x)b`
CPU, memory, and etc sre just a collection of these gates, connected by these gates.
For sure, you need to go further in this direction to build a general purpose computer, but it is in this direction that you have to go.
No, it can't be. You could unroll a constant length loop into a network of these domino calculators (which is how you get Turing-completeness in homomorphic encryption from a few logical primitives), but you cannot implement arbitrary looping that real computers can do.
>CPU, memory, and etc sre just a collection of these gates, connected by these gates.
No, they aren't. Those implement the additional functionality necessary to do that for arbitrary cycles of calculations, not just one static loop unrolled into a fixed-size circuit.
>For sure, you need to go further in this direction to build a general purpose computer, but it is in this direction that you have to go.
No, the functionality implemented here cannot generalize to arbitrary computation until you implement other, orthogonal primitives.
These dominoes are distinct in that they cannot flip the state back and therefore cannot rerun the same sections, and need need more and more dominoes to do more computations, but fundamentally I dont see how that is any different than providing a longer and longer input of energy into a modern computer.
Can you clarify what "orthogonal primitives" are missing?
At each step it creates an output, which can be repetitive, or not repetitive.
The generated sequence is still finite unless were talking about an infinite amount of power. If we allow an infinitely long domino then they are equivalent.
Sure. From my earlier comment[1] distinguishing the core primitives -- labeled a) through d) -- necessary to call something a computer:
>>if you want to get the core, impressive functionality of the things-we-call-computers, you have to include a bunch of other, nontrivial, orthogonal functionality, like a) the ability read and execute a lot of such instructions, and b) to read/write from some persistent state (memory), and c) have that state reliably interact with external systems. Logic gates (d) are just one piece of that!
>These dominoes are distinct in that they cannot flip the state back and therefore cannot rerun the same sections, and need need more and more dominoes to do more computations, but fundamentally I dont see how that is any different than providing a longer and longer input of energy into a modern computer.
In addition to SonOfLilit's comment, a fundamental difference is that, for a modern computer, the provision of electricity is specified as part of how the computer works, while the domino "computer" did not specify the apparatus necessary to reset and execute the subsequent instructions (nor the mechanism whereby such subsequent instructions would be provided) -- the a) and possibly b) in my model above.
So yes, if they had presented a "domino computer" that included such functionality (and rounded out the a-d), I would indeed agree with calling that a computer!
Why does (the absence of) such apparatus matter? Well, the whole point of the project was to provide intuition behind how/why some physical mechanisms give rise to a "computer". Since people already understand how dominoes work, they will therefore understand how the computer built from them works! Except they don't, because, for it to be a computer, you'd have to add on something they don't have an intuition for (the resetters etc).
So yes, by all means, use this as an intuition pump for yet-another-way to physically implement a calculator. Just, not a computer, which is something else and a tad more mysterious.
I don't see why it would need to specify this. Anyone who has played with dominoes knows you can set them up again. Why would anyone waste time stating something so obvious?
We already have a term for the machine where you have to reset it yourself after every calculation: a calculator. Hence the original comment.
>electricity
pick one.
This is generally where the pedant would derail the conversation into the usual Turing* Completeness* infinite tape semantics.
While one can create combinational "logic" out of valves or dominos, it's impossible to create sequential logic out of passive physical objects.
Sequential logic takes the form of S-R latches like:
-+++++++++++===++++++-.
==::::::::::::::::::::=*-
.-==. .. ==::::::::::::::::::::::-*-.
.:-=. :#*++++++++++++++++++++++++++++++*=::::::::::::::::::::::::==.
.-++. ==:::::::::::::::::::::::::=+
==::::::::::::::::::::::::::*-
==::::::::::::::::::::::::::-*..::. ....
==:::::::::::::::::::::::::::*-+..==. .:. .:..= .=
==:::::::::::::::::::::::::::*==..-+-:::::-*+::::::::==..=-==
==:::::::::::::::::::::::::::#..--:. .=: ....
==::::::::::::::::::::::::::+= .=:
==:::::::::::::::::::::::::-*. .=:
.-+++++++++++++#=::::::::::::::::::::::::-+. .=:
.=- ==:::::::::::::::::::::::++. .=:
.=- ==::::::::::::::::::::-++. .+:
.=- -*++++++++++++++++**+-:. .:+*=:.
.=- ...-**-.
.=- .-=+=:.
.=- :=+=:..
.==... ...-+*-.
.:=+=-.. ..-=+=:.
..:=*+:. .:=*=:..
.-*+-.....-+*=..
.+#*#+:.
.=*=:.....:=*+:.
...:+*=. .=*+-...
..-=+=:. .:=+=-..
.==.. ..:=*=:.
.=- .=*+-...
.=- .:=+=-..
.=- ..:=*=:.
.=- =*===============++**=:.. ..=*+-.
.=- ==::::::::::::::::::::-++. .=:
.=- ==:::::::::::::::::::::::++. =:
.-+++++++++++++*=::::::::::::::::::::::::-+. =:
==:::::::::::::::::::::::::-*. =:
==::::::::::::::::::::::::::+= =:
==:::::::::::::::::::::::::::#..--:. =: .=++:
==:::::::::::::::::::::::::::*==..-+-------*+--------==..=.:=
==:::::::::::::::::::::::::::*-+:.==.....................+:=-
==::::::::::::::::::::::::::-*. ...
==::::::::::::::::::::::::::*-
.=++: ==:::::::::::::::::::::::::=+.
.==+: :##++++++++++++++++++++++++++++++#=::::::::::::::::::::::::==.
.:..-. . ==::::::::::::::::::::::-*-.
==::::::::::::::::::::+*:.
:*++++++++++++++++++=:.2-symbol machines happen to have the smallest possible useful alphabet. And, because of Turing completeness, you can always define a binary machine that emulates any other Turing machine.
The same thing happens with Church’s lambda calculus - there’s no binary, and no electricity required.
Computer Science doesn’t require a digital electronic computer; after all, neither Church nor Turing did, when they wrote their research.
Actually, it had been a while since I read "Computing Machinery and Intelligence" and he does, in fact, speak directly to these issues (distinguishability of states, support for N distinct states not just 2) in sections 3 and 5 [1]. And in fact he notes the arbitrariness of the "tape" formulation. I think my point remains, though, that "The Turing Machine" itself does NOT stress these points, picking only advantageously simple examples of distinguishable states, even if the paper does.
1 - https://redirect.cs.umbc.edu/courses/471/papers/turing.pdf
You have something, and you have something else. Any more states can be broken down into binaries.
It makes sense after all. If you have anything less than a binary then everything is the same, and the notion of tranformstions or things happening over time make no sense.
It should be no surprise that binary/duality/positive negative/yin yang or whatever you call it is all over physics.