Home' Technology Review : January February 2007 Contents 40 FEATURE STORY
TECHNOLOGY REVIEW /
young man with a taste for problem-solving. At 17, Simonyi
landed an internship with a Danish computer company by
showing some of its programmers samples of his hand-
coded Ural programs. The Hungarian authorities expected
Simonyi to retur n; he d already won a coveted university
spot. Instead, with his father s encouragement, he ed to
the United States.
A letter of recommendation from Danish programming
expert Peter Naur helped him win entry to the Univer-
sity of California, Berkeley. He paid the bills with a job at
Berkeley s computer center, where he caught the attention
of a faculty member named Butler Lampson. Lampson was
one of the leaders of the U.S. Defense Advanced Research
Projects Agency s Project Genie---an experiment in time-
sharing computer systems, in which multiple users sitting
at terminals could share a single computer s brain time.
When the Project Genie creators started a company, called
the Berkeley Computer Corporation (BCC), whose purpose
was to build a machine that would commercialize their
work, Lampson recruited Simonyi.
At BCC, Simonyi would debug the company s balky pro-
totype through the night, working with system designer
Chuck Thacker. One night, Simonyi showed up in a see-
through black out t---"a kind of a hippie thing from one of
the shops on Telegraph Avenue," he says. Today, he can t
remember exactly why---coming from a party, perhaps? The
debugging went especially well that night, and the out t
became a good-luck charm---Simonyi s "debugging suit."
BCC went belly-up after only a few years, but Lampson,
Thacker, and much of the BCC team migrated to Xerox
PARC. Simonyi---then just "a random Hungarian under-
graduate without a green card," as he says now---joined them
in 1972, laboring at Xerox while simultaneously pursuing
his Stanford doctorate. Bob Taylor, who oversaw PARC s
Computer Science Lab during part of that legendary era,
says Simonyi s creativity stood out even in the lab s famous
crowd: "He just could imagine ways of expressing code and
ideas that put him o the charts."
It was a heady time. The team of visionary engineers was
creating a series of innovations that would shape the next
quarter-century of the PC era: the graphical user interface,
networking (Ethernet), the laser printer, object-oriented pro-
gramming (Smalltalk), portable computing (the Dynabook),
and more. These breakthroughs all converged on a prototypi-
cal personal computer called the Alto.
The Alto was an amazing invention, but it wasn t clear
what you could do with it until Simonyi and his colleagues
created its best-known application: a word processor called
Bravo, whose on-screen display of type matched what the
system would output to the new laser printer. Existing word
processors had elaborate systems of codes for formatting
text on the screen (anyone who used WordPerfect on a
PC in the 1980s will remember its "embedded codes");
Bravo let you forget about the codes, directly manipulate
the design of a document, and immediately witness the
changes. A visiting Citibank executive looked at a demo
and quoted a signature line of comedian Flip Wilson s sassy
character Geraldine: "What you see is what you get!" The
name (reduced to the acronym Wysiwyg and pronounced
wizzywig) stuck. Suddenly, Bravo had users: relatives and
friends of PARC researchers began asking to use it to print
school newsletters and format academic papers. Lampson s
wife printed her thesis using the system, and when it was
time for Simonyi to print his, he did the same.
Levels of Abstraction
Wysiwyg is an example of a layer of abstraction---a higher-
level tool that allows computer users to ignore some lower-
level complexity. Programmers use abstractions all the time.
The text code written in a programming language is an
abstraction of the machine code that a computer actually
understands. A Web domain name is an abstraction of a
server s numerical Internet Protocol address.
But most of the layers of abstraction in computer sys-
tems are less visible and more arcane than Wysiwyg. Ever
since programmers stopped memorizing the opcodes that
Simonyi used in his youth, they have been layering new
abstractions upon older abstractions. Every generation of
programmers uses its era s programming languages and
tools to build the programs of the next generation. Layers
of abstraction have accumulated like geological strata. Mes-
sages are constantly racing up from the binary bedrock of
your machine and back down again, making it possible for
a mouse-click to accomplish its function. Your mouse-click
triggers some code in the operating system, which sends a
message to the word processing program, which instr ucts
the operating system to save your le to a hard drive. But
that apparently simple process is possible only because of
many, many layers of abstraction.
The history of software is the history of these layers,
each of them lifting programmers farther from the binary,
leaving them better able to coax computers into perform-
ing useful tasks. Steadily, programmers gained more power.
But they were also tackling ever more ambitious problems.
Programs ballooned in size, and programmers started get-
ting lost in tangles of what they called "spaghetti code,"
which proved impossible to unravel and repair. Thus, large
software projects became epics of frustration and delay.
Program managers faced business problems like, How do
you realistically schedule a project? How do you improve
individual productivity? How do you coördinate complex
work across a large team? Each of these questions proved
surprisingly di cult to answer. Continued on page 44
Links Archive November December 2006 March April 2007 Navigation Previous Page Next Page