SHRDLU

**SHRDLU** lengoaia naturalaren edukia ulertzen zuen lehen programetako bat izan zen, Terry Winograd informatikariak garatua MITen 1968-1970 urteen artean. Bertan, erabiltzaileak ordenagailuarekin hitz egin, objektuak mugitu, bildumak izendatu eta "blokez osaturiko mundu" baten egoera kontsultatzeko aukera du, azken finean bloke desberdinez osaturiko kaxa birtual bat da.
[thumb|[Gordon Bell eta Alan Kotok PDP-6 bat erabiltzen 1964an]]
**SHDRLU** Micro Planner eta Lisp programazio-lengoaiak erabiliz idatzia izan zen, DEC PDP-6 ordenagailu eta DEC grafiko terminal batean. Ondorengo aldaketak Utahko Unibertsitateko laborategietako ordenagailu grafikoetan egin ziren, SHRDLU "World" -ren 3D irudikapen osoa gehituz.

**SHDRLU** izena, ETAOIN SHRDLU-etik dator. Letren teklak Linotype makina batean jarri eta ingelesezko erabilera-maiztasunaren arabera alderantzizko noranzkoan ordenatzean lortzen den emaitza da.

## Funtzionaltasuna 
SHRDLU, nagusiki, erabiltzailearen interakzioa ahalbidetzen duen hizkuntza-aztertzailea izan zen, ingelesezko terminoak erabiliz. Erabiltzaileak "blokeen munduan" hainbat objetu mugitzeko agindua ematen zion SHRDLUri. "Blokeen mundua" oinarrizko hainbat objekturen konbinaketa bat da: blokeak, konoak, baloiak... **SHRDLU** berezia bilakatzeko arrazoia, lau ideia sinpleen konbinazioa izan zen, "ulermenaren" simulaketa sinesgarriagoa bihurtuz.

**SHRDLU**ren mundua horren sinplea izateko arrazoietako bat, munduko objektu multzo guztia eta dagokion kokapena deskribatzeko nahikoa ziren 50 hitz: "block" eta "cone" bezalako izenak, "place on" eta "move to" motako aditzak, "big" eta "blue" erako adjektiboak besteak beste. Hitz horien bitartez sortutako konbinaketak nahiko sinpleak ziren, eta programak nahiko ondo funtzionatzen zuen erabiltzaileak nahi zuena errepresentatuz.

**SHRDLU**k oinarrizko memoria bat gehitu zion testuingurua eskeintzeko. **SHRDLU**ri "put the green cone on the red block" eta gero "take the cone off" esan diezaiokegu, eta modu horretan "the cone" aurretik adierazi diogun "the green cone"-rekin erlazionatuko du. Aldi berean, aurretik adierazitako interazioetan begiratuko du adjektibo gehiago esaten diren kasuetan. Hori dela eta, historikoaren kontsulta egiteko aukera eskaintzen digu "did you pick up anything before the cone?" motako galderak erantzunez.
thumb|Bloke gorri handi bat hartzearen adibidea.

Hasierako erregelak osatu zituen memoriak albo-ondorio bat sortu zuen, programa gai zen munduko egoerak ebaluatu eta ia posible ziren edo ez erantzun. Adibidez, **SHRDLU**k blokeak pilatuak izan zitezkeela deduzituko luke, baina proba egin ondoren triangeluak ezin direla pilatu ohartuko zen. "Munduak" oinarrizko fisikak zituen blokeak erortzeko, hizkuntza analizatzailetik guztiz independentea.

Bukatzeko, **SHRDLU**k objetuei emandako izenak ere gogoratu ditzake. Adibidez, "a steeple is a small triangle on top of a tall rectangle" ("kanpai-dorrea triangelu txiki bat da laukizuzen altu baten gainean"). Modu horretan, "kanpai-dorrei" eginiko erreferentziak erantzuteko ahalmena izango du, edo, nahi baldin badugu berriak sortu.

## Adibidea 
Hau **SHRDLU**ren demostrazio famatu bat da:

