Following up an interesting exchange, I'd like to ask you:
- how would you define a "machine" broadly speaking?
- is your definition covering a broad spectrum, such as molecular machines, man made machines, computers, etc?
- are you sure that your definition does not lead to defining as "machine" a forest fire or an hurricane?
- which argument would you use to characterize the differences between a molecular machine like kinesin and a mechanical machine like an old watch? Does it work too for a whole cell or the human brain? (at a high level of abstraction, of course)
I have some ideas to share based on universal Turing machines and complexity science, but would like to get more inputs, first.
As usual, I try to bootstrap the discussion by involving a diverse pool of friends and good thinkers: @PessoaBrain @tiago @lmrocha @thilo @kordinglab @NicoleCRust @hirokisayama @WiringtheBrain
@manlius @PessoaBrain @tiago @thilo @kordinglab @NicoleCRust @hirokisayama @WiringtheBrain
Formally, I think of machine as a (cybernetic) mechanism. That is, when before is state-determined, with (relatively small) finite time memory dependency---in other words, behavior depends on a few time steps. Forest fires, hurricanes and the like can be modeled by mechanisms.
In this view, a Turing machine is not a machine, as it has infinite memory and its (complex) behavior depends on an arbitrary code between memory and instructions, with conditional branching and unpredictable changes/mutations to tape. To see this difference it is useful for me to compare Babbage's difference engine (a machine) with Babbage/Lovelace 's analytical engine (a general-purpose computer). As Babbage said, the "snake eating its own tail" is a completely different device :)
@manlius I agree words are difficult here. But a UTM is not just about converting finite states to other finite states. That is the machine (the head) part of the UTM. The magic is the addition of the external tape, which depends on an arbitrary code (agreed upon by users). It can be written onto or mutated independently, thus you cannot predict its future states, unless you'd know the states of everything that can alter it. Tape is also as large as you can make it, or infinite in the formal version.
I agree with Von Neumann, Pattee, Sydney Brenner that this separate tape is what makes living systems a form of general purpose computers (a.k.a. open ended evolution.) The code is pretty much the same for all life as we know it.
Regarding game of life and the like. Per se, it models the mechanistic finite state transitions of matter. One can implement a UTM on it, but that requires establishing an external arbitrary code (consensually agreed by all readers) between finite states of its artificial "matter" (stable dynamical patterns like gliders) and logical truth values (a minimum of true and false and basic logic gates). In other words, specific patterns of the game of life "matter" are used to encode logical expressions---that are modular in the sense that can be arranged as building blocks for infinite logic trees . But this is precisely what we do with physical computers since Babbage&Lovelace: encode modular logic in bistable metal cog wheels, vacuum tubes, or semi-conductors, etc.
The genetic code does not encode mathematical logic, like all our computers do, but rather the "logic" of aminoacid sequences. These are highly modular too and can be used to build molecular switches and much more. But not really (rate-independent) logic, rather rate-dependent biochemistry. Still, the code itself is just an arbitrary (we believe) translation of 64 possible codons to 20 aminoacids, a simple machine. It is the separate, effectively infinite tape that gives life its open-endedness since new machines can always be encoded, varied, and selected.
I suppose all this just to say that Turing machines are not (just) machines but we can make them from machines :) as Von Neumann said, machines that can increase in complexity (which simple machines can't.)