Below are the first 10 and last 10 pages of uncorrected machine-read text (when available) of this chapter, followed by the top 30 algorithmically extracted key phrases from the chapter as a whole.
Intended to provide our own search engines and external engines with highly rich, chapter-representative searchable text on the opening pages of each chapter.
Because it is UNCORRECTED material, please consider the following text as a useful but insufficient proxy for the authoritative book pages.
Do not use for reproduction, copying, pasting, or reading; exclusively for search engines.
OCR for page 27
Software and Ur~ortlodox Architectures:
Where Are We Headed?
MICHAEL L. DERTOUZOS
SOFTWARE
Can you construct a 10-mile-long wooden bridge? The answer is not
very relevant. What is relevant is that if this question is posed to 100
civil engineers, they will answer either yes or no fairly consistently.
Now for a question at the cutting edge of computer science research:
Can you mimic an airline office by a computer program so that when
someone types in a query that would normally be placed by telephone
"Do they serve meals on the flight from here to Atlanta?" or "What
time does the flight leave?"—the automated system responds on that
person's terminal with the kind of answer that would be given over the
telephone? Can you construct a system that will answer 80 percent of
these questions correctly? I have asked this question of many people
working on the leading edge of computer science research, and their
typical answer is "Give us $2 million and about two years." While I
have not carried the experiment further? I know that if I were to pursue
it, in two years the answer would be either "Here it is, and it's answering
correctly 75 percent of the queries" or "Give us another $2 million and
another two years." The point here is that with the exception of com-
puter science theory and compiler design, there is very little science in
this field, which in my opinion is still largely experimental in nature.
The cutting edge of computer science is very much like alchemy in the
old days mix two liquids and if there is an explosion take notes. Leav-
ing some room for poetic license, that is the approximate situation with
27
OCR for page 28
28
COMPUTERS OF THE FUTURE
most of our advanced programs and with many of our avant-garde hard-
ware architectures, as will be seen.
As a result of this absence of "laws" in the world of software, the
programmer is the lawmaker. That, in a nutshell, is the power and
attraction of programming: to set good laws and to build complex struc-
tures based on these laws. For this reason programmers are extremely
reluctant to "buy" each other's laws; each one wants to be the lawmaker.
That is also why young people become millionaires by starting pro-
gramming companies their fresh minds are not burdened by the excess
baggage of experience, and they can accordingly thrive in creating and
adhering to new laws.
What can educators really teach to a young aspiring programmer?
Unfortunately, very little. Educators can issue generalities and plati-
tudes, such as, "Design your programs in nice modules, isolate them,
make each module neat and tidy and describe its inputs and outputs."
This is an exaggeration, of course, but there is very little about pro-
gramming that can be taught explicitly. Educators do ask young pro-
grammers to read other people's programs and to apprentice by watching
experienced programmers at work. The effectiveness of these ap-
proaches again suggests that the similarity to alchemy or even to sculp-
ture may not be too farfetched.
Traditional software generation cannot be substantially improved with
the techniques that are in hand today or that have been developed over
the last 20 years. While the hardware cost/performance improves at the
rate of roughly one decade per decade, the corresponding software-
improvement is by comparison insignificant: During the last 10 years
software productivity measured as lines of program produced per pro-
grammer per year has increased by about 50 percent.
Are there any prospects for improving software productivity? I will
discuss a few. Structured programming is a technique that is most ef-
fective if one deals with very small programs, often three or four lines
long. I am reminded of the pioneer of structured programming, the
famous Professor Dijkstra, who spent an hour explaining to a large
audience at MIT how a three-line program could be verified. One of
our students asked: "But how would you apply this to a chess-playing
program?" And Dijkstra, in his inimitable style, said: "One should never
write such complicated programs." More seriously, I believe that struc-
tured programming has been helpful, but we seem to have exhausted
its benefits.
Automatic programming was a technique attempted, without much
success, during the last 15 years. The intent was to describe something
like an inventory control process at a very high level and then to use a
OCR for page 29
SOFTWARE AND UNORTHODOX ARCHITECTURES
29
gigantic compiler to generate the high-level programs (e.g., in COBOL)
that one would normally write for inventory control. This approach did
not work well for reasons of complexity and variance among different
users' needs.
Functional programming is a recent approach that tries to build pro-
grams in the form of mathematical functions that have inputs and outputs
and, significantly, no side effects. Different functional programs can be
combined in the same way that complex mathematical functions can be
composed out of simpler ones. It is too early to predict how well this
approach will work, and it is difficult at this time to bend into the
functional mold traditional programs used, for example, in data base
management, where side effects are the governing mechanisms.
There is currently great hope that expert systems will be useful in
programming; this would mean that an "expert assistant"—a pro-
gram- would help us program more effectively. Unfortunately it is too
early for a meaningful assessment of this prospect.
My own overall assessment about the future success of programming
productivity improvements is rather bleak. But let me ask a provocative
question: Why do we need programming?
To go back 20 to 25 years—in the days of batch computing people
programmed because there was a very expensive resource called the
computer that cost several million dollars to acquire. They waited in
line for hours if not days to get their cards processed into results, only
to modify their programs against that "last bug" so that they could stand
again in the waiting line.
Later, in the late 1960s, time-sharing came along. At the beginning
at least, the reasons for developing and using time-shared systems were
the same. The same very expensive resource could now be shared by
many people in round-robin fashion so that each user did not, it was
hoped, notice the delay. Soon thereafter, time-sharing pioneers changed
their position and said that cost-sharing was no longer a valid reason
for these systems. Instead, attention was focused on the utility aspects
and the services offered by those systems. And that, indeed, turned out
to be one of the great truths about the ultimate usefulness of time-shared
systems.
Now, with computer costs dropping dramatically, the personal ma-
chine that I have next to my desk costs $5,000 and does more than the
$2.5-million time-shared machine that we had in our lab 20 years ago.
To the extent that this is now the case, why is programming needed
anymore? Certainly not for cost-sharing. It is needed for application
flexibility, i.e., to carry out different applications on the same piece of
equipment.
OCR for page 30
30
COMPUTERS OF THE FUTURE
Let me now ask a second provocative question. We have said that
while the hardware is improving at the rate of 30 percent per year,
software productivity is essentially standing still—hence we are con-
fronted with a "great software problem." The question is simply this:
Is there really a software problem? In my opinion the answer is no for
this reason: Because software involves paper and pencil and not the
traditionally difficult tasks of putting hardware together into complex
physical systems, there is a tendency to assume that software ought to
be easier. This is even reflected in the legal differentiation made between
software and hardware: one is patentable while the other is "copyright-
able."
Compare, however, the design of the airline office program mentioned
earlier with the design of a complex physical system like a jumbo jet
and not the routine twentieth design of a jumbo jet, but the original
design of such an airplane. This comparison deals with two objects of
roughly the same complexity in terms of the elements that they contain.
And while people might laugh about the airline office program taking
several years to design, they would readily agree that such a long design
time would be reasonable and proper in the case of the jet plane.
In my experience there is neither precedent nor prospect for achieving
dramatic economies in the design of complex systems, especially in the
case of first designs, which are typical of novel software systems. In
these cases creativity plays an important role since one is trying to break
new ground. There is no reason to believe that in the field of program-
ming this endeavor ought to be easier than in any other discipline that
depends heavily on creative design.
Let me close this section on software prospects with some good news.
There is ample precedent for economizing through the mass production
process, e.g., by spreading the very expensive cost of designing a com-
plex product to the people who buy it.
Accordingly, I would suggest that one of the biggest forces before
future software developments is the transition of the software devel-
opment process from the artisan to the mass production era. In partic-
ular, two significant categories of products can be expected to emerge
in the next decade.
The first category can be called hidden computers, because it deals
with "appliances" performing a useful function. These products will not
be thought of as computers any more than cars are thought of as col-
lections of carburetors and other components, or refrigerators'as electric
motors. Each hidden computer is especially programmed for one ap-
plication, not changing its program, and providing immediate utility to
its user. Examples include the drugstore machine, the personal memo
OCR for page 31
SOF7~VLARE AND UNORTHODOX ARCHITECTURES
31
pad, the automobile safety package, the automobile convenience pack-
age, the fuel control package, the automobile maintenance package,
and so on.
The second emerging category of software products is mass-manu-
factured applications in the form of diskettes, which in time will become
more powerful and more useful. In both categories the large costs in-
curred in the design and production of these items become very small
when spread to hundreds of thousands or even millions of users.
Finally, I do expect that more intelligent programs will make life easier
for all of us. When I am told that a certain program or machine has a
friendly user interface I get a bit worried, because I find that I need 40
or 50 hours to become truly acquainted with a new machine, and I am
a computer professional. Such a relationship may be friendly compared
with a life-threatening situation, but it is not a relationship we should
have with something next to our desk. I believe that the only way to
achieve true friendliness with computers is by increasing the intelligence
of the programs that they contain. Only then will machines begin to
understand what we are trying to do in the same sense that friends
understand what we mean when we communicate with them.
FORTHCOMING SYSTEM ARCHITECTURES
The dominant theme in forthcoming machine architectures will be the
myria-processor system. In Greek, myria means 10,000. That number
may be close to what will be used in practice, at least in the next 15 to
20 years. Look, then, for future computer systems that use hundreds or
thousands of processors.
Myria-processors will be used in two areas. The first involves the so-
called geographically distributed systems. This architecture is evolving
because people who generate and collect data are geographically dis-
tributed. Moreover, organizations have geographically distributed of-
fices and personnel who need to communicate with one another. And,
of course, there is a great techno-economic opportunity along with these
needs in that people can now afford to buy computers and the com-
munications products and services that interconnect them.
The second area of myria-processor revolution involves tightly coupled
multiprocessor systems. Here I envision again hundreds or thousands
of processors in one very big box, devoted to one task, for example,
recognizing the face of one human being among a few thousand or trying
to comprehend human speech. As in the case of distributed systems, a
sizable techno-economic opportunity is driving us in this direction, with
OCR for page 32
32
COMPUTERS OF THE FUTURE
the very low cost of individual processors making such large systems
affordable.
Geographically Distributed Systems
Consider 1,000 autonomous machines that are geographically distrib-
uted autonomous because each machine can support the desires of its
owner in editing text, handling messages, and running application pro-
grams, all independently of what other people are doing on their com-
puters. In addition to this autonomy, however, each computer must
cooperate with the other computers in the system, whether they are
1,000 miles away or upstairs, in order to make possible common appli-
cations, e.g., planning, putting together a manual, or trying to figure
out why there was a power failure in New York City.
The electronic interconnections among computers, which are a com-
bination of local-area networks and long-distance terrestrial or satellite
networks, are fairly straightforward at the hardware level and present
no substantive long-range problems. Large companies that have begun
to establish networks of distributed systems are approaching these sys-
tems from an era in which dumb terminals became progressively more
intelligent in the presence of a central powerful program that controls
everything in the system. It is now becoming clear that these intercon-
nected machines need to be autonomous and that there can be no central
"executive." The reason for this decentralization lies in the desire to
establish arbitrarily large systems: A centrally directed system has an
upper size limit of perhaps 50 to 100 nodes for the same reason that an
individual can only converse simultaneously with a small, limited number
of people. Achieving truly decentralized systems will require the de-
velopment of some form of common currency or, if you wish, simple
English—for computers so that these machines can "understand" each
other for the purpose of common applications. This requirement is at
least philosophically analogous to the communication means in humans
tribes: Each individual is autonomous, yet the aggregate can embark
on common activities because they can understand one another. Ulti-
mately these computer tribes will form an "information marketplace,"
i.e., a free market dedicated to the purchase and sale of information
and informational labor.
Now let me pose a challenge to computer professionals: Can you
construct a 1,000-computer distributed system that at minimum has the
behavior and performance of a traditional, centralized, time-shared sys-
tem that services perhaps 50 users in round-robin fashion? The choice
of the number 1,000 is of course arbitrary. If this goal can be achieved
OCR for page 33
SOFTWARE AND UNORTHODOX ARCHITECTURES
33
for 1,000 machines, I would immediately ask if it can be done for 10,000
or even a million computers. In short, is there a scalable system archi-
tecture that permits the kinds of services and the sharing of data that
transpire in time-shared communities? I have posed this challenge in
terms of time-shared systems because there is experience in that area,
and it is known that if this behavior and performance can be extended
to arbitrarily many users the result will have proven utility.
This question has not yet been answered. It seems, however, that it
must be answered one way or another before distributed computer sys-
tems become truly useful.
Let us look, for comparison purposes, at an existing network called
the ARPANET, which spans several hundred computers from Hawaii
to West Germany. In principle and in practice it is possible to log into
any computer on this network and to use that computer from a remote
location. Yet, hardly anyone does this. Instead, people use this network
as a very sophisticated message-exchange medium, which has proven
its utility for that purpose. The reason that remote use of computers
does not take place is that dialing into another computer generally means
being confronted with an entirely different system that speaks its own
language and has its own conventions, which are either unknown to the
person dialing in or are costly to learn. Hence, except for the great
young hackers who enjoy exploring remote computers, most people have
very little use for such an unknown and remote resource.
Regardless of the success of devising effective decentralized and dis-
tributed computer systems, individual computer "nodes" are likely to
continue their rapid evolution. The dominant trend that I see is toward
more powerful personal computation. In this regard people often ask if
they really need in their personal computers more memory than 128,000
characters, half a million characters, or at most 1 million characters (1
megabyte). The answer is an easy yes. If we focus on greater program
intelligence, which is the key to making these machines truly useful to
us, then we shall discover that a forefront-research intelligent program
occupies today 3 or 4 megabytes and, incidentally, takes about 30 to 70
man-years to develop. So having a personal computer that is truly friendly
and that tries to comprehend some free-format English as well as to
provide certain intelligent services involves the equivalent of 4 or 5 of
today's forefront intelligent programs, i.e., some 15 to 20 megabytes of
primary memory.
To conclude, I believe that success in distributed systems will depend
on our ability to address effectively the following three challenges. First,
such systems must achieve an acceptable level of overall reliability in
spite of local failures. Currently computer systems are like Swiss watches.
OCR for page 34
34
COMPUTERS OF THE FUTURE
Reach into them with a spoon and the entire edifice fails, catastrophi-
cally. It is essential to make distributed systems work more like human
tribes- if one or more nodes collapse, the tribe goes on functioning
properly.
The second and perhaps biggest challenge before us is to discover a
minimal semantic base, a minimal form of "computer English" that is
understood by all machines and that simultaneously maximizes local
autonomy and application cohesiveness.
The third challenge involves the assurance that the information carried
on distributed systems is protected and that the signatories of messages
are indeed the purported agents and not impostors.
Multiprocessor Systems
The second area of myria-processor systems might be called com-
putation by the yard, i.e., if you like 1 yard of computing you buy a 100-
processor system, and if you like 2 yards you buy a 200-processor ma-
chine. An example of a multiprocessor system is a 1,000-processor ma-
chine that converts human speech to typed text. Other applications
include the solution of large partial differential equations, signal pro-
cessing, and weather forecasting. But the most interesting applications
are in sensory computing, meaning automated eyes and ears, and in
more intelligent computing.
The force driving us toward multiprocessor systems is their cost. If
1,000 small processors can be harnessed into one computing machine,
then that machine will have 10 times the processing power of today's
fastest computer, at 1 percent of the latter's cost.
This harnessing of numerous processors in one machine is being at-
tempted in several ways. One way is the data-flow approach, which
consists of (1) a communication network that has perhaps 1,000 inputs
and 1,000 outputs, and (2) 1,000 processing elements. In this architecture
the results issued by each computer enter this network carrying a little
flag that establishes their destination. Thus, if the flag says "39," these
results will exit the network into the thirty-ninth computer where they
will be processed into new results with new flags.
The programming of such a machine is entirely different from the
programming of today's Von Neumann-type machines, because many
operations are carried out simultaneously rather than sequentially.
The challenges in trying to realize these multiprocessor systems are
as follows. First, such systems must be linearly or at least quasi-linearly
scalable this is the computation-by-the-yard notion. Second, as in the
case of distributive systems, these multiprocessor machines must work
OCR for page 35
SOFTWARE AND UNORTHODOX ARCHITECTURES
35
correctly in spite of local failures, because in a system with 1,000 pro-
cessors there will always be several processors that do not work correctly.
Finally, there must be an associated programming environment so that
these machines can be effectively programmed. Moreover, such a pro-
gramming environment should be "tuned" to the hardware architecture
to ensure good performance under the target applications.
The following question is often raised in discussions of multiprocessor
architectures: It is conceivable that we can put together 1,000 or 10,000
processors, but how are such systems going to extract the parallelism
inherent in today's large FORTRAN programs? My answer is that this
is not possible, any more than it is possible to automatically extend
procedures for managing one individual to procedures for managing a
factory or a company of 1,000 people. In both cases the techniques are
entirely different. Hence, we must forget about automatically unfolding
the parallelism in today's programs. Instead, it is necessary to learn how
to harness these "warehouses" full of computers by explicitly program-
ming and organizing them in the same sense that a complex shoe-man-
ufacturing company is planned and tuned today.
Finally, I think that following our experience with single-processor
machines there will be special-purpose multiprocessor systems dedicated
to specific applications that will always carry out these applications with-
out the need or ability to be reprogrammed for other applications.
SUMMARY AND CONCLUSION
In the software domain, programs will move from the artisan to the
mass-manufacturing era, and they will manifest themselves progressively
more as hidden computers or mass-manufactured applications on dis-
kettes. Users will adapt to these programs rather than the other way
around as has been the case in the past. Programs will become more
intelligent and will move into personal computers, distributed systems,
and multiprocessor systems where they will perform a variety of service-
oriented functions, including the sensory area. Programming productiv-
ity will not increase dramatically. Instead, the continuing large program
design costs will be absorbed in the individual cost of mass-produced
programs.
Novel system architectures will abound under the myria-processor
theme in two principal categories: (1) geographically distributed, loosely
coupled systems that behave, like tribes, with autonomy and application
cohesiveness and that will form an information marketplace; and (2)
multiprocessor tightly coupled systems, each dedicated to one applica-
tion, which are expected to open new doors in sensory and intelligent
computing.
OCR for page 36
Representative terms from entire chapter:
unorthodox architectures