Until now, I have restricted my analysis to devices that operate on strings of symbols. These devices are usually called digital computers (and calculators). There are also so called analog computers, which are no longer in widespread use but retain a theoretical interest. The distinction between analog and digital computers has generated considerable confusion. For example, it is easy to find claims to the effect that analog computers (or even analog systems in general) can be approximated to any desired degree of accuracy by digital computers, countered by arguments to the effect that some analog systems are computationally more powerful than Turing Machines (Siegelmann 1999). There is no room here for a detailed treatment of the digital-analog distinction in general, or even of the distinction between digital and analog computers in particular. For present purposes, it will suffice to briefly draw some of the distinctions that are lumped together under the analog-digital banner, and then analyze analog computers.
A first issue concerns modeling vs. analog computation. Sometimes scale models and other kinds of “analog” models or modeling technologies (e.g., wind tunnels, certain electrical circuits) are called analog computers (e.g., Hughes 1999, p. 138). This use is presumably due to the fact that analog models, just like analog computers properly so called, are used to draw inferences about other systems. The problem with this use of the term “analog computer” is that everything can be said to be analogous to something else in some respect and used to draw inferences about it. This turns everything into an analog computer in this sense, which trivializes the notion of analog computer. But aside from the fact that both analog computers and other analog models are used for modeling purposes, this use of the term “analog computer” has little to do with the standard notion of analog computer; hence, it should be left out of discussions of computing mechanisms.
A second issue concerns whether a system is continuous or discrete. Analog systems are often said to be continuous, whereas digital systems are said to be discrete. When some computationalists claim that connectionist or neural systems are analog, their motivation seems to be that some of the variables representing connectionist systems can take a continuous range of values.22 One problem with grounding the analog-digital distinction in the continuous-discrete distinction is that a system can only be said to be continuous or discrete under a given mathematical description, which applies to the system at a certain level of analysis. Thus, the continuous-discrete dichotomy seems insufficient to distinguish between analog and digital computers other than in a relative manner. The only way to establish whether physical systems are ultimately continuous or discrete depends on fundamental physics. Some speculate that at the most fundamental level, everything will turn out to be discrete (e.g., Wolfram 2002). If this were true, under this usage there would be no analog computers at the fundamental physical level. But the physics and engineering of middle-sized objects are still overwhelmingly done using differential equations, which presuppose that physical systems as well as spacetime are continuous. This means that at the level of middle-sized objects, there should be no digital computers. But the notions of digital and analog computers have a well-established usage in computer science and engineering, which seems independent of the ultimate shape of physical theory. This suggests that the continuous-discrete distinction is not enough to draw the distinction between analog and digital computers.
Previous philosophical treatments of the digital-analog distinction have addressed a generic, intuitive distinction, with special emphasis on modes of representation, and did not take into account the functional properties of different classes of computers.23 Those treatments do not serve our present purposes, for two reasons. First, our current goal is to understand computers qua computers and not qua representational systems. In other words, we should stay neutral on whether computers’ inputs, outputs, or internal states represent, and if they do, on how they do so. Second, we are following the functional account of computing mechanisms, according to which computing mechanisms should be understood in terms of their functional properties.
Analog and digital computers are best distinguished by their functional analysis.24 Like digital computers, analog computers are made of (appropriately connected) input devices, output devices, and processing units (and in some cases, memory units). Like digital computers, analog computers have the function of generating outputs in accordance with a general rule whose application depends on their input. Aside from these broad similarities, however, analog computers are very different from digital ones.
The most fundamental difference is in the inputs and outputs. Whereas the inputs and outputs of digital computers and their components are strings of symbols, the inputs and outputs of analog computers and their components are what mathematicians call real variables (Pour-El 1974). From a functional perspective, real variables are physical magnitudes that (i) vary over time, (ii) (are assumed to) take a continuous range of values within certain bounds, and (iii) (are assumed to) vary continuously over time. Examples of real variables include the rate of rotation of a mechanical shaft and the voltage level in an electric wire.
The operations performed by computers are defined over their inputs and outputs. Whereas digital computers and their components perform operations defined over strings, analog computers and their components perform operations on real variables. Specifically, analog computers and their processing units have the function of transforming an input real variable into an output real variable that stands in a specified functional relation to the input. The discrete nature of strings makes it so that digital computers perform discrete operations on them (that is, they update their states only once every clock cycle), whereas the continuous change of a real variable over time makes it so that analog computers must operate continuously over time. By the same token, the rule that specifies the functional relation between the inputs and outputs of a digital computer is an effective procedure, i.e. a sequence of instructions, defined over strings from an alphabet, which applies uniformly to all relevant strings, whereas the “rule” that represents the functional relation between the inputs and outputs of an analog computer is a system of differential equations.
Due to the nature of their inputs, outputs, and corresponding operations, analog computers are intrinsically less precise than digital computers, for two reasons. First, analog inputs and outputs can be distinguished from one another only up to a bounded degree of precision, which depends on the precision of the preparation and measuring processes, whereas by design, digital inputs and outputs can always be unambiguously distinguished. Second, analog operations are affected by the interference of an indefinite number of physical conditions within the mechanism, which are usually called “noise,” to the effect that their output is usually a worse approximation to the desired output than the input is to the desired input. These effects of noise may accumulate during the computation, making it difficult to maintain a high level of computational precision. Digital operations, by contrast, are unaffected by this kind of noise.
Another limitation of analog computers, which does not affect their digital counterparts, is inherited from the physical limitations of any device. In principle, a real variable can take any real number as a value. In practice, a physical magnitude within a device can only take values within the bound of the physical limitations of the device. Physical components break down or malfunction if some of their relevant physical magnitudes, such as voltage, take values beyond certain bounds. Hence, the values of the inputs and outputs of analog computers and their components must fall within certain bounds, for example 100 volts. Given this limitation, using analog computers requires that the problems being solved be appropriately scaled so that they do not require the real variables being manipulated by the computer to exceed the proper bounds of the computer’s components. This is an important reason why the solutions generated by analog computers need to be checked for possible errors by employing appropriate techniques (which often involve the use of digital computers).
Analog computers are designed and built to solve systems of differential equations. The most effective general analog technique for this purpose involves successive integrations of real variables. Because of this, the crucial components of analog computers are integrators, whose function is to output a real variable that is the integral of their input real variable. The most general kinds of analog computers that have been built—general purpose analog computers—contain a number of integrators combined with at least four other kinds of processing units, which are defined by the operations that they have the function to perform on their input. Constant multipliers have the function of generating an output real variable that is the product of an input real variable times a real constant. Adders have the function of generating an output real variable that is the sum of two input real variables. Variable multipliers have the function of generating an output real variable that is the product of two input real variables. Finally, constant function generators have the function of generating an output whose value is constant. Many analog computers also include special components that generate real variables with special functional properties, such as sine waves. By connecting integrators and other components in appropriate ways, which may include feedback (i.e., recurrent) connections between the components, analog computers can be used to solve certain classes of differential equations.
Pure analog computers are hard programmable, not soft programmable. For programs, on which soft programmability is based, cannot be effectively encoded using the real variables on which analog computers operate. This is because for a program to be effectively encoded, the device that is responding to it must be able to unambiguously distinguish it from other programs. This can be done only if a program is encoded as a string. Effectively encoding programs as values of real variables would require unbounded precision in storing and measuring a real variable, which is beyond the limits of current analog technology.
Analog computers can be divided into special purpose computers, whose function is to solve very limited classes of differential equations, and general purpose computers, whose function is to solve larger classes of differential equations. Insofar as the distinction between special and general purpose analog computers has to do with flexibility in their application, it is analogous to the distinction between special and general purpose digital computers. But there are important disanalogies: these two distinctions rely on different functional properties of the relevant classes of devices, and the notion of general purpose analog computer, unlike its digital counterpart, is not an approximation of Turing’s notion of computational universality (see section 2.3 above). Computational universality is a notion defined in terms of computation over strings, so analog computers—which do not operate on strings—are not devices for which it makes sense to ask whether they are computationally universal. Moreover, computationally universal mechanisms are computing mechanisms that are capable of responding to any program (written in an appropriate language). We have already seen that pure analog computers are not in the business of executing programs; this is another reason why analog computers are not in the business of being computationally universal.
It should also be noted that general purpose analog computers are not maximal kinds of computers in the sense in which standard general purpose digital computers are. At most, a digital computer is capable of computing the class of Turing-computable functions. By contrast, it may be possible to extend the general purpose analog computer by adding components that perform different operations on real variables, and the result may be a more powerful analog computer.25
Since analog computers do not operate on strings, we cannot use Turing’s notion of computable functions over strings to measure the power of analog computers. Instead, we can measure the power of analog computers by employing the notion of functions of a real variable. Refining work by Shannon (1941), Pour-El has precisely identified the class of functions of a real variable that can be generated by general purpose analog computers. They are the differentially algebraic functions, namely, functions that arise as solutions to algebraic differential equations (Pour-El 1974; see also Lipshitz and Rubel 1987, and Rubel and Singer 1985). Algebraic differential equations are equations of the form P(y, y’, y’’, … y(n)) = 0, where P is a polynomial with integer coefficients and y is a function of x. Furthermore, it has been shown that there are algebraic differential equations that are “universal” in the sense that any continuous function of a real variable can be approximated with arbitrary accuracy over the whole positive time axis 0t< by a solution of the equation. Corresponding to such universal equations, there are general purpose analog computers with as little as four integrators whose outputs can in principle approximate any continuous function of a real variable arbitrarily well (see Duffin 1981, Boshernitzan 1986).
We have seen that analog computers cannot do everything that digital computers can; in particular, they cannot operate on strings and cannot execute programs. On the other hand, there is an important sense in which digital computers can do everything that general purpose analog computers can. Rubel has shown that given any system of algebraic differential equations and initial conditions that describe a general purpose analog computer A, it is possible to effectively derive an algorithm that will approximate A’s output to an arbitrary degree of accuracy (Rubel 1989). From this, however, it doesn’t follow that the behavior of every physical system can be approximated to any desired degree of precision by digital computers.
Some limitations of analog computers can be overcome by adding digital components to them and by employing a mixture of analog and digital processes. A detailed treatment of hybrid computing goes beyond the scope of this paper. Suffice it to say that the last generation of analog computers to be widely used were analog-digital hybrids, which contained digital memory units as well as digital processing units capable of being soft programmable (Korn and Korn 1972). In order to build a stored-program or soft programmable analog computer, one needs digital components, and the result is a computer that owes the interesting computational properties that it shares with digital computers (such as being stored-program and soft-programmable) to its digital properties.
Given how little (pure) analog computers have in common with digital computers, and given that analog computers do not even perform computations in the sense of the mathematical theory of computation, one may wonder why both classes of devices are called computers. The answer lies in the history of these devices. As mentioned above, the term “computer” was apparently first used for a machine (as opposed to a computing human) by John Atanasoff in the early 1940s. At that time, what we now call analog computers were called differential analyzers. Digital machines, such as Atanasoff’s ABC, which operated on strings of symbols, were often designed to solve problems similar to those solved by differential analyzers—namely solving systems of differential equations—by the manipulation of strings. Since the new digital machines operated on symbols and could replace computing humans at solving complicated problems, they were dubbed computers. The differential analyzers soon came to be re-named analog computers, perhaps because both classes of machines were initially designed for similar practical purposes, and for a few decades they were in competition with each other. This historical event should not blind us to the fact that analog computers perform operations that are radically different from those of digital computers, and have very different functional properties. Atanasoff himself, for one, was clear about this: his earliest way to distinguish digital computing mechanisms from analog machines like the differential analyzer was to call the former “computing machines proper” (quoted by Burks 2002, p. 101).