# Analog Computation --- # "Computation by analogy" ### Classical (digital) computers: - Compute by manipulating the symbols of a symbolic representation of the real thing --- ### Analog computers: - Compute in a way that resembles the action of the real process that generates the real thing ### Hybrid: Some of both?
### That's not very precise... - And maybe it doesn't need to be made precise... the idea should be somewhat clear: - There's something interesting about the form and nature of computation beyond symbol manipulation. - A lesson from logic: "logic" did not always mean "formulating propositions that can be manipulated symbolically." How did we end up there? ## An old device...
## A very old device...
- Cells compute. Much of nature, at the very least, processes information in some way. ### "Continuous computation" - Computing using e.g. signals instead of symbols
## Models of continuous computation - Claude Shannon's differential analyzer, whose 'theoretical model' is the general-purpose analog computer (GPAC)
## The basic GPAC modules
Fig.: Bournez, O. and Pouly, A.
On the Functions Generated by the General Purpose Analog Computer
https://arxiv.org/pdf/1602.00546.pdf #### A GPAC that not only computes sin(x), but churns it out continually as a function of time!
Fig: ibid ## THAT (The Analog Thing)
## The GPAC is Turing universal - It can do anything Python, Java, etc. can do. - It is equivalent to chemistry: - Programs for the GPAC can be written as "massively parallel" programs for nanotechnological environments. - What do we mean by that? # Chemical computation ## Chemical Reaction Networks
## Chemical Reaction Networks - We can imagine many reactions `competing' or 'going off simultaneously' in an environment. - Can we get them to do anything useful? - Yes, because we know that CRNs are equivalent in computational power to GPACs, which are equivalent in power to Turing Machines, Python, Java, etc. ## Where does that leave us? - That leaves us with a programming language that seems to be useful for nanotech, and can do anything our digital computers can do. - But can we actually implement it on "chemical hardware"? # DNA Strand Displacement ### DNA Strand Displacement
### DNA Strand Displacement Cascades - It turns out any CRN can be converted to a CRN whose molecules are "custom" DNA strands. - They react on the principle of
toehold mediated strand displacement
in the video above. - Thus, any CRN you program can be run on molecular hardware. - A lot of other exciting nanotech stuff can be realized using DNA ### DNA Nanotech - DNA Origami - DSD Cascades - Molecular robotics - DNA and other molecular information storage - There is a whole entire conference about DNA nanotechnologies: https://www.dna30.org/ # Why Bother? ### If Python can do it already... - Why mess with this stuff at all? - Well... why have more than one 'classical' programming language either? - Different approaches solve different problems better, different perspectives help us see more clearly. - Longstanding open theoretical questions (e.g. P vs NP) unsolved in old models. - Endless list of creative and important applications: medicine, mass parallel computing, self-assembly ### Paul Feyerabend,
Against Method
(1975) "The only [methodological] principle that does not inhibit [scientific progress] is
anything goes
. For example, we may use hypotheses that contradict well-confirmed theories [...] The consistency condition which demands that new hypotheses agree with accepted theories is unreasonable because it preserves the older theory, and not the better theory. Hypotheses contradicting well-confirmed theories gives us evidence that cannot be obtained in any other way. "