Still throws me that “order” here means something like “instruction” as in “that’s an order, lieutenant!” and “code” means something like “set,” as in “legal code” or “code of conduct.”
“Program” however is already used here by Knuth in more of the contemporary sense, though I gather in the time of ENIAC and EDVAC, a “program” was more narrowly the sequence of operations that implemented an order/instruction.
What I love most about all this, though, is how much of the machine you can see in the algorithm and the programming. You can almost visualize the vacuum tubes turning on and off in response to these instructions, which themselves would have been electrical pulses arranged into patterns according to the positions of a bunch of Bakelite switches. Just amazing.
Back in the 90s, I read "Bobby Fischer Teaches Chess," which he didn't write. It was published in the 60s. I can recall finding it strange how the author goes through the effort to explain what a program was within the context of his book, as though it didn't normally mean what I already understood it to mean.
The title states that this is von Neumann’s “first computer program,” but the writing includes plenty of indicators to the contrary and introduces the qualifiers “stored” and “extant.”
Maybe Knuth will issue a reward check to someone who emails him to fix the title?
No he won't. The point of the reward has always been to solicit improvements to the text, point out things he missed -- it does not include conscious/stylistic choices. Please don't waste his time, as (from personal experience) he really does read and respond to error reports :-)
”Punctuation is extremely important to me, but I insist on doing it my own way.” — Knuth
[Edit: BTW, where in the paper are you seeing "plenty of indications to the contrary"? As far as I can tell there is only one earlier program by von Neumann mentioned, an earlier and 80x slower version of this same sorting program, which has not survived.]
There is an email address to send errors and such. A secretary prints them and he marks up the hard copy (if necessary) which is returned with a reward check (when appropriate).
I think the qualifiers are there because the question of who came up with the first "stored program computer" is a matter of some notorious controversy - kind of unrelated to the first computer program. Knuth would have known about this.
"Stored program computer" refers to a computer where the program would be stored within the persistent memory of the computer itself, rather than elsewhere. It seems hard today to imagine such a thing, but think about punch cards or programs you have to enter in via adjusting switches or plugboards. The point of a stored program computer is that program running on the computer could, in theory, change the program itself (yes, "code is data" predates lisp, sorry).
According to Jean Bartik[0], Mauchly and Eckert's EDVAC was already a stored program computer, and thus implying that one of them must have written the first stored program. Jeremy Norman has the actual document where this happens[1], months before Von Neumann's publication. There's some evidence that some of the ideas in Eckert's paper were from an even earlier paper from John Atanasoff, the source of another bitter fight. In any case Bartik has a very poor opinion of Von Neumann, who apparently sat in on EDVAC meetings and wrote notes on the EDVAC without crediting Mauchly and Eckert, then allowed those to be distributed widely in his name, which in turn invalidated Eckert And Mauchly's patent application and thus also their claim to the invention in the public eye.
Another interview with Eckert[2] gets into the details of these allegations: That Von Neumann's motivations were that things should became public domain was because he specifically couldn't sell those ideas at IBM (for whom he was consulting) unless they were patent free.
Both of these are from biased parties of course so take their interpretations with a grain of salt, but that Von Neumann took ideas from EDVAC and summarized them in more formal language and did not credit the others seems pretty much settled fact based on other sources too. Von Neumann was already a well recognized and brilliant researcher in his won right, but reportedly he was also wracked with self doubt, so who knows, perhaps that could have been a motivation too. All of these were very ambitious people.
Curiously that interview also has a reference to another person claiming that a lot of papers attributed solely to Von Neumann were actually coauthored. Really gross stuff, though it's just an offhand comment without substantiation, unlike the other stuff here.
In any case all this reinforces my notion to be more suspicious of modern day "first" inventions attributed to a single person. Similarly to the telephone and lightbulb, there seems to have been a very active community of inventors (all quite important and impressive) who were dancing around related ideas and another might have gotten there eventually if one didn't. There are about 7-8 early computers, some of them within months of each other, that could all be considered early stored program computers. And the parties involved were exchanging ideas with each other too, one way or another. I'm not sure it makes sense to wring hands about which one was truly first.
Sorting has always been a bellwether for computing systems. Interestingly, Jim Gray recognized that 45 years later. He therefore initiated and evangelized the out of core Sort Benchmarks (sortbenchmark.org).
I believe some researchers have come to the conclusion that "the earliest extant program for a stored program digital computer" was not written by John von Neumann, but by his wife: Klára Dán von Neumann.
Knuth references a letter "in the possession of Dr. Herman H. Goldstein," but scholars making the case for Klara are usually referencing the archival materials at the LoC:
I'm doing some research that involves this issue, and I'd be grateful to anyone who has any insight on this. There's a book called Klara and the Bomb, which is quite fascinating (and makes the claim for Klara), but that book leans more toward art than research scholarship.
I am aware that "firsts" are often hard to identify when it comes to the history of science and technology; I'm personally more interested in what these very early programs were being used for than who wrote them, per se. But I'd still like to know if Knuth is actually correct in his assumption.
“[John von Neumann] probably never intended to have this program published and subjected to such scrutiny; although his manuscript is carefully documented, he probably wanted only to circulate it among a few interested colleagues. So when we find a few errors and a few instances of clumsy coding, we should realize that it was an early effort that was not supposed to represent a polished product.”
Merging on a collator is different from merge sort. And yes, the concept of sorting was known before von Neumann. Still, not sure about you but my first computer program was quite a bit more basic, so allow me to remain impressed.
Well, out of all people it was von Neumann, who at six years old could divide eight-digit numbers in his head, and who even his fellow "Martians" [1] speculated might not be merely human.
"I have sometimes wondered whether a brain like von Neumann’s does not indicate a species superior to that of man." – Hans Bethe
"von Neumann would carry on a conversation with my 3-year-old son, and the two of them would talk as equals, and I sometimes wondered if he used the same principle when he talked to the rest of us." – Edward Teller
“There was a seminar for advanced students in Zürich that I was teaching and von Neumann was in the class. I came to a certain theorem, and I said it is not proved and it may be difficult. von Neumann didn’t say anything but after five minutes he raised his hand. When I called on him he went to the blackboard and proceeded to write down the proof. After that I was afraid of von Neumann” – George Pólya
His books are filled with assembly code. He created a machine and an assembly language to be vendor independent for his famous book series The Art Of Computer Programming. I first saw this in 1978 when I took data structures and I remember thinking that was a bit idiosyncratic even then.
Among all the things Professor Knuth is famous for is writing an Algol compiler for the Burroughs 205 in assembly on paper over one summer just after he graduated from college. There's a handwritten listing of it at the computer history museum. It's pretty interesting and shows off how he programmed and thought about programming in 1960-1961. It's probably not terribly different from how other people programmed back then but he was better at it than most.
That was wonderful. That equipment is 2 or 3 generations older than my first experiences, but I remember some of the same fiddly nature when doing bare metal (well cross assembler) programming in the late 1970s on a TI-980B that had a card reader, tape, a small removable disk, and some sort of terminal. Maybe a silent 700? I don't quite remember. It was fun at the time.
Given that von Neumann had his name lent to "von Neumann regular" elements and rings (exercise: what, if any, is the relation to "regular expression"?), I suspect he could've come up with an algorithm notation that was both (a) exceedingly well suited to expressing FSM implementations, yet (b) inscrutable to all of us who grew up with assembly as a lingua franca.
“Program” however is already used here by Knuth in more of the contemporary sense, though I gather in the time of ENIAC and EDVAC, a “program” was more narrowly the sequence of operations that implemented an order/instruction.
What I love most about all this, though, is how much of the machine you can see in the algorithm and the programming. You can almost visualize the vacuum tubes turning on and off in response to these instructions, which themselves would have been electrical pulses arranged into patterns according to the positions of a bunch of Bakelite switches. Just amazing.