Short answer
SHRDLU was a program written by Terry Winograd at the MIT Artificial Intelligence Laboratory between 1968 and 1970 that held typed conversations in ordinary English about a small simulated world of blocks, pyramids and a box. It could follow commands, answer questions, work out what "it" referred to, explain why it had done something and learn new words, which made it the most convincing demonstration of a computer understanding language that anyone had seen.
Follow-up question Why didn't SHRDLU's approach scale up to everyday conversation?
Imagine typing to a computer, "Find a block which is taller than the one you are holding and put it into the box," and getting back a polite check on what you meant before it does the job. Then you ask why it moved a certain cube, and it tells you. In 1970, that exchange was not science fiction. It was SHRDLU, and for a while it looked as if computers were on the verge of truly understanding English.
Who built it, and where
SHRDLU was written by Terry Winograd, a graduate student at the MIT Artificial Intelligence Laboratory in Cambridge, Massachusetts, between 1968 and 1970. It ran on a DEC PDP-6 computer. The user typed on a teletype, a keyboard-and-printer terminal, and the program's world appeared on an early DEC-340 graphics display. It was written in MacLisp, plus a planning language called Micro Planner.
Winograd described the work in his doctoral dissertation, issued as MIT AI Technical Report 235 in early 1971 under the title "Procedures as a Representation for Data in a Computer Program for Understanding Natural Language." In 1972 it filled an entire issue of the journal Cognitive Psychology and also came out as a book, Understanding Natural Language.
The odd name comes from printing. On Linotype typesetting machines, the letter keys were laid out by how often each letter appears in English, most common first, giving the sequence ETAOIN SHRDLU. The phrase sometimes slipped into newspapers by mistake, and Winograd borrowed the second half.
The blocks world
SHRDLU did not talk about everything. It talked about one small, imaginary tabletop holding blocks of different sizes and colors, a few pyramids and a box, plus a simulated robot hand that could pick things up and put them down. Because the world was so limited, perhaps 50 words were enough to describe everything in it: nouns like "block" and "pyramid," verbs like "put" and "pick up," adjectives like "big" and "red."
Here are a few moments from the demonstration dialogue Winograd published, with what each one shows:
| The person types | SHRDLU replies | What it shows |
|---|---|---|
| "Grasp the pyramid." | "I don't understand which pyramid you mean." | It notices ambiguity: there are several pyramids |
| "What does the box contain?" | "The blue pyramid and the blue block." | It answers questions from its model of the world |
| "Can a pyramid support a pyramid?" | "I don't know." | It separates what it can prove from what it cannot |
| "Why did you do that?" (repeated) | "Because you asked me to." | It remembers the goals behind its own actions |
| "A 'steeple' is a stack which contains two green cubes and a pyramid." | "I understand." | It learns a new word and can then build one |
At another point the user asks, "Why did you drop it?" about a block SHRDLU never dropped, and the program answers that it cannot explain an event that did not happen.
Try it: Write five instructions for arranging three coins on a table, using words like "it," "the bigger one" and "the one I just moved." Give them to a friend and note every time they have to ask what you meant. Each question is a problem SHRDLU had to solve in code.
How it worked
The key insight, as the report's summary puts it, was that a program can only handle language sensibly if it understands what is being talked about. So instead of simply spotting keywords, SHRDLU combined several kinds of knowledge:
- Grammar. It analyzed the full structure of each sentence: subject, verb, objects, clauses inside clauses.
- Meaning. It turned the sentence into a precise request about its world, linking "the one you are holding" to a particular block.
- Reasoning. It used Micro Planner to work out how to reach a goal, for example clearing other blocks off a cube before moving it.
- Memory. It kept a record of the conversation and of its own actions, so it could resolve "it" and answer "when" and "why" questions.
The title of the dissertation points to its central technical idea. Knowledge was stored not only as passive facts but as procedures, small programs that can check or bring about something in the world. When SHRDLU could not work out a sentence from context and its knowledge of the physical world, it asked the user for clarification, as in the pyramid example.
Why it mattered
SHRDLU was widely seen as a spectacular success. It showed that grammar, meaning and reasoning could work together in one program, and that a computer could hold a coherent conversation as long as it truly knew its subject. Its success also encouraged a wave of optimism about how soon computers would understand language.
It also became an early ancestor of interactive fiction, the text adventure games in which a player types commands to explore a virtual world, even though SHRDLU told no story.
Why didn't SHRDLU's approach scale up to everyday conversation?
The very thing that made SHRDLU impressive also limited it. Its world was tiny and perfectly known: every object, color and position was stored exactly, and there was nothing outside the table. Real conversation is full of ambiguity, missing information and background knowledge that nobody states. When later systems tried to handle situations closer to ordinary life, the hand-written grammar, meanings and rules had to grow enormously, and the optimism faded.
Later efforts in the same spirit, such as the Cyc project, set out to give programs far more knowledge to reason from. The voice assistants of 2019 take a different route again, learning much of their language skill from large amounts of data rather than from rules written by hand. Yet SHRDLU's demonstration still sets a high bar. Few systems in 2019 can answer "Why did you do that?" about their own actions as clearly as a program from 1970 could inside its world of blocks.
Sources
- SHRDLU — Terry Winograd, Stanford University (archived August 3, 2019), August 3, 2019
- Procedures as a Representation for Data in a Computer Program for Understanding Natural Language — Terry Winograd, MIT AI Technical Report 235 (MIT DSpace record)
- SHRDLU — Wikipedia (revision of February 18, 2019), February 18, 2019