Charles Babbage (1782-1871) proposed two machines, the Difference machine (1823) and the Analytical Machine (1834). These machines never were finished. This was not because of design errors, it was the problem of precision mechanics. Both machines were based on a decimal number system of 27 digits. Babbage formulated the first ideas of programming.
The machine ABC, finished in 1942, was a special purpose computer not freely programmable, which can be seen as the prototype of a parallel computer.
The MARK I of Aiken, finished in 1944, was freely programmable, but it did not contain the concept of the separation of control unit, memory, arithmetic unit and input and out devices. It also did not use floating point arithmetic.
The ENIAC, finished around 1945/46 by Eckert and Mauchly, consisting of ca. 18000 tubes was not freely programmable and worked with a decimal arithmetic unit.
From 1943-1945 the COLOSSUS computers were built in order to analyze the German code. They were not freely programable and developed for special tasks.
In 1946 John von Neumann postulated the architecture of a modern computer. He required, among others, a control unit, a memory (addressable), an arithmetic unit (Floating point was discussed) and input- and output devices. However, only a few people now, that this architecture already was postulated in 1936 by Konrad Zuse and implemented by Konrad Zuse in 1938.
The elgance of the architecture of the machines of Konrad Zuse are highly appreciated by scientists. Konard Zuse was a master in leaving out surplus equipment (minimal principle). The architecture of Konrad Zuse's machines is very similar to modern computers (technical realization not considered).