Contributed Columns
This article tells about Zuse's Z-3 and Z-4 programmable calculators from the 1940's. They used RPN!
Enjoy this glimpse at The Way Things Were... 57 years ago!
-Joe Horn-
http://www.jps.net/joehorn/flashback.htm
1941 RPN Computer?
Paul Ceruzzi (1651)
"PPC Calculator Journal," April 1980
Volume 7, Number 3, Page 25
With the increased use of Hewlett-Packard calculators that use the RPN system of performing arithmetic, there has been a corresponding increase in tracing the history of this notation. John Ball has mentioned several old calculators that used RPN before HP came along (in his book "Algorithms for RPN Calculators"), while John Kennedy gave a short address on the history of the notation itself at the recent Western Calculator Conference.
On the basis of a recent visit to several museums and libraries in Germany, I have found evidence for what I believe was the first true application of RPN for number-manipulation. This implementation also turns out to have been on the first, fully-functional, program-controlled computer in the world -- the Zuse Z-3 computer, built by Konrad Zuse in 1941!
Very little information about Zuse and his work is available to English-speaking readers, but there is a good section about him in Brian Randell's book, "The Origins of Digital Computers -- Selected Papers" (NY, 1975, Chapter 4). In this chapter there are several translations of papers by Zuse and his co-workers concerning early German computer activity.
The Z-3 computer was a relay device which in many ways resembles a modern PPC. It received numbers in decimal form, from a keyboard, and displayed answers in floating-point decimal form by lamps on a display panel. All internal arithmetic was done in pure binary form, with a word length of 22 bits. Decimal accuracy was about 4 places, with a range of D+/-12. One multiplication took about 5 seconds.
Programs were fed into the machine by means of holes punched in ordinary discarded movie film. The interesting aspect of the programming of the Z-3 was that this code was very similar to that of, say, an HP-25. To perform an operation on two numbers, commands would first be given to recall the numbers from appropriate locations in the memory, followed by the command for the operation. Numbers were automatically positioned in registers in the Arithmetic Unit of the machine so that operations like division and subtraction would proceed in the right order. Results were left in a register in the AU so that long sequences of operations could be carried out.
Thus, the Z-3 used a version of RPN that was nearly identical to that used by HP! I have obtained copies of early programs that Zuse had written for the evaluation of a 5 x 5 determinant, and it is possible to run these programs on an HP-41C with almost no modification whatsoever (once the numbers have been placed in the storage registers beforehand).
The AU of the Z-3 contained 3 registers, although Zuse never referred to them as a stack, of course. These registers were labelled "f," "a," and "b." All entrance and exit to and from the AU was through the "f" register. This is sort of like the display register of the 41C, which is distinct from the stack. Arithmetic operations were performed on numbers in the a and b registers, so these may be thought of as corresponding to the x and y registers of HP's. Unlike modern computer practice, the actual numbers themselves were moved around the registers, not just a pointer.
As I mentioned, the Z-3 was completed in 1941, but was destroyed later during the war. Zuse built an expanded version of the same calculator, which he called the Z-4. This machine also had a similar architecture, and was eventually installed at the Federal Polytechnic School in Zurich, where it functioned reliably for many years. Many of the earliest references to RPN in the computer literature came from European researchers, like Rutishauser, whose first exposure to computers was the Z-4. Thus it is entirely plausible that Zuse deserves credit for introducing this process into machine calculation.
Paul Seruzzi (1651)