: Person: Pick up a big red block. (*Bloke gorri handi bat jaso.*)
: Computer: OK. (*Ados.)*
: Person: Grasp the pyramid. (*Piramidea heldu.*)
: Computer: I DON'T UNDERSTAND WHICH PYRAMID YOU MEAN. (*Ez dut ulertzen ze piramide nahi duzun*.)
: Person (changing their mind): Find a block which is taller than the one you are holding and put it into the box. (*Topa ezazu heltzen ari zaren baino bloke handiago bat eta kaxan jarri*.)
: Computer: BY "IT", I ASSUME YOU MEAN THE BLOCK WHICH IS TALLER THAN THE ONE I AM HOLDING. (*Kaxan jarri behar dudan objetua eskuan dudana baino handiagoa dena dela suposatuko det.*)
: Computer: OK.. (*Ados.)*
: Person: What does the box contain? (*Zer dauka kutxak?*)
: Computer: THE BLUE PYRAMID AND THE BLUE BLOCK. (*Piramide urdina eta bloke urdina).*
: Person: What is the pyramid supported by? (*Zeren gainean dago piramidea?*)
: Computer: THE BOX. (*Kaxa*).
: Person: How many blocks are not in the box? (*Zenbat bloke ez daude kaxan?*)
: Computer: FOUR OF THEM. (*Lau.*)
: Person: Is at least one of them narrower than the one which i told you to pick up? (*Hartzeko esan dizudana baino txikiagorik ahal dago?*)
: Computer: YES, THE RED CUBE. (*Bai, kubo gorria*).
: Person: Is it supported? (*Zerbaiten gainean dago?*)
: Computer: YES, BY THE TABLE. (*Bai, mahaiaren gainean.*)
: Person: Can the table pick up blocks? (*Mahaiak blokeak jaso ditzake?*)
: Computer: NO. (*Ez.*)
: Person: Can a pyramid be supported by a block? (*Jarri dezaket piramidea bloke baten gainean?*).
: Computer: YES. (*Bai*.)
: Person: Can a pyramid support a pyramid? (*Jasan dezake piramide batek beste piramide bat?*)
: Computer: I DON'T KNOW. (*Ez dakit.*)
: Person: Stack up two pyramids. (*Bi piramide pilatu*.)
: Computer: I CAN'T. (*Ezin dut*.)
: Person: Will you please stack up both of the red blocks and either a green cube or a pyramid? (*Pilatu ditzakezu bi bloke gorriak eta kubo berdea edo piramide bat?*).
: Computer: OK. (*Ados.*)
: Person: Which cube is sitting on the table? (*Ze kubo dago mahaian?*)
: Computer: THE LARGE GREEN ONE WHICH SUPPORTS THE RED PYRAMID. (*Berde luzea, piramide gorria jasaten duena*.)
: Person: Is there a large block behind a pyramid? (*Ba al dago piramide baten atzean dagoen bloke handi bat?*)
: Computer: YES, THREE OF THEM: A LARGE RED ONE, A LARGE GREEN CUBE, AND THE BLUE ONE. (*Bai, guztietatik hiru: gorri handi bat, kubo berde handi bat eta urdin bat*).
: Person: Put a small one onto the green cube which supports a pyramid. (*Jarri txikia piramidea onartzen duen kubo berdearen gainean.*)
: Computer: OK. (*Ados.*)
: Person: Put the littlest pyramid on top of it. (*Jarri piramiderik txikiena horren gainean.*)
: Computer: OK. (*Ados.*)
: Person: Does the shortest thing the tallest pyramid's support supports support anything green? (*Piramidea jasaten duen blokeak zeozer jasaten ahal du?*)
: Computer: YES, THE GREEN PYRAMID. (*Bai, piramide berdea.*)
: Person: What color is it? (*Zein da bere kolorea?*)
: Computer: BY "IT", I ASSUME YOU MEAN THE SHORTEST THING THE TALLEST PYRAMID'S SUPPORT SUPPORTS. (*Asumitzen dut galdetzen ari zaren objetua piramidearen soportea dela.*)
: Computer: RED (*Gorria*.)
: Person: How many things are on top of green cubes? (*Zenbat gauza daude kubo berdeen gainean?*)
: Computer: I'M NOT SURE WHAT YOU MEAN BY "ON TOP OF "IN THE PHRASE "ON TOP OF GREEN CUBES " . (*Ez nago ziur zer esan nahi duzun "kubo berdeen gainean" esaldiarekin.*)
: DO YOU MEAN: (*Zer esan nahi duzu*:)
:
: 1 - DIRECTLY ON THE SURFACE (*Justu beraren gainean.*)
: 2 - ANWHERE ON TOP OF ? (*Bere gainean dagoen edozein kuboren gainean.*)
:
: Person: 2
: Computer: THREE OF THEM. (*Guztietatik hiru*.)
: Person: Had you touched any pyramid before you put the green one on the little cube? (*Piramide bat ikutu al duzu kubo txiki berdea jarri aurretik?*)
: Computer: YES, THE GREEN ONE. (*Bai, berdea.*)
: Person: When did you pick it up? (*Noiz jaso zenuen?*)
: Computer: WHILE I WAS STACKING UP THE RED CUBE, A LARGE RED BLOCK AND A LARGE GREEN CUBE. (*Kubo gorria, bloke gorri handia eta kubo berde handia pilatzen nengoen bitartean.*)
: Person: Why? (*Zergatik?*)
: Computer: TO GET RID OF IT. (*Hori kentzeko.*)
: Person: Why did you do that? (*Zergatik egin zenuen hori?*)
: Computer: TO CLEAN OFF THE RED CUBE. (*Kubo gorria garbitzeko.*)
: Person: Why did you clear off that cube? (*Zergatik garbitu zenuen kubo hori?*)
: Computer: TO PUT IT ON A LARGE GREEN CUBE. (*Kubo berde handiaren gainean jartzeko.*)
: Person: Why did you do that? (*Zergatik egin zenuen hori?*)
: Computer: TO STACK UP THE RED CUBE , A LARGE RED BLOCK AND A LARGE GREEN CUBE. (*Kubo gorria, bloke gorri handia eta kubo berde handia pilatzeko.*)
: Person: Why did you do that? (*Zergatik egin zenuen hori?*)
: Computer: BECAUSE YOU ASKED ME TO. (*Zuk eskatu zenidalako.*)
: Person: How did you do it? (*Zela egin zenuen?*)
: Computer: BY PUTTING A LARGE RED BLOCK ON THE TABLE ; THEN LETTING GO OF IT ; THEN PUTTING A LARGE GREEN CUBE ON IT ; THEN LETTING GO OF THAT CUBE ; THEN PUTTING THE RED CUBE ON THAT CUBE; THEN LETTING GO OF THAT CUBE. (*Kubo gorri handia mahian jarri, ondoren kubo berde handia horren gainean jarri, ondoren kubo gorria horren gainean jarri.*)
: Person: How many objects did you touch while you were doing it? (*Zenbat objetu ikutu zenuen bitartean?*)
: Computer: FOUR OF THEM. (*Guztietaik lau.*)
: Person: What did the red cube support before you started to clean it off? (*Zer zuen kubo gorriak garbitu aurretik?*)
: Computer: THE GREEN PYRAMID. (*Piramide berdea.*)
: Person: There were five blocks to the left of the box then. (*Orduan bost bloke zeuden kuxaren ezkerraldean.*)
: Computer: NO, ONLY FOUR OF THEM: THE RED CUBE, TWO LARGE GREEN CUBES AND A LARGE RED BLOCK. (*Ez, lau bakarrik zeuden: kubo gorria, bi kubo berde handi eta bloke gorri handia.*)
: Person: Put the blue pyramid on the block in the box. (*Jarri kutxako blokearen gainean piramide urdina.*)
: Computer: OK. (*Ados.*)
: Person: Is there anything which is bigger than every pyramid but is not as wide as the thing that supports it? (*Ba al dago piramiderik baino handiagoa eta horiek jasaten ez dituen zerbait?*)
: Computer: YES, THE BLUE BLOCK. (*Bai, bloke urdina.*)
: Person: Does a steeple (*Kanpaia egiten du.*)
: Computer (interrupting): SORRY, I DON'T KNOW THE WORD "STEEPLE". (*Barkatu, ez du "kanpaia" hitza ulertzen.*)
: Person: A "steeple" is a stack which contains two green cubes and a pyramid. (*"Kanpaia" bi kubo berde eta piramide bat duen pilaketa bat da.*)
: Computer: I UNDERSTAND. (*Ulertzen dut.*)
: Person: Are there any steeples now? (*Ba al dago kanpairik orain?*)
: Computer: NO. (*Ez.*)
: Person: Build one. (*Eraiki bat.*)
: Computer: OK. (*Ados.*)
: Person: Call the biggest block "superblock". (*Deitu bloke handienari "superblock".*)
: Computer: OK. (*Ados.*)
: Person: Have you picked superblock up since we began? (*"Superblock"-a aukeratu zenuen hasi ginenetik?*)
: Computer: YES. (*Bai.*)
: Person: Why did you drop it? (*Zergatik utzi zenuen?*)
: Computer: BY "IT", I ASSUME YOU MEAN THE SUPERBLOCK. (*"Superblock"-ari buruz ari zarela asumitu dut.*)
: I CAN'T EXPLAIN A NON-EXISTENT EVENT. (*Ezin dut gerta ez den gertaera bat azaldu*.)
: Person: Is there anything to the right of the red pyramid? (*Ba al dago ezer piramidearen gorriaren eskuinean?*)
: Computer: YES, FOUR THINGS: THE BOX , THE RED CUBE, THE BLUE PYRAMID AND THE BLOCK NAMED SUPERBLOCK (*Bai, lau gauza: kutxa, kubo gorria, piramide urdina eta "superblock" deituriko blokea.*)
: Person: Thank you. (*Eskerrik asko.*)
: Computer: YOU'RE WELCOME! (*Ez horregatik!*)

## Ondorioak 
**SHRDLU** *Adimen Artifizialaren* manifestazio arrakastatsu bat izan zen. Gainontzeko adimen artifizialeko ikertzaileek gehiegizko baikortasunean murgildu ziren, baina laister bukatu zen egoera hori ondorengo sistemek egoera errealistagoei aurre egin nahian aurkitu ziren anbiguotasun eta konplexutasun mailaren ondorioz.

Nahiz eta hasierako nahia hori ez izan, **SHRDLU** fikzio interaktiboaren lehen adibide formal bezala kontsideratua dago. 1977. urtean *Colossal Cave Adventure* jokoa publikatu zen, gehiengoarentzat fikzio interaktiboaren lehen aitzindari erreala.

## Erreferentziak 
* *Procedures as a Representation for Data in a Computer Program for Understanding Natural Language*. MIT AI Technical Report 235, February 1971
* Terry Winograd, Understanding Natural Language, Academic Press, Nueva York (1972)

## Kanpo estekak 
* SHRDLU - Terry Winograd-en SHRDLU orrialdean, iturburu-kodea barne hartzen du
* SHRDLU resurrection – SHRDLUren bertsio berrirak, Java3D bertsioa barne