I attended a conference once where the invited speaker, Raul Rojas, showed that the Z3 was a universal computer, which wasn't previously believed to be the case. The basic idea of the proof was to show that you could have a single while-loop on the Z3 containing a big case-statement in the body of the loop which basically simulates a (finite) Turing machine.
The interesting part of this talk however was this: the Z3 did support neither loops nor conditional branches per se! Instead, it could just compute a series of mathematical operations encoded on a punched tape.
To simulate the case statement without the conditional branching, the trick you do is you execute every branch of the case-statement each time, but you only allow one of the branches to write the results of its computation back to the machine's memory.
But how do you get a while-loop? Well, you just glue the ends of the punch tape together! ;-)
But was it used as a general purpose machine? I think there's a difference between something that was designed and used for general purpose computation and something that was only demonstrated to be able to do general purpose computation after decades of hindsight.
Here's the Ferranti Mk 1 (the successor to the Manchester Mk 1, which was in turn the successor to the SSEM) which was the first commercially available computer playing a medley of songs: http://www.digital60.org/media/mark_one_digital_music/
"The Z1 was a mechanical computer designed by Konrad Zuse from 1935 to 1936 and built by him from 1936 to 1938."
and
"The Atanasoff–Berry Computer (ABC) was...conceived in 1937, the machine was not programmable, being designed only to solve systems of linear equations. It was successfully tested in 1942."
MIT press has an excellent book, "The First Computers- History and Architectures"[1] that discusses a number of potential "firsts" based on varying criteria- well worth a read, if you're into this sort of thing. I'd agree that the Z1 was the first complete, working machine that I consider a computer.
For the other side of this, read "ENIAC: The Triumphs & Tragedies of the World's First Computer" by Scott McCartney. The work Eckert and Mauchly put in to get the first electronic, general purpose computer in a state that it was useful to others should be interesting to anyone who reads HN. It's both a story of hackers and entrepreneurs.
I take issue with this characterization: "Mauchly was not a better scientist than Atanasoff, but he was a more ambitious entrepreneur."
Mauchly did something Atanasoff did not: he made something useful. So useful, in fact, every digital computer you see in front of you is a direct descendant of Mauchly's labor, not Atanasoff. Eckert and Mauchly drew inspiration and ideas from many places, but I think people here should be able to sympathize with the fact that these two were the leaders behind the project that made those ideas a useful technology that changed the world. While those ideas existed before Eckert and Mauchly did their work, they're the ones who put in the grunt work to fully realize them - and contribute their own innovations along the way.
I actually find the portrayal of Eckert and Mauchly in the whole piece real disheartening.
>> So useful, in fact, every digital computer you see in front of you is a direct descendant of Mauchly's labor, not Atanasoff.
This doesn't make any sense. Atanasoff had some pretty genius ideas and together with Berry built the first electronic digital computer. Mauchly visited their lab, got a ton of information on ABC and later built another electronic digital computer - ENIAC, which was generally ABC 2.0.
ABC was not a general purpose computer - it was not Turing Complete. It was not in continuous development by the time Mauchly saw it - that was the end of the line for the ABC. Eckert and Mauchly, on the other hand, developed a general purpose electronic computer with the explicit goal of getting it out to as wide an audience as possible.
Do you have a mathematical prove that ABC is not Turing Complete? I suspect that if one is sufficiently smart, he can implement a Turing machine on top of any 1930s, 1940s computer.
BTW I don't think 'General purpose computer' is used widely as equivalent of a 'Turing complete computer'.
From https://secure.wikimedia.org/wikipedia/en/wiki/John_Vincent_... : "In June 1941 Mauchly visited Atanasoff in Ames, Iowa for four days, staying as his houseguest. Atanasoff and Mauchly discussed the prototype ABC, examined it, and reviewed Atanasoff's design manuscript. Up to this time Mauchly had not proposed a digital computer. In September 1942 Atanasoff left Iowa State for a wartime assignment as Chief of the Acoustic Division with the Naval Ordnance Laboratory (NOL) in Washington, D.C. ... Mauchly visited Atanasoff multiple times in Washington during 1943 and discussed computing theories, but did not mention that he was working on a computer project himself until early 1944.
By 1945 the U.S. Navy had decided to build a large scale computer, on the advice of John von Neumann. Atanasoff was put in charge of the project"
Sounds to me like Mauchly just tried to steal Atananasoff ideas (with some success).
Please simply compare the features of the ENIAC with the ABC, and tell me where the similarity lies: ABC operated in binary, while ENIAC was decimal. ABC used vacuum tubes as flip-flops, making it essentially an electro-mechanical machine operating at one operation per second. ENIAC used vacuum tubes as electronic counters, making it operable at electronic speeds, i.e., 5,000 operations per second. ABC was designed to process one type of problem (differential equations), while ENIAC was indeed general purpose, and could be programmed to handle any problem, including the insanely complicated mathematics of the hydrogen bomb.
If you want to fault Mauchly for talking with other scientists while planning his own computer, then please also include all the other scientists with whom he shared ideas. Also note that the two met when Atanasoff attended a lecture Mauchly was giving ... on the use of electronics in computation. Does this sound like Mauchly got all his ideas from Atanasoff? Also, BTW, Mauchly kept "visiting" JVA's lab at NOL because HE WAS HIRED BY THE NOL TO CONSULT ON THE PROJECT because it was making very little progress under Atanasoff's direction. Look it up.
The ABC not being general purpose (a term I use because it was used often in the book I referenced) is common knowledge. From it's Wikipedia page: "Conceived in 1937, the machine was not programmable, being designed only to solve systems of linear equations." http://en.wikipedia.org/wiki/Atanasoff%E2%80%93Berry_Compute...
I suggest you read the book I referenced - the relationship with von Neumann was not straight forward, either. Mauchly clearly did get ideas from Atansoff - but the ENIAC was not just a straight copy of ABC. Eckertt and Mauchly innovated as well - as much as we expect anyone to when we say they "invented" something.
Yes, it's very much a matter of perspective, which is why I find it so fascinating. Babbage is clearly a candidate, as is Konrad Zuse [1], who built the first functional Turing-complete machine, and designed the first Turing-complete programming language [2] (it didn't have recursion, but neither had FORTRAN, before the mid-70s). Bottom line (for me): computers are the result of international and cross-generational cooperation and knowledge exchange; that's were progress seems to come from.
see http://en.wikipedia.org/wiki/Computer