Текст книги "The Innovators: How a Group of Inventors, Hackers, Geniuses, and Geeks Created the Digital Revolution"
Автор книги: Walter Isaacson
Жанр:
Биографии и мемуары
сообщить о нарушении
Текущая страница: 8 (всего у книги 42 страниц)
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 Eckert’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
Von Neumann’s series of meetings with the ENIAC team, and in particular four formal sessions he held with them in the spring of 1945, took on such significance that minutes were taken under the title “Meetings with von Neumann.” Pacing in front of a blackboard and ringleading the discussion with the engagement of a Socratic moderator, he absorbed ideas, refined them, and then wrote them on the board. “He would stand in front of the room like a professor, consulting with us,” Jean Jennings recalled. “We would state to him a particular problem that we had, and we were always very careful that the questions represented fundamental problems that we were having and not just mechanical problems.”53
Von Neumann was open but intellectually intimidating. When he made pronouncements, it was unusual for anyone to push back. But Jennings sometimes did. One day she disputed one of his points, and the men in the room stared at her incredulously. But von Neumann paused, tilted his head, and then accepted her point. Von Neumann could listen well, and he had also mastered the ingratiating art of feigning humility.54 “He was an amazing combination of a very brilliant man who knows that he’s brilliant, but at the same time is very modest and shy about presenting his ideas to other people,” according to Jennings. “He was very restless and would march back and forth across the room, yet when he presented his ideas it was almost as though he were apologizing for disagreeing with you or thinking of a better idea.”
Von Neumann was especially good at devising the fundamentals of computer programming, which was still an ill-defined craft that had advanced little in the century since Ada Lovelace wrote down the steps for getting the Analytical Engine to generate Bernoulli numbers. Creating an elegant instruction set, he realized, involved both rigorous logic and precise expression. “He was very thorough in explaining why we needed a particular instruction or why we could do without an instruction,” Jennings recounted. “It was the first time that I had ever realized the importance of instruction codes, the logic behind them and the ingredients that a whole instruction set must have.” It was a manifestation of his broader talent, which was to get to the essence of a new idea. “The thing that Von Neumann had, which I’ve noticed that other geniuses have, is the ability to pick out, in a particular problem, the one crucial thing that’s important.”55
Von Neumann realized that they were doing more than merely improving the ENIAC so that it could be reprogrammed more quickly. More significantly, they were fulfilling Ada’s vision by creating a machine that could perform any logical task on any set of symbols. “The stored-program computer, as conceived by Alan Turing and delivered by John von Neumann, broke the distinction between numbers that mean things and numbers that do things,” George Dyson wrote. “Our universe would never be the same.”56
In addition, von Neumann grasped, more readily than his colleagues, an important attribute of commingling data and programming instructions in the same stored memory. The memory could be erasable, what we now call read-write memory. This meant that the stored program instructions could be changed not just at the end of a run but anytime the program was running. The computer could modify its own program based on the results it was getting. To facilitate this, von Neumann came up with a variable-address program language that enabled an easy switch to substitute instructions while the program was running.57
The team at Penn proposed to the Army that a new and improved ENIAC be built along these lines. It would be binary rather than decimal, use mercury delay lines for memory, and include much, though not all, of what became known as “von Neumann architecture.” In the original proposal to the Army, this new machine was called the Electronic Discrete Variable Automatic Calculator. Increasingly, however, the team started referring to it as a computer, because it would do so much more than merely calculate. Not that it mattered. Everyone simply called it EDVAC.
Over the ensuing years, at patent trials and conferences, in books and dueling historical papers, there would be debates over who deserved the most credit for the ideas developed in 1944 and early 1945 that became part of the stored-program computer. The account above, for example, gives primary credit to Eckert and Mauchly for the stored-program concept and to von Neumann for realizing the importance of the computer’s ability to modify its stored program as it ran and for creating a variable-address programming functionality to facilitate this. But more important than parsing provenance of ideas is to appreciate how the innovation at Penn was another example of collaborative creativity. Von Neumann, Eckert, Mauchly, Goldstine, Jennings, and many others batted around ideas collectively and elicited input from engineers, electronics experts, material scientists, and programmers.