Read Gödel, Escher, Bach: An Eternal Golden Braid Online
Authors: Douglas R. Hofstadter
Tags: #Computers, #Art, #Classical, #Symmetry, #Bach; Johann Sebastian, #Individual Artists, #Science, #Science & Technology, #Philosophy, #General, #Metamathematics, #Intelligence (AI) & Semantics, #G'odel; Kurt, #Music, #Logic, #Biography & Autobiography, #Mathematics, #Genres & Styles, #Artificial Intelligence, #Escher; M. C
One of the major areas of research in Artificial Intelligence today is called automatic programming, which is concerned with the development of yet higher-level languages-languages whose translators are sophisticated. in that they can do at least some of the following impressive things: generalize from examples, correct some misprints or grammatical errors,
try to make sense of ambiguous descriptions, try to second-guess the user by having a primitive user model, ask questions when things are unclear, use English itself, etc. The hope is that one can walk the tightrope between reliability and flexibility.
AI Advances Are Language Advances
It is striking how tight the connection is between progress in computer science (particularly Artificial Intelligence) and the development of new languages. A clear trend has emerged in the last decade: the trend to consolidate new types of discoveries in new languages. One key for the understanding and creation of intelligence lies in the constant development and refinement of the languages in terms of which processes for symbol manipulation are describable. Today, there are probably three or four dozen experimental languages which have been developed exclusively for Artificial Intelligence research. It is important to realize that any program which can be written in one of these languages is in principle programmable in lower-level languages, but it would require a supreme effort for a human; and the resulting program would be so long that it would exceed the grasp of humans. It is not that each higher level extends the potential of the computer; the full potential of the computer already exists in its machine language instruction set. It is that the new concepts in a high-level language suggest directions and perspectives by their very nature.
The "space" of all possible programs is so huge that no one can have a sense of what is possible. Each higher-level language is naturally suited for exploring certain regions of "program space"; thus the programmer, by using that language, is channeled into those areas of program space. He is not forced by the language into writing programs of any particular type, but the language makes it easy for him to do certain kinds of things. Proximity to a concept, and a gentle shove, are often all that is needed for a major discovery-and that is the reason for the drive towards languages of ever higher levels.
Programming in different 'languages is like composing pieces in different keys, particularly if you work at the keyboard. If you have learned or written pieces in many keys, each key will have its own special emotional aura. Also, certain kinds of figurations "lie in the hand" in one key but are awkward in another. So you are channeled by your choice of key. In some ways, even enharmonic keys, such as C-sharp and D-flat, are quite distinct in feeling. This shows how a notational system can play a significant role in shaping the final product.
A "stratified" picture of
Al
is shown in Figure 59, -with machine components such as transistors on the bottom, and "intelligent programs" on the top. The picture is taken from the book
Artificial Intelligence
by Patrick Henry Winston, and it represents a vision of
Al
shared by nearly all Al workers.
Although I agree with the idea that
Al
must be stratified in some such way, I do not think that, with so few layers, intelligent programs
FIGURE 59. To create intelligent
programs, one needs to build up a series
of levels of hardware and software, so
that one is spared the agonT of seeing
everything only on the lowest level.
Descriptions of a single process on
different levels will sound verb different
from each other, only the top one being
sufficiently
chunked
that
it
is
comprehensible to us. [Adapted from P.
H.
Winston,
Artificial
Intelligence
(Reading, Mass.: Addison-ifele' , 1977)]
can he reached. Between the machine language level and the level where rue intelligence will be reached, I am convinced there will lie perhaps mother dozen (or even several dozen!) layers, each new layer building on and extending the flexibilities of the layer below. What they will be like we can hardly dream of now ...
The Paranoid and the Operating System
The similarity of all levels in a computer system can lead to some strange level-mixing experiences. I once watched a couple of friends-both computer novices-playing with the program "PARRY" on a terminal. PARRY s a. rather infamous program which simulates a paranoid in an extremely rudimentary way, by spitting out canned phrases in English chosen from a vide repertoire; its plausibility is due to its ability to tell which of its stock phrases might sound reasonable in response to English sentences typed to t by a human.
At one point, the response time got very sluggish-PARRY was taking very long to reply-and I explained to my friends that this was probably because of the heavy load on the time-sharing system. I told them they could find out how many users were logged on, by typing a special "control" character which would go directly to the operating system, and would )e unseen by PARRY. One of my friends pushed the control character. In a lash, some internal data about the operating system's status overwrote some of PARRY's words on the screen.
PARRY knew nothing of this: it is a program with "knowledge" only of horse racing and bookies-not operating systems and terminals and special control characters. But to my friends, both PARRY and the operating system were just
"the computer"-a mysterious, remote, amorphous entity that responded to them when they typed. And so it made perfect sense when one of them blithely typed, in 3nglish, "Why are you overtyping what's on the screen?" The idea that PARRY
could know' nothing about the operating system it was running
under was not clear to my friends. The idea that "you" know all about "yourself"
is so familiar from interaction with people that it was natural to extend it to the computer-after all, it was intelligent enough that it could "talk" to them in English! Their question was not unlike asking a person, "Why are you making so few red blood cells today?" People do not know about that level-the "operating system level"-of their bodies.
The main cause of this level-confusion was that communication with all levels of the computer system was taking place on a single screen, on a single terminal. Although my friends' naiveté might seem rather extreme, even experienced computer people often make similar errors when several levels of a complex system are all present at once on the same screen. They forget "who"
they are talking to, and type something which makes no sense at that level, although it would have made perfect sense on another level. It might seem desirable, therefore, to have the system itself sort out the levels-to interpret commands according to what "makes sense". Unfortunately, such interpretation would require the system to have a lot of common sense, as well as perfect knowledge of the programmer's overall intent-both of which would require more artificial intelligence than exists at the present time.
The Border between Software and Hardware
One can also be confused by the flexibility of some levels and the rigidity of others. For instance, on some computers there are marvelous text-editing systems which allow pieces of text to be "poured" from one format into another, practically as liquids can be poured from one vessel into another. A thin page can turn into a wide page, or vice versa. With such power, you might expect that it would be equally trivial to change from one font to another-say from roman to italics. Yet there may be only a single font available on the screen, so that such changes are impossible. Or it may be feasible on the screen but not printable by the printer-or the other way around. After dealing with computers for a long time, one gets spoiled, and thinks that everything should be programmable: no printer should be so rigid as to have only one character set, or even a finite repertoire of them-typefaces should be user-specifiable! But once that degree of flexibility has been attained, then one may be annoyed that the printer cannot print in different colors of ink, or that it cannot accept paper of all shapes and sizes, or that it does not fix itself when it breaks ...
The trouble is that somewhere, all this flexibility has to "bottom out", to use the phrase from Chapter V. There must be a hardware level which underlies it all, and which is inflexible. It may lie deeply hidden, and there may be so much flexibility on levels above it that few users feel the hardware limitations-but it is inevitably there.
What is this proverbial distinction between software and hardware? It is the distinction between programs and machines-between long complicated sequences of instructions, and the physical machines which carry
them out. I like to think of software as "anything which you could send over he telephone lines", and hardware as "anything else". A piano is hardware, gut printed music is software. A telephone set is hardware, but a telephone lumber is software. `The distinction is a useful one, but not always so clear-cut.
We humans also have "software" and "hardware" aspects, and the difference is second nature to us. We are used to the rigidity of our physiology: the fact that we cannot, at will, cure ourselves of diseases, or ;row hair of any color-to mention just a couple of simple examples. We an, however, "reprogram"
our minds so that we operate in new conceptual frameworks. The amazing flexibility of our minds seems nearly irreconcilable with the notion that our brains must be made out of fixed-rule hardware, which cannot be reprogrammed. We cannot make our neurons ire faster or slower, we cannot rewire our brains, we cannot redesign the interior of a neuron, we cannot make anti choices about the hardware-and 'et, we can control how we think.
But there are clearly aspects of thought which are beyond our control. We cannot make ourselves smarter by an act of will; we cannot learn a new language as fast as we want; we cannot make ourselves think faster than we lo; we cannot make ourselves think about several things at once; and so on. This is a kind of primordial self-knowledge which is so obvious that it is lard to see it at all; it is like being conscious that the air is there. We never really bother to think about what might cause these "defects" of our minds: lamely, the organization of our brains. To suggest ways of reconciling the software of mind with the hardware of brain is a main goal of this book.
Intermediate Levels and the Weather
We have seen that in computer systems, there are a number of rather sharply defined strata, in terms of any one of which the operation of a running program can be described. Thus there is not merely a single low bevel and a single high level-there are all degrees of lowness and highness. s the existence of intermediate levels a general feature of systems which lave low and high levels? Consider, for example, the system whose 'hardware" is the earth's atmosphere (not very hard, but no matter), and whose "software" is the weather. Keeping track of the motions of all of the molecules simultaneously would be a very low-level way of
"understanding" he weather, rather like looking at a huge, complicated program on the machine language level. Obviously it is way beyond human comprehension. 3ut we still have our own peculiarly human ways of looking at, and describing, weather phenomena. Our chunked view of the weather is based >n very high-level phenomena, such as: rain, fog, snow, hurricanes, cold fronts, seasons, pressures, trade winds, the jet stream, cumulo-nimbus clouds, thunderstorms, inversion layers, and so on. All of these phenomena involve astronomical numbers of molecules, somehow behaving in concert o that large-scale trends emerge. This is a little like looking at the weather n a compiler language.
Is there something analogous to looking at the weather in an intermediate-level language, such as assembly language? For instance, are there very small local "mini-storms", something like the small whirlwinds which one occasionally sees, whipping up some dust in a swirling column a few feet wide, at most? Is a local gust of wind an intermediate-level chunk which plays a role in creating higher-level weather phenomena? Or is there just no practical way of combining knowledge of such kinds of phenomena to create a more comprehensive explanation of the weather?