After six weeks of training, the six women programmers consigned their boyfriends to memory archives and returned to Penn, where they were given poster-size diagrams and charts describing ENIAC. “Somebody gave us a whole stack of blueprints, and these were the wiring diagrams for all the panels, and they said, ‘Here, figure out how the machine works and then figure out how to program it,’ ” explained McNulty.31 That required analyzing the differential equations and then determining how to patch the cables to connect to the correct electronic circuits. “The biggest advantage of learning the ENIAC from the diagrams was that we began to understand what it could and could not do,” said Jennings. “As a result we could diagnose troubles almost down to the individual vacuum tube.” She and Snyder devised a system to figure out which of the eighteen thousand vacuum tubes had burned out. “Since we knew both the application and the machine, we learned to diagnose troubles as well as, if not better than, the engineers. I tell you, those engineers loved it. They could leave the debugging to us.”32
Snyder described making careful diagrams and charts for each new configuration of cables and switches. “What we were doing then was the beginning of a program,” she said, though they did not yet have that word for it. They wrote out each new sequence on paper to protect themselves. “We all felt that we’d be scalped if we ruined the board,” said Jennings.33
One day Jennings and Snyder were sitting in the second-floor classroom they had commandeered, staring at rolled-out sheets containing the diagrams of ENIAC’s many units, when a man came in to inspect some construction. “Hi, my name is John Mauchly,” he said. “I was just checking to see if the ceiling’s falling in.” Neither woman had met the ENIAC visionary before, but they were not the least bit shy or intimidated. “Boy are we glad to see you,” Jennings declared. “Tell us how this blasted accumulator works.” Mauchly carefully answered the question and then others. When they finished, he told them, “Well, my office is next door. So anytime I’m in my office, you can come in and ask me questions.”
Almost every afternoon, they did. “He was a marvelous teacher,” according to Jennings. He pushed the women to envision the many things ENIAC might someday do, in addition to calculating artillery trajectories. He knew that in order to make it a true general-purpose computer, it would need to inspire programmers who could coax various tasks out of the hardware. “He used to always try to get us to think of other problems,” said Jennings. “He would always want us to invert a matrix or something like that.”34
Around the same time that Hopper was doing so at Harvard, the women of ENIAC were developing the use of subroutines. They were fretting that the logical circuits did not have enough capacity to compute some trajectories. It was McNulty who pushed a solution. “Oh, I know, I know, I know,” she said excitedly one day. “We can use a master programmer to repeat code.” They tried it and it worked. “We began to think about how we could have subroutines, and nested subroutines, and all that stuff,” recalled Jennings. “It was very practical in terms of doing this trajectory problem, because the idea of not having to repeat a whole program, you could just repeat pieces of it and set up the master programmer to do this. Once you’ve learned that, you learn how to design your program in modules. Modularizing and developing subroutines were really crucial in learning how to program.”35
Shortly before she died in 2011, Jean Jennings Bartik reflected proudly on the fact that all the programmers who created the first general-purpose computer were women: “Despite our coming of age in an era when women’s career opportunities were generally quite confined, we helped initiate the era of the computer.” It happened because a lot of women back then had studied math, and their skills were in demand. There was also an irony involved: the boys with their toys thought that assembling the hardware was the most important task, and thus a man’s job. “American science and engineering was even more sexist than it is today,” Jennings said. “If the ENIAC’s administrators had known how crucial programming would be to the functioning of the electronic computer and how complex it would prove to be, they might have been more hesitant to give such an important role to women.”36
STORED PROGRAMS
From the beginning, Mauchly and Eckert understood that there were ways to make ENIAC easier to reprogram. But they didn’t try to do so because building in that capability would have required them to make the hardware more complicated, and it wasn’t necessary for the tasks they originally envisioned. “No attempt has been made to make provision for setting up a problem automatically,” they wrote in their year-end 1943 ENIAC progress report. “This is for the sake of simplicity and because it is anticipated that the ENIAC will be used primarily for problems of a type in which one setup will be used many times before another problem is placed on the machine.”37
But more than a year before ENIAC was finished, indeed as early as the beginning of 1944, Mauchly and Eckert realized that there was a good way to make computers easily reprogrammable: store the programs inside the computer’s memory rather than load them in every time. That, they sensed, would be the next great advance in computer development. This “stored-program” architecture would mean that a computer’s tasks could be changed almost instantly, without manually reconfiguring cables and switches.38
To store a program inside of the machine, they would need to create a large memory capacity. Eckert considered many methods for doing that. “This programming may be of the temporary type set up on alloy discs or of the permanent type on etched discs,” he wrote in a January 1944 memo.39 Because such disks were not yet affordable, he proposed using instead, on the next version of ENIAC, a cheaper storage method, which was called an acoustic delay line. It had been pioneered at Bell Labs by an engineer named William Shockley (about whom there will be a lot more later) and developed at MIT. The acoustic delay line worked by storing data as pulses in a long tube filled with a thick and sluggish liquid, such as mercury. At one end of the tube, an electrical signal carrying a stream of data would be converted by a quartz plug into pulses that would ripple back and forth the length of the tube for a while. The ripples could be refreshed electrically for as long as necessary. When it came time to retrieve the data, the quartz plug would convert it back into an electrical signal. Each tube could handle approximately a thousand bits of data at one-hundredth the cost of using a circuit of vacuum tubes. The next-generation ENIAC successor, Eckert and Mauchly wrote in a memo in the summer of 1944, should have racks of these mercury delay line tubes to store both data and rudimentary programming information in digital form.
JOHN VON NEUMANN
At this point, one of the most interesting characters in the history of computing reenters the tale: John von Neumann, the Hungarian-born mathematician who was a mentor to Turing in Princeton and offered him a job as an assistant. An enthusiastic polymath and urbane intellectual, he made major contributions to statistics, set theory, geometry, quantum mechanics, nuclear weapons design, fluid dynamics, game theory, and computer architecture. He would end up significantly improving upon, getting his name attached to, and reaping most of the credit for the stored-program architecture that Eckert, Mauchly, and their colleagues had begun to consider.40
Von Neumann was born to a prosperous Jewish family in Budapest in 1903, during a glittering period after the Austro-Hungarian Empire abolished the restrictive laws against Jews. Emperor Franz Joseph awarded a hereditary title in 1913 to the banker Max Neumann for “meritorious service in the financial field,” thus allowing the family to be called margittai Neumann or, in German, von Neumann. János (known as Jancsi and later, in America, as John or Johnny) was the eldest of three brothers, who all converted to Catholicism (“for convenience sake,” one admitted) after their father’s death.41
Von Neumann was another innovator who stood at the intersection of the humanities and sciences. “Father was an amateur poet and he believed that poetry could convey not only emotions but also philosophical ideas,” John’s brother Nicholas recalled. “He
regarded poetry as a language within a language, an idea that might be traced to John’s future speculations on the languages of the computer and the brain.” Of his mother he wrote, “She believed that music, art, and related aesthetic pleasures had an important place in our lives, that elegance was a quality to be revered.”42
There is a wealth of stories about young von Neumann’s prodigal genius, some of them probably true. At age six, it was later said, he would joke with his father in classical Greek, and he could divide two eight-digit numbers in his head. As a party trick, he would memorize a page of the phone book and recite back the names and numbers, and he could recall verbatim pages from novels or articles he had read, in any of five languages. “If a mentally superhuman race ever develops,” the hydrogen bomb developer Edward Teller once said, “its members will resemble Johnny von Neumann.”43
In addition to school, he had private tutors in math and languages, and by age fifteen he had completely mastered advanced calculus. When the communist Béla Kun briefly took over Hungary in 1919, von Neumann’s tutelage was moved to Vienna and a resort on the Adriatic, and he developed a lifelong aversion to communism. He studied chemistry at the Swiss Federal Institute of Technology in Zurich (where Einstein had gone) and mathematics at both Berlin and Budapest, earning his doctorate in 1926. In 1930, he went to Princeton University to teach quantum physics, and he stayed on after being appointed (along with Einstein and Gödel) among the founding faculty of the Institute for Advanced Study.44
Von Neumann and Turing, who met in Princeton, would become paired as the grand theorists of the general-purpose computer, but in personality and temperament they were binary opposites. Turing led a spartan existence, lived in boardinghouses and hostels, and generally kept to himself; von Neumann was an elegant bon vivant who hosted sparkling parties with his wife once or twice a week at their huge house in Princeton. Turing was a long-distance runner; there were very few thoughts that could be said never to have crossed von Neumann’s mind, but running long distances (or even short distances) was among them. “In dress and habits he tended to be slovenly,” Turing’s mother once said of her son. Von Neumann, by contrast, wore a three-piece suit at almost all times, including on a donkey ride down the Grand Canyon; even as a student he was so well dressed that, upon first meeting him, the mathematician David Hilbert reportedly had but one question: Who is his tailor?45
Von Neumann loved telling jokes and reciting risqué limericks in various languages at his parties, and he ate so heartily that his wife once said he could count anything except calories. He drove cars with an abandon that was reckless but not always wreckless, and he was fond of flashy new Cadillacs. “He bought a new one at least once a year, whether he had wrecked the previous one or not,” wrote the science historian George Dyson.46
While at the Institute in the late 1930s, von Neumann developed an interest in ways to mathematically model explosive shock waves. This led him to become, in 1943, a member of the Manhattan Project, making frequent trips to the secret facilities in Los Alamos, New Mexico, where atomic weapons were being developed. Because there was not enough uranium-235 to build more than one bomb, the scientists at Los Alamos were also trying to design a device that would use plutonium-239. Von Neumann focused on ways to construct an explosive lens that would compress the plutonium core of the bomb to reach critical mass.III
Assessing this implosion concept required solving a swarm of equations that could calculate the rate of flow of the compression of air or other material that would occur after an explosion. Thus von Neumann embarked on a mission to understand the potential of high-speed computers.
During the summer of 1944, this quest took him to Bell Labs to study the updated versions of George Stibitz’s Complex Number Calculator. The latest one had an innovation that particularly impressed him: the punched tape that fed in the instructions for each task also included the data, all commingled. He also spent time at Harvard trying to determine if Howard Aiken’s Mark I could help with the bomb calculations. Throughout the summer and fall of that year, he shuttled by train between Harvard, Princeton, Bell Labs, and Aberdeen, acting as an idea bee, pollinating and cross-pollinating various teams with the notions that had adhered to his mind as he buzzed around. Just as John Mauchly had traveled around picking up the ideas that led to the first working electronic computer, von Neumann wandered around gathering the elements and concepts that became part of stored-program computer architecture.
At Harvard, Grace Hopper and her programming partner, Richard Bloch, set up a place for von Neumann to work in the conference room right next to the Mark I. Von Neumann and Bloch would write equations on the blackboard and feed them into the machine, and Hopper would read off the intermediate results as they spewed out. When the machine was “making numbers,” Hopper said, von Neumann would often barge in from the conference room and predict what the results would be. “I’ll just never forget that surge out of the backroom, and then surge back again and put them all over the blackboard, and von Neumann predicting what the numbers would turn out to be and, ninety-nine percent of the time, with the greatest of accuracy—fantastic,” Hopper enthused. “He just seemed to know how the computation was going, or to feel how it was going.”47
Von Neumann impressed the Harvard team with how collaborative he was. He absorbed their ideas, took credit for some, but also made it clear that nobody should claim ownership of any concept. When the time came to write a report on what they were doing, von Neumann insisted that Bloch’s name go first. “I really didn’t feel I deserved that; but that’s the way it came out, so I prize that,” Bloch said.48 Aiken was similarly open about sharing ideas. “Don’t worry about people stealing an idea,” he once told a student. “If it’s original, you will have to ram it down their throats.” Yet even he was struck, and a little discomforted, by von Neumann’s cavalier attitude about parsing out who deserved credit for ideas. “He talked about concepts without worrying where they came from,” Aiken said.49
The problem von Neumann faced at Harvard was that the Mark I, with its electromechanical switches, was excruciatingly slow. It would take months to get his atom bomb calculations done. Even though the paper tape input was useful in reprogramming the computer, it was necessary to switch tapes manually every time there was a call for a subroutine. Von Neumann became convinced that the only solution was to build a computer that worked at electronic speeds and could store and modify programs in an internal memory.
Thus he was primed to be part of the next big advance: the development of a stored-memory computer. So it was fortuitous that, in late August 1944, he had an encounter on the platform of the train station of the Aberdeen Proving Ground.
VON NEUMANN AT PENN
Captain Herman Goldstine, the Army liaison who was working with Mauchly and Eckert on the ENIAC, happened to be on the same platform at Aberdeen waiting for the train north. He had never met von Neumann, but he recognized him instantly. Goldstine tended to be star-struck by brilliant minds, so he was excited by what passed for a celebrity sighting in the world of mathematics. “It was therefore with considerable temerity that I approached this world-famous figure, introduced myself, and started talking,” he recalled. “Fortunately for me von Neumann was a warm, friendly person who did his best to make people feel relaxed.” The chat intensified when von Neumann discovered what Goldstine was doing. “When it became clear to von Neumann that I was concerned with the development of an electronic computer capable of 333 multiplications per second, the whole atmosphere of our conversation changed from one of relaxed good humor to one more like the oral examination for the doctor’s degree in mathematics.”50
At Goldstine’s behest, von Neumann visited Penn a few days later to see ENIAC as it was being built. Presper Eckert was curious to meet the famed mathematician, and he had in mind a test to see if he was “really a genius”: if his first question was about the logical structure of the machine. When that indeed was the first question von Neumann asked, he earned Eck
ert’s respect.51
ENIAC could solve in less than an hour a partial differential equation that would take Harvard’s Mark I close to eighty hours. That impressed von Neumann. However, reprogramming ENIAC to do different tasks could take hours, and von Neumann realized how severe a drawback that was when it came to tackling a bunch of dissimilar problems. Mauchly and Eckert had been wrestling throughout 1944 with ways to store programs inside the machine. The arrival of von Neumann, brimming with ideas from Harvard and Bell Labs and elsewhere, kicked into a higher orbit the thinking about stored-program computers.
Von Neumann, who became a consultant to the ENIAC team, pushed the idea that the computer program should be stored in the same memory as its data, so that the program could be easily modified as it was running. His work began the first week of September 1944, when Mauchly and Eckert explained the machine in detail and shared their thoughts about creating, in their next version, “one storage device with addressable locations” that would serve as a memory for both the data and programming instructions. As Goldstine put it in a letter to his Army superior that week, “We propose a centralized programming device in which the program routine is stored in coded form in the same type storage devices suggested above.”52