3 ms·
AIUI, the Z3 has no conditional branches. Without those, it's not much like a computer as we understand it. Rather, i think the Z3 is an "automatic calculator"
by twic 6y ago
AIUI, the Z3 has no conditional branches. Without those, it's not much like a computer as we understand it. Rather, i think the Z3 is an "automatic calculator" - it can carry out a fixed sequence of operations, but it can't do arbitrary computation. In that respect, it is like the Atanasoff–Berry computer and the Harvard Mark I.
The prehistory of computing has a bunch of really interesting machines like this (and Colossus, and early ENIAC really) which are technical marvels, but miss at least one of the key things which make a computer really a computer.
People often focus on the electrical vs mechanical distinction, but that's a red herring. If you made a 386 out of Lego, it would still be a computer. Similarly, binary vs decimal is irrelevant.
To me, there are three key characteristics:
1. There is a program comprising a sequence of symbols which are interpreted by the machine (so not Colossus or early ENIAC, which were controlled by plugboards)
2. There are symbols for conditional branches, or some equivalent construct, and the language is Turing-complete, or some practical projection of it (so not the Z3, ABC, or ASCC)
3. The program is stored in a memory which can be modified by the program
Once you have those things, you can do anything. The first two points are the most important, but i think the third is also really significant: it is what allows things like operating systems and linkers to arise. If the first two are the definition of life, the third is the definition of multicellular life.
- ncmncm 6y ago3 is not necessary. OSes and linkers are not necessary. We did without for many years. The program should be in some kind of more-or-less addressable memory, to support conditional branching. That's all.
- retrac 6y agoIt's not necessary in a strict theoretical sense to be Turing complete, yes. But in practice? Most of the magic of modern computing is in programs which can themselves manipulate, translate, and even write new programs. Nearly all we've built up depends on that. You can only get so far in practice by flipping switches to encode binary numbers.
- twic 6y agoNo you didn't. You can't even write a bootloader without 3. All practical computers have always had 3.
- ncmncm 6y agoYou reveal that you have never programmed a microcontroller. Most do not have an OS, and cannot run the compiler used to program them. Yet, they are practical: the world would grind to a stop if they vanished. Most today are far more powerful than any among the whole first decade of practical computers. Those ran compilers in as little as 4k words of memory. The output of the compiler was not written to memory; it was punched directly to tape or cards. (On some, it physically could not be written to program memory, even if there were room: no bus connected to there.) The tape was later read into program memory--often onto a spinning magnetic drum--and executed directly, no OS in sight. If you imagine these were not practical computers, consider that people paid $millions for them; they earned their keep. Have you ever operated a computer doing work worth that much?
- kleiba 6y agoit can carry out a fixed sequence of operations, but it can't do arbitrary computation This is incorrect. The Z3 is Turing-complete, as has been shown by Raúl Rojas in 1998 [1]. It requires some hacking though. [1] https://ieeexplore.ieee.org/document/707574 https://ieeexplore.ieee.org/document/707574
- twic 6y agoThat is a cool paper (and there is an unpaywalled PDF [1]), but what that it shows is not that the Z3 is Turing complete, but that a larger machine comprising a Z3 and a piece of sticky tape is Turing complete. The Z3 as built and used was not Turing complete. Moreover, the technique in the paper is purely a stunt. You couldn't do practical branching computation that way. It is definitely cool, but it doesn't change the fact that the Z3 was a calculator, not a computer. [1] http://www.inf.fu-berlin.de/inst/ag-ki/rojas_home/documents/1997/Universal_Computer.pdf http://www.inf.fu-berlin.de/inst/ag-ki/rojas_home/documents/...
- jandrese 6y agoDoesn't "Turing Complete" require 1 and 3 already?