§1 Turing machine and Church-Turing Thesis
In 1936, Turing published his concept of the Turing Machine and proposed the Turing Thesis, which was later combined with the earlier Church Thesis to become the Church-Turing Thesis. Their discussions used rigorous and profound formal logic extensively, which is very theoretical; whereas most people are obviously not familiar with formal logic, that gives the Church-Turing Thesis a cloth of mystery. Many people find it too difficult to understand and get deterred by it. However, the basic principles they discussed are actually not complex and could be expressed in much simpler terms that everyone could understand (though not as rigorously). Nevertheless, actually they had no choice, and they had to talk in that way, as the audience they were facing is logicians and scholars, the foundation of logic is precise and rigorous, every step in the reasoning must be logically solid, and it is inevitable many peculiar symbols are to be used, which is exactly what makes logic unassailable and robust. However, unfortunately, this also deters many people from reading and understanding, which is regrettable but unavoidable.
At that time, large and complex calculation projects, say the compiling of a common logarithm table, would require a considerable amount of manpower to get involved. These computing workers, the computors (not computers), would perform calculations under the guidance and instructions of the chief mathematicians, using hand-cranked calculators which had been available since 1878. However, hand-cranked calculators could only perform addition, subtraction, multiplication, and division; while the computations the computing workers were asked to do were far more complicated. Taking the compilation of the common logarithm table as an example, it required the participation of many workers. These workers were well-educated but were not necessarily mathematicians. If they were each, for example, assigned a task to compute from log(1.0) to log(1.999), from log(2.0) to log(2.999), and so forth, with a step length of 0.001, they simply don’t know how to compute. Anyway, who knows how to compute for example log(1.21)? However, if they were given with the Taylor series expansion of the logarithm function, which breaks down the computation into addition, subtraction, multiplication, and division, so that they could compute step by step with the basic arithmetic calculations; and if an instruction on how many terms to take in the series is given, so that a certain precision can be achieved, then they could be happy and perform the calculations easily.
This brings up the question of what kind of functions are computable. In common sense, if you want me to do something, you have to tell me how to do it, if I didn’t know it beforehand. So, the chief mathematician must provide a concrete method of computation along with a task assignment, and every step in this method must be known to the workers, and the method must terminate in a finite number of steps. Otherwise the assignment is simply not computable. To fulfil this requirement, Church's solution is to provide the worker with an algorithm written in a certain kind of expressions which he called a λ-function, or λ-calculus. A valid λ-function is an expression indicating how the function (the mapping) can be implemented step by step, all in known methods, such as arithmetic calculations; instead of how the function is mathematically defined. The word algorithm means a method of computation, whereas the word computation means the step-by-step execution of an algorithm. So, a valid λ-function represents the algorithm of a certain function, such as the Taylor series expansion of the logarithm function, instead of the mathematical definition of that function, like log(x).
However, not all functions have known algorithms, and thus not all functions can be expressed as valid λ-functions; computations that cannot be expressed in valid λ-functions cannot be computed in practice. For example, the original function definition log(x) cannot be used as a valid λ-function, because we don’t know how to compute, which should be: find a value e, so that 10e equals x. But if we know log(x) can be expanded into a Taylor series, then the Taylor series can be written as a valid λ-function of log(x), with a given length; since every term in a Taylor series can be calculated with arithmetic operations, by the hand-cranked calculators. However, if the λ-function representing its algorithm has been explicitly given in advance, and it is well known by the workers, then the function log(x) can be directly written as a λ-function, since the workers all know that means using the given algorithm, just like what we now called it a subroutine call.
However, there are some special problems which are intrinsically not computable, or “undecidable”, that means no algorithm will work for these problems. So, there comes an issue of what kind of problems are “computable”, for which an effective algorithm it possible to be found, earlier or later, for which Church asserts that every “recursive function” can be expressed as a valid λ-function, and thus is computable, but this is a profound issue, and we do not need to dive so deep. But note that even if we cannot prove a certain problem is intrinsically not computable, it is practically incomputable before an effective algorithm is found. On the other hand, in the related literatures, the discussion of computability was usually focused on the intrinsically incomputable problems, which makes the discussion very deep and obscure, but what the readers need to know is actually the issue of practically computable.
Nevertheless, we will see later that, for those problems we don’t have valid algorithms yet, it is also possible to define end-to-end mappings by providing key-value pairs, akin to using lookup tables to obtain function values without specific calculations; in this case, the table lookup operation is also a computation in a broader sense. But which actually relies on the computational results of others; for example, you can refer to a logarithm table, but someone had to compute the input-output mappings for this logarithm table, so this does not solve the problem of computability.
Therefore, Church addressed the issue of how to enable the human workers to carry out computations. While it seems not a big deal, his idea of expressing computable functions using λ calculus as the algorithms, is of significant importance. In fact, the so-called dynamically defined functions we use in today’s programming are essentially λ functions.
This is the essence of the Church Thesis. It is termed thesis rather than theorem because it is not a mathematical concept, instead it is a concept for practice, for execution, for implementation. The computation did by the workers is the concrete performing of algorithms, which is essentially the application of λ functions.
Turing, on the other hand, took a significant step forward; he didn’t pay attention to having humans execute algorithms; instead he considered how to make machines automatically perform computations based on given algorithms. The machine model he envisioned later became known as Turing Machine. In Turing's initial imagination, as long as an effective algorithm is given, a machine can always be constructed for that algorithm, it can (and can only) execute the given algorithm. Later, he further developed the idea of the Universal Turing Machine; the machine is universal, by providing it with an algorithm represented with symbols on a paper tape, it can execute the given algorithm, which is quite similar to modern general-purpose computers. Based on the Turing machine, Turing proposed his Turing Thesis, which can be summarized in the following points:
Only an effective algorithm can be implemented with a Turing machine, which means every step must be clearly defined and can be effectively performed, and the process will halt after a finite number of steps (for example, take finite terms in a Taylor series). Clearly, the effective algorithm he mentioned is the same as Church’s valid λ function.
As long as there is an effective algorithm, there is always a Turing machine that can be built which can implement the algorithm.
Without an algorithm, or if the execution of the algorithm does not terminate, the problem is not Turing machine computable, or not Turing computable.
In fact, even before Turing machine was proposed, there was already a machine that was capable of doing computations; that was Babbage's “Difference Engine” (which didn’t really get built), for which Ada (the daughter of poet Byron) even wrote programs to be executed on that machine. However, Babbage's machine was only for numeric computations, whereas Turing machines were not limited to numeric, but also for logical and symbolic computations. Actually, Turing machines were based on symbol processing, numerical computations were implemented through symbol processing, just like in modern digital computers. So, Babbage's machine was merely an arithmetic machine, while Turing machines were logical machines, and this distinction is significant and critical.
Apparently, the essence of the Church thesis and Turing thesis are the same, and thus people combined them to be the Church-Turing thesis. Although their logical arguments are obscure and difficult to understand, it essentially comes down to the same idea, namely: computation is possible only if an effective algorithm is given. Therefore, they are logically equivalent, but the Church thesis pertains to humans, while the Turing thesis raises the issue of replacing humans with machines for computation, which carries greater significance.
Despite the profundity and obscurity of their arguments and narratives, their core idea is simple: a computation is merely the execution of an algorithm. There are some problems which are inherently incomputable, or “undecidable”; for which Wikipedia listed over forty such problems in its webpage “List of undecidable problems”. These problems are definitely not computable on machines, and they are unsolvable in a human’s brain either. However, even for a problem which is not inherently incomputable, it is still practically incomputable on any machine if no algorithm is given, it is still not Turing computable.
On the other hand, since any effective algorithm can be implemented by a Turing machine, if other machines can also implement this algorithm, then they are logically and functionally equivalent to the Turing machine, even though their performance may be significantly better. In contrast, if no algorithm is given, then no machine can carry out any computation, so it’s again equivalent to the Turing machine. In other words, there is no computation that a Turing machine cannot perform but another machine can. Therefore, in this sense, it can be said that any machine capable of computation is equivalent to a Turing machine.
With the existence of Turing machines, people naturally begin to ask the question: if machines can compute like humans, then can machines think like humans? The Turing thesis has actually answered this question: if the process of thinking, or the activity in human’s brain, can be specified with an algorithm, then yes; otherwise, if there is no algorithm, then no.
Unfortunately, some intelligent activities in human’s brain do not have an algorithm yet so far, not even a guessed algorithm; and thus those activities cannot be imitated on machines. For example, dreaming, can you determine the exact steps to take, so that under a certain set of external conditions, you will certainly have a specific type of dream? It seems human’s dreaming is probably not a computation. The Indian mathematical prodigy Ramanujan said some of his peculiar mathematical expressions came to him in dreams; can others see these expressions in their dreams as well? Another example, Archimedes, while lying in a bathtub, suddenly discovered the principle of buoyant force. Who can describe what the algorithm, or the process, was in Archimedes' brain at that moment? Therefore, some people say that “greatness cannot be planned”, because no one can provide an algorithm that enables a person to achieve greatness. So, it is evident that making machines identical to humans in terms of intelligence, so that a machine can do everything the human brain can, namely achieving AGI, is unrealistic. Of course, some things that cannot be done now do not prevent them from happening in the future, and some algorithms that do not exist now might be invented in the years to come, but that would be a long historical process and not something that can be achieved in the short term. For this reason, it is necessary for us to explore how the activities in the human brain are carried out.