6. LA RAPPRESENTAZIONE DELLA CONOSCENZA Introduzione alla... · LA RAPPRESENTAZIONE DELLA...

22
6. LA RAPPRESENTAZIONE DELLA CONOSCENZA 6.1. Le strutture di rappresentazione Se ci volgiamo un attimo indietro a riconsiderare i programmi che abbiamo incontrato fin qui dal punto di vista della loro capacità di «comprensione» del linguaggio naturale. ci accorgiamo che il problema fondamentale che si presenta a tutti è il seguente: come arrivare da una «stringa» di simboli alfabetici a un signifi- cato, cioè a qualche informazione relativa, in senso generale, all'oggetto del discorso. Questa informazione è di natura chiara- mente concettuale-astratta e suppone un'ovvia relazione con le conoscenze precedenti: in altri termini, «capire* cosa vuol dire una frase implica (naturalmente come condizione necessaria, non è detto che sia sufficiente) trovare per essa una categoria concet- tuale, una sorta di etichetta (o una serie di etichette) che ne rias- suma il senso. Questa operazione è possibile solo tenendo conto di ciò che già si «conosce». cioè delle categorie semantiche gih presenti. Il problema della comprensione semantica è, perciò. stret- tamente conilesso a quello della rappresentazione semantica e per questo motivo, fra l'altro. le ricerche più recenti sul significato, compiute in ambito cognitivista. non possono più prescindere da quelle sull'organizzazione della memoria e viceversa. Abbiamo detto che l'informazione sul significato è o dovrebbe essere relativa a qualcosa che si può genericamente denominare «oggetto» del discorso: parlando di computer. però. spesso tale conoscenza coincide. in pratica, con l'identificazione del «che fare», di un'operazione da compiere e degli oggetti concreti su cui compierla, piuttosto che nella rappresentazione astratta di tali elementi. Shrdlu è un ottimo esempio di questo tipo di rappresen- tazione del mondo, che viene definita «procedurale». Tuttavia,

Transcript of 6. LA RAPPRESENTAZIONE DELLA CONOSCENZA Introduzione alla... · LA RAPPRESENTAZIONE DELLA...

6. LA RAPPRESENTAZIONE DELLA CONOSCENZA

6.1. Le strutture di rappresentazione

Se ci volgiamo un attimo indietro a riconsiderare i programmi che abbiamo incontrato fin qui dal punto di vista della loro capacità di «comprensione» del linguaggio naturale. ci accorgiamo che il problema fondamentale che si presenta a tutti è il seguente: come arrivare da una «stringa» di simboli alfabetici a un signifi- cato, cioè a qualche informazione relativa, in senso generale, all'oggetto del discorso. Questa informazione è di natura chiara- mente concettuale-astratta e suppone un'ovvia relazione con le conoscenze precedenti: in altri termini, «capire* cosa vuol dire una frase implica (naturalmente come condizione necessaria, non è detto che sia sufficiente) trovare per essa una categoria concet- tuale, una sorta di etichetta (o una serie di etichette) che ne rias- suma il senso. Questa operazione è possibile solo tenendo conto di ciò che già si «conosce». cioè delle categorie semantiche gih presenti. Il problema della comprensione semantica è, perciò. stret- tamente conilesso a quello della rappresentazione semantica e per questo motivo, fra l'altro. le ricerche più recenti sul significato, compiute in ambito cognitivista. non possono più prescindere da quelle sull'organizzazione della memoria e viceversa.

Abbiamo detto che l'informazione sul significato è o dovrebbe essere relativa a qualcosa che si può genericamente denominare «oggetto» del discorso: parlando di computer. però. spesso tale conoscenza coincide. in pratica, con l'identificazione del «che fare», di un'operazione da compiere e degli oggetti concreti su cui compierla, piuttosto che nella rappresentazione astratta di tali elementi. Shrdlu è un ottimo esempio di questo tipo di rappresen- tazione del mondo, che viene definita «procedurale». Tuttavia,

come vedremo meglio in seguito, non esistono prove che dimo- strino che la comprensione del significato equivalga sempre all'i- dentificazione o attivazione di una procedura e quindi rimane il problema di vedere quali strutture concettuali (o, se si vuole, quale organizzazione dei dati) possano prendere il posto dei più semplici e comodi programmi da far partire per trovare l'oggetto a cui ci si riferisce.

I1 problema è allora: in quali termini, cioè usando quali simbo- li. e quali strutture per collegare questi simboli fra loro, si può rappresentare la «conoscenza» di un programma? Ciò implica certo chiedersi in quale forma organizzare e memorizzare i dati nel computer, ma implica anche la domanda se tale modalità debba necessariamente essere analoga a quella che gli uomini usano per rappresentare le proprie conoscenze oppure se esistano algoritmi radicalmente diversi e più efficienti.

Rispondere a una tale domanda è difficile, come si può intuire, per il semplice fatto che non si conoscono ancora a fondo le complesse strategie di rappresentazione cognitiva che gli uomini impiegano. Ma è degno di nota il fatto che parecchi studiosi operanti nel campo dell'intelligenza artificiale, pur essendo poten- zialmente interessati a qualunque modalità di organizzazione dei dati, purché efficiente, si sono rivolti allo studio del funzionamento di tali processi cognitivi nell'uomo e hanno tentato di simularli. Ad esempio Schank, nel presentare la serie di programmi Margie (vedi S: 7.1.) ha detto:

Per quanto noi siamo interessati all'intelligenza artificiale, abbiamo avuto la sensazione che questa particolare area deli'inteliigenza artifi- ciale (cioè la rappresentazione delsignificato linguistico, nota nostra) possa essere meglio affrontata se si tenta di costruire un modello dei processi psichici umani. Quindi ciò clie presentiamo può essere visto sia come una teoria dell'elaborazione umana del linguaggio sia come un passo sulla via verso l'intelligenza artificiale. (Schank, 1975a. p. 1).

Se Schank, nel tentativo di migliorare l'efficienza di un pro- gramma. è pervenuto alla formulazione di una nuova teoria psi- cologica (caso non raro, che illustra di per s& uno dei principali argomenti addotti a favore della simulazione dai sostenitori di questa forma di ricerca, cfr. cap. I l ) , è chiaro che le teorie già elaborate dagli psicologi cognitivisti riguardo alla rappresentazione delle conoscenze siano sottoposte a una vera prova del fuoco. I1

fatto che Schank, come tanti altri, sia giunto a teorizzazioni diverse può essere un indizio dell'inadeguateua di tali teorie o forse solo della difficoltà della loro traduzione in termini «com- putazionali,}.

Possiamo classificare i principali metodi che sono stati elabo- rati per la rappresentazione della conoscenza in termini compu- tazionali in due grandi gruppi, uno di tipo formale. l'altro di tipo strutturato. Il sistema formale fa ricorso alla logica matematica, specialmente al «calcolo dei predicati», mentre per i sistemi strutturati si possono individuare almeno tre filoni, a seconda del tipo di strutture fondamentali utilizzate: cornici, reti semantiche, schemi situazionali.

6.2. Le rappresentazioni formali

L'idea di utilizzare la logica matematica per rappresentare le conoscenze sul mondo è stata considerata attraente perché si trat- ta di un sistema che consente di manipolare tali conoscenze in modo formale, automatico e quindi particolarmente adatto ali'e- laborazione tramite computer. Rappresentare le conoscenze in termini logici significa poter compiere automaticamente dei «ra- gionamenti* su queste conoscenze. ad esempio dedurre nuovi fatti da quelli conosciuti usando relativamente poche regole.

I1 calcolo dei predicati è una parte della logica formale che consente di esprimere conoscenze (dati, relazioni fra dati, ecc.) in forma simbolica1. Si tratta di un vero e proprio linguaggio for- male. che possiede il suo alfabeto e la sua sintassi, rispettando la quale è possibile costruire espressioni «ben formate*. Con questo linguaggio possiamo esprimere conoscenze relative a specifici individui, come «Franco abita a Roma»:

ABITA (FRANCO, ROMA)

oppure più generali, come:

' Le poche righe qui dedicate al calcolo dei predicati non pretendono. owia- mente. di essere una inrroduzione a tale branca della logica. ma solo un chiari- mento che consenta di capire l'uso che ne viene fatto in intelligenza artificiale. Rimandiamo quindi a introduzioni specializzate per un approfondimento.

ABITA (x, y)

che significa che un certo individuo x abita nella città y. In questi esempi, ABITA è un predicato, FRANCO e ROMA

sono delle costanti, x e y sono delle variabili. Si sarh notato che, per convenzione, il predicato precede i suoi argomenti (costanti o variabili) e che questi sono racchiusi tra parentesi.

I1 calcolo dei predicati rende possibile combinare diverse espressioni tramite connettivi, in modo da indicare la congiunzio- ne (simboloP,) o la disgiunzione (simbolo V) fra due o più di esse. Un esempio di congiunzione fra due espressioni potrebbe essere: «Franco abita a Roma e insegna all'università»; un esempio di disgiunzione: <<Franco indossa il cappotto o l'impermeabile».

Quando le espressioni formali del calcolo dei predicati sono in- terpretate, cioè vengono loro assegnati precisi riferimenti a entità del dominio di discorso, esse possono assumere i valori vero o falso. E possibile esprimere nel calcolo dei predicati anche I'im- plicazione, cioè un formale nesso di conseguenza logica, indipen- dente dalla verità o falsità di ciò che è asserito. Ad esempio, se volessimo esprimere come necessità logica il fatto che uno può abitare soltanto nella città in cui lavora, un nesso di implicazione potrà legare l'espressione ABITA (x, y) all'espressione LAVORA (x,y). Si scriverà allora:

( V X) [ABITA (x,y) - LAVORA (x,y)]

che si legge <per tutti gli x, il fatto che x abita a y implica che x lavora a y» (la lettura della definizione è stata resa meno tecnica e più vicina al linguaggio comune per facilitarne la comprensio- ne). I1 simbolo ( V x) viene denominato wquantificatore univer- sale» e serve ad esprimere il fatto che qualunque valore x possa assumere l'implicazione è valida. Si può anche esprimere la pos- sibilità che l'implicazione valga non sempre ma almeno in un caso, usando un «quantificatore esistenziale»:

(3 X) [ABITA (x.y) J LAVORA (x,y)]

*esiste almeno un x per cui vale che se abita a y allora lavora a yn.

Il calcolo dei predicati è stato applicato inizialmente alle ricer- che di intelligenza artificiale per consentire la costruzione di

programmi che dimostrano automaticamente dei teoremi. Nel 1965 Robinson ideò un procedimento. chiamato *principio di risoluzione». che. utilizzando il formalismo del calcolo dei predi- cati, permetteva di stabilire automaticamente la verith di una certa serie di espressioni. In base a tale principio, un teorema (che è appunto costituito da un certo numero di espressioni simili a quelle che abbiamo descritto) può essere dimostrato vero se, negando per assurdo i suoi enunciati e sostituendo alle variabili certi valori. alla fine si determina una contraddizione (ciò che non è falso, è vero). Per essere certi della verità del teorema, però, bisognerebbe sostituire alle variabili tutti i loro possibili valori: il metodo suggerito da Robinson consente, invece, di determinare l'esistenza di contraddizioni con il minimo numero possibile di sostituzioni.

L'uso di una rappresentazione delle conoscenze basata sul cal- colo dei predicati è stato poi esteso dalla dimostrazione di teoremi alla soluzione di problemi non strettamente logici e alla pianifi- cazione di azioni «qualunque». Nel 5 8.3. ci occuperemo più in dettaglio di programmi basati su questi principi. ma intanto pos- siamo accennare ad alcune difficoltà che l'uso di sistemi logici in generale può comportare.

Una di queste difficoltà era tipica dei primi sistemi basati suila logica formale e consisteva nel come adattare le formule che esprimono le condizioni logiche accettate (assiomi) a situazioni che cambiano nel tempo, a contesti diversi. Questo problema è noto in intelligenza artificiale come il frame problem (Mc Carthy e Hayes, 1969; Raphael,l971) ed è stato risolto, come vedremo più avanti ($ 8.3.). facendo in modo che gli assiomi non costitui- scano un insieme statico ma sia possibile facilmente cancellarli quando non sono più validi o aggiungerne di nuovi. Per ottenere questo, è necessario che gli assiomi stessi siano memorizzati in un data base. Questo tipo di rappresentazione della conoscenza è quindi definito edichiarativo~ perché consiste nel «dichiarare» o elencare in qualche area di memoria quali sono le conoscenze che il sistema possiede in un dato momento. Si contrappone ad una modalità «procedurale» di rappresentazione secondo la quale le conoscenze rilevanti sono trovate attraverso procedure (pro- grammi) di volta in volta. Per quanto anche i sistemi basati sulla logica formale facciano ricorso a procedure, di solito si defini- scono «dichiarativi>* i sistemi che non ne fanno uso. La contrap- posizione fra queste due modalità di rappresentazione ha dato

luogo ad una serie di discussioni nell'ambito dell'intelligenza artificiale e quindi varrà la pena di esaminarle un pò più in detta- glio in un prossimo paragrafo (§ 6.4.1.)

Se la soluzione del «frame problemx ha incoraggiato lo sviluppo di sistemi basati sulla logica dei predicati2. bisogna ricordare altri limiti propri dell'uso dei sistemi formali di rappresentazione. In primo luogo non è facile tradurre in un sistema di questo genere gli innumerevoli tipi di conoscenze rilevanti per lo svolgimento dei processi psichici; inoltre, non si tratta certo di modaliti natu- rali, cioè normalmente usate dalle persone per le proprie rappre- sentazioni e ragionamenti (quindi una strada più promettente per la simulazione sarebbe la ricerca di una «logica naturale»). Per di più. i sistemi formali incoraggiano rappresentazioni abbastanza semplici del mondo, perchè quando si aumenta il loro livello di complessità ci si trova di fronte al rischio di un'«esplosione com- binatorian dei tempi di elaborazione. Vedremo in seguito che per superare questi problemi sono state adottate in genere delle soluzioni di compromesso fra sistemi puramente formali e sistemi strutturati.

6.3. Le rappresentazioni stmtturate

L'idea su cui si basa la maggior parte dei sistemi artificiali di rappresentazione strutturata di conoscenze è di avere a disposi- zione delle «caselle» in cui collocare ordinatamente le informa- zioni. Ecco. ad esempio, come Minsky ha presentato la sua teo- ria delle «cornici» Cframes):

Quando ci si imbatte in una nuova situazione (o si cambia in modo sostanziale il proprio punto di vista su un problema) si preleva dalla memoria una struttura chiamata cornice. Si tratta di una struttura che viene ricordata per essere adattata alla realta cambiandola se necessano nei dettagli. Una cornrce 6 una struttura dei dati in grado di rappresen- tare una situazione stereotipa come essere in un certo tipo di soggiorno

Ne è un esempio il successo arriso al Prolog. un linguaggio di programmazione che sfrutta la logica come supporto di rappresentazione ed elaborazione delle informazioni (vedi 3 6.4.2.).

o andare alla festa di compleanno di un bambino. Ciascuna cornice contiene diversi tipi di informzione. Alcune di queste informazioni riguardano come la cornice stessa può essere usata. altre riguardano cosa ci si può attendere che avvenga in seguito, altre ancora cosa fare se queste attese non sono confermate. (Minsky. 1975)

Così. per rappresentare una certa stanza si potrebbe creare una «cornice» contenente una casella per indicare il tipo di stanza (es. soggiorno), una casella per contenere le informazioni sul soffitto. altre caselle per ciascuna parete e una ancora per il pavimento. Ogni casella può a sua volta contenere altre caselle; ad esempio, quella destinata ad accogliere le informazioni relative ad una parete potrà avere delle caselle per indicare se c'è una finestra o un quadro o una porta: scendendo ancora più in detta- glio. la casella relativa alla finestra potra contenerne altre per indicare il tipo di panorama, e così via. E evidente che, in pra- tica. l'intera cornice non è che una grossa «casella» destinata a contenere tutte le altre.

Un sistema di rappresentazione di questo tipo può essere utiliz- zato per innumerevoli tipi di informazione; ad esempio può ser- vire anche per le strutture grammaticali: basta creare le «caselle» che ci si può attendere di riempire per descrivere varie situazioni linguistiche. Così, poniamo, la rappresentazione di un gruppo numinaie (v. § 5.2.) è possibile ricorrendo ad una cornice che con- tiene una casella per il determinante, una per l'aggettivo (o gli aggettivi). una per il nome, ecc. Si può intuire, quindi, che il sistema di «reti di transizione), che abbiamo già incontrato occu- pandoci del linguaggio costituisca una struttura di rappresenta- zione e infatti si trattava di un caso particolare del secondo tipo di struttura che intendiamo prendere in considerazione: le reti semantiche.

Non ci dilungheremo in dettagli sulle reti semantiche in quanto questo tipo di rappresentazione è abbastanza familiare. Il modello prevede un sistema di concetti, legati fra loro da relazioni mediante una struttura, appunto. reticolare. Nella nota rappre- sentazione grafica di tale sistema i concetti sono i punti, detti anodi», da cui si diramano i segmenti, detti «archi», che esprimono le relazioni e congiungono diversi nodi fra loro. L'idea viene utilizzata in maniera sostanzialmente identica nei sistemi compu- tazionali di rappresentazione delle conoscenze, in quanto permet- te di archiviare e ritrovare le informazioni in modo efficiente. Ad

esempio, quando esiste una struttura gerarchica dei concetti, certe proprietà che sono associate ad una classe possono essere attribuite facilmente a tutti gli esemplari che appartengono alla classe stessa: il fatto che gli uomini, i gatti e i cavalli nutrono i loro piccoli è associato al concetto di «mammifero». al quale gli esemplari sono legati dalla relazione di appartenenza (ISA, «è un.).

La versione computazionale delle. reti semantiche, come si è detto, adotta la stessa idea che è alla base delle cornici. Infatti, anche qui si tratta di avere delle caselle da riempire con specifi- che informazioni; cambia solo il modo di rappresentare le rela- zioni fra un elemento e l'altro. In genere, così come nel caso delle cornici non è il programma a individuare di quali caselle ha bisogno (sono previste dal programmatore) ma solo come può eventualmente riempirle, anche nel caso delle reti occorre dare ai programma gli elementi di base con cui costruire le sue rappre- sentazioni. Questi elementi sono i cosiddetti concetti semantici «primitivi>>, cioè quelli che non sono ulteriormente riconducibili ad altri (Wilks, 1972).

Coloro che si sono battuti, più di ogni altro, a favore dell'uso di concetti .primitivi>> e che hanno tentato di identificarne con pre- cisione un cetto numero sono stati Roger Schank della Yale University negli Stati Uniti e Yorick Wilks dell'Università del Sussex in Gran Bretagna. Schank (1975a) ha sostenuto che la rappresentazione del significato non ha natura *linguistica» ma concettuale: una posizione. inseribile nella controversia che ha opposto studiosi come Vygotsky, Piaget, Whorf o Chomsky, nettamente contraria all'ipotesi della natura verbale del pensie- ro3. In sostanza. secondo questo punto di vista. la rappresenta- zione di un concetto in memoria avrà una etichetta unica indipen- dentemente dall'esistenza di una specifica parola o di un insieme di parole per la sua espressione linguistica. Schank afferma che ogni frase in una certa lingua ne ha una equivalente - dal punto di vista semantico - in un'altra lingua, anche se non è detto che debba essere della stessa lunghezza o che debba usare le stesse - parole.

Schank e collaboratori accettano l'idea di un elivello concet-

' Considerazioni affini sono state fatte da Norman (1973). Sull'equazione fra linguaggio verbale e pensiero. vedi Greco (1980).

tuale*, più profondo di quello semantico perché non si compromet- te con nessuna lingua in particolare, con precise regole che pre- scrivono certe combinazioni di elementi concettuali e ne vietano altre (per alludere a una famosa frase di Chomsky. le idee non possono avere un colore né possono dormire).

Weizenbaum (1976) ha criticato questa teoria sostenendo che parlare di «base concettuale» del pensiero è vago e che in realth queste strutture concettuali sono già viste come programmi. Non si può negare tuttavia che, se è vero che non è possibile separare il modo in cui le conoscenze sono rappresentate in memoria dalle modalità in cui verranno usate (cfr.. fra gli altri. Norman, 1973, per una convincente dimostrazione). la teoria delle «reti seman- tiche» appare anzi carente da questo punto di vista, al punto che proprio per questo motivo è stata sviluppata la struttura degli «schemi situazionali» di cui parleremo tra breve.

Uti sistema di rappresentazione analogo a quello di Schank è stato creato da Yorick Wilks, con lo scopo principale di consen- tire la realizzazione del sogno della traduzione automatica. Come abbiamo visto ( 5 5.3.) la condizione indispensabile per tradurre da una lingua all'altra è «capire» il significato: se si ha a disposizione un sistema che consenta di codificare i «concetti», quindi che si situa a un livello più profondo dei diversi linguaggi naturali. si può dire di aver trovato il veicolo attraverso cui tradurre. Questo livello pre-linguistico può essere denominato in vari modi (strut- tura profonda, livello concettuale, pensiero, ...) ma consiste sempre in sostanza in un sistema di rappresentazione di signifi- cati. La soluzione di Wilks è analoga. come si è detto. a quella di Schank perché confronta I'input con pattern semantici generali (non specifici come Eliza o Parry) e ciò che cambia nei due autori sono le unità di base utilizzate per questa codificazione. I1 sistema di Schank sarà descritto in dettaglio nel 9 7.1. Nel caso di Wilks gli elementi primitivi sono in numero più cospicuo (circa 80) e servono a permettere l'identificazione non soltanto del tipo di azione a cui un discorso fa riferimento, ma anche di condizioni come il tipo, la qualità. lo stato, il modo. e simili. attribuibili agli oggetti menzionati. Esempi di tali elementi primitivi sono: entità (uomo, sostanza, oggetto fisico. gruppo), azioni (essere. causare, spingere, ecc.). tipi (come, quale, ecc.).

Per riprendere l'esempio del motto biblico, la parola «spirito» potrà quindi essere codificata come «sostanza> o come «entità» di diverso tipo e quindi non sarà possibile la confusione raccontata

dalla storiella. Infatti ci sono dei modi iusti di combinare i pri- mitivi, delle strutture prefissate definite «architravi» (templates). Ad esempio, se tentassimo di tradurre na frase come .Paolo è una pasta d'uomo* in una lingua che non adotti una simile metafora, potremmo trovarci in difficolt con una traduzone let- terale; ma se sappiamo che la struttura orno-essere-sostanza non è ammissibile mentre lo è uomo-esser -come, potremo evitare errori grossolani.

Il terzo tipo di struttura di rappre eiitazione che abbiamo

dell'uso che ne verrà fatto.

l menzionato è costituito dagli <schemi situazionali*. Si tratta di una elaborazione delle reti semantiche che sviluppa l'intuizione secondo cui le attese o aspettative non riguardano solo l'imme- diato contesto di una frase ma anche intere situazioni in cui ci si può venire a trovare nella vita reale. In questo senso, come si è detto, il modo in cui le conoscenze sono memorizzate tiene conto

L'esempio che più spesso viene fatto è quello del ristorante: quando si va in un locale del genere di solito si «sa» che si devono seguire certe modalità fisse di comportamento e che le cose che ci si può attendere sono limitate e alquanto prevedibili. E come se si seguisse un copione teatrale ben chiaro: il came- riere ci porta il menu, noi ordiniamo, poi arrivano le pietanze, infine c'è il conto e la mancia. Si sa che queste informazioni appaiono scontate finché si resta in un certo ambito culturale ma possono essere messe in discussione in un altro (esempio: se si va all'estero ci si può chiedere se si usi dare la mancia) e quindi hanno valore normativa ma non imperativo: tuttavia la loro conoscenza è essenziale per una reale comprensione del mondo.

Ciò che abbiamo definito «schemi situazionali», quindi, sono strutture cognitive che riguardano le comuni informazioni sul mondo e su ciò che ci si può aspettare in varie situazioni di vita reale. Non c'è da meravigliarsi se il concetto basilare di questo approccio, dovuto ad Abelson (1973) e fatto proprio anche da altri autori come lo stesso Schank, è il «copione» (script). Secondo tale approccio, nelle varie situazioni in cui ci veniamo a trovare nel corso della nostra esistenza, il nostro comportamento è gover- nato da regole ben precise e adatte allo specifico contesto; i copioni «sono "pure" strutture concettuali che rappresentano astratte catene di eventi»: essi «non rispecchiano un particolare flusso di realtà, con il suo caleidoscopico intersecarsi di aweni- menti, ma piuttosto riflettono come un soggetto che conosce

potrebbe immaginare che proceda una fetta di realtà, escludendo interruzioni e irregolarità» (Abelson. 1975, p.277). In un certo senso è la vecchia idea (comparsa qua e là da Socrate a Pirandel- lo) che il nostro comportamento somigli molto al copione di una recita teatrale. solo che stavolta si è fatto entrare in scena anche il computer, un personaggio più che mai *in cerca di autore». Non passi inosservato, comunque, come emerge dalle stesse parole di Abelson, che si tratta di una idealizzazione e che quindi, anche una volta che si sia riusciti a delineare una serie di questi schemi astratti. rimarrà il problema di come gestire le eccezioni e le interruzioni (si vedrà caso per caso? vi saranno dei super-copioni che le incorporano?).

Sull'idea-base dei copioni sono stati innestati altri concetti fondamentali quali i «temi» (strutture più generali che collegano fra loro copioni in cui emergono caratteristiche costanti di qualche attore o di relazioni fra attori) e i «piani» (particolari copioni volti al raggiungimento di qualche fine). Sulla base di questo genere di strutture di rappresentazione, come vedremo, sono stati creati programmi in grado (più o meno brillantemente) di comprendere storie. di riassumerle e perfino di costruirne di nuove.

Si deve osservare che. come già si è accennato in precedenza (nel $ 2.4.). esiste una certa analogia fra il modo in cui è stato impostato il problema della rappresentazione da parte dei ricer- catori nel campo dell'intelligenza artificiale e come lo stesso pro- blema è stato visto da alcuni psicologi cognitivisti (cfr. Abelson, 1981). Tale analogia. osservata esplicitamente da Neisser (1976) fa riferimento al concetto di «schema».

Neisser usa questo termine <<per definire la struttura cognitiva centrale nell'amhito della percezione» (op. cit., tr. it. p. 77) e vi vede soprattutto un'affinità con le strutture di rappresentazione formulate da Minsky. Vede, però. anche alcune differenze sostan- ziali fra i due concetti (pp. 81 sgg.): le strutture di Minsky sareb- bero più statiche in quanto non tengono conto degli effetti dei movimenti ed essendo concepite come luoghi dove depositare informazioni più che .progetti» per procurarsene di nuove. Si tratta di difficoltà non insuperabili: tener conto del movimento è agevole se si adoperano strutture flessibili come la «tavola trian- golare» di Fikes e Nilsson (vedi la descrizione del programma Strips nel § 10.2.); le strutture possono, poi. facilmente diventare .progetti>, dal momento che - come già sappiamo - la distinzione fra dati e programmi non è assoluta.

Un altro problema richiamato da Neisser è relativo ai default assignrnents (assegnazioni per difetto), cioè a quanto viene assun- to per gli aspetti della struttura su cui mancano precise informa- zioni dall'ambiente. Perché un programma funzioni. come abbia- mo visto anche in altre occasioni (cfr. quanto detto a proposito del «programma nevrotico» di Colby). è indispensabile che siano pre- cisati tutti i particolari dei dati di cui ha bisogno; di qui la neces- sità di assumere una certa rappresentazione del mondo come valida «per difetto». cioè valida a meno che non vi siano informazioni in contrasto con essa. Neisser accenna al rischio che, in questo modo. si finisca col confondere la percezione con I'immaginazio- ne; può darsi che tale confusione sia inevitabile quando si accetti l'idea che la percezione funziona per «attese» (esattamente come l'immaginazione), ma bisogna ricordare che, a differenza dell'im- maginazione. il percepire implica la ricerca attiva di conferme degli schemi già pronti. Il dubbio di Neisser è probabilmente dovuto alla sua concezione dell'immaginazione come anticipazione percettiva.

6.4. Rappresentazione e controllo

6.4.1. Organizzazione procedurale e dichiarativa

Nel 3 6.1. abbiamo fatto cenno alla controversia tra i fautori di un'organizzazione procedurale e dichiarativa della conoscenza. Qualunque discussione sulla rappresentazione della conoscenza nei sistemi intelligenti sarebbe incompleta se non tenesse conto della discussione di queste due diverse modalità in cui tale rap- presentazione può declinarsi e del dibattito che su questa distin- zione si è sviluppato. Presenteremo ora le due posizioni, in modo da essere in grado di capire innanzitutto se davvero siano con- trastanti e, in quel caso, se e come il contrasto sia sanabile.

Abbiamo già esemplificato in precedenza modalità tipicamente «dichiarative» di organizzazione della conoscenza come l'uso del calcolo proposizionale della logica. Invece un esempio di rappre- sentazione «procedurale» l'abbiamo già incontrato quando abbiamo esaminato il funzionamento di Shrdlu e infatti l'autore di questo programma. Terry Winograd, è stato uno dei più tenaci difensori della validità di un sistema procedurale (ora è su posizioni meno

estreme). Si ricorderà che il mondo su cui Shrdlu è in grado di conversare e su cui è in grado di compiere certe operazioni è il «mondo dei blocchi». costituito di cubi, piramidi e simili oggetti. Analizzando i'organizzazione di questo programma abbiamo già osservato che Shrdlu identifica gli oggetti di cui si sta parlando e le loro proprietà senza bisogno di servirsi di una base di dati in cui tali oggetti siano elencati assieme ai loro attributi ma sempli- cemente servendosi di opportuni programmi che specificano «come fare» per trovare ciò di cui si parla. Dal punto di vista procedu- ralista. quindi, la conoscenza (artificiale e umana) non è costituita da una serie di informazioni memorizzate in qnalche luogo in forma già pronta per l'uso (sapere che) ma da una serie di regole che dicono quali procedimenti seguire per ottenere le informa- zioni di cui si ha bisogno (sapere come). Per sapere che 6 x 9 = 54. si può consultare una tavola di moltiplicazione o eseguire di volta in volta la moltiplicazione. Facendo un altro esempio, si può dire che una rappresentazione «dichiarativa» è paragonabile alla descrizione dettagliata delle caratteristiche di un minestrone. cioè dei suoi ingredienti e del suo aspetto. mentre una rappresenta- zione <procedurale» focalizza di più l'attenzione sulla ricetta per prepararlo.

Se le cose possono essere poste in questi termini per consentire una comprensione intuitiva della distinzione di cui ci stiamo occupando. quando si voglia essere meno approssimativi diven- tano un po' più complesse. Intanto. è spontaneo osservare che una ricetta non può prescindere dall'elenco degli ingredienti e vicever- sa avere una lista di ingredienti senza sapere cosa farsene è di dubbia utiliti. Fuori dalla metafora. queste osservazioni possono essere espresse ricordando che ogni programma opera necessa- riamente su certi dati e viceversa i dati devono sempre essere organizzati in funzione di qnalche programma. Ma c'è di più. Se si ricorda che cosa sono i linguaggi di programmazione (cfr. 8 3.3.) si può agevolmente comprendere che una stessa serie di codici può essere considerata come programma o come dati a seconda del punto di vista: un programma scritto in linguaggio ad alto livello, infatti, è una serie di «frasi» che un altro programma (in linguag- gio macchina) prende come dati. cioè come simboli da tradurre negli unici codici che la macchina riconosce.

Perché, allora, sono state fatte tante discussioni su quello che sembra essere un falso problema?

In realtà le procedure che sono richieste necessariamente anche

al «dichiarativista» per manipolare i suoi dati sono di natura molto generale, valide per manipolare fatti di qualunque tipo: la specificità della conoscenza viene apportata dai fatti memorizzati. Invece il proceduralista ha bisogno di molti programmi in più e di programmi molto più specifici. Winograd (1975) ha osservato che non si tratta di stabilire se un certo pezzo di conoscenza sia una procedura oppure un dato, ma se ci si guadagni di più a conside- rarla nell'uno o nell'altro modo. A suo parere, è certamente vero che alcune cose sono rappresentate meglio come procedure e altre come «fatti dichiarativi. ma si tratta di due diversi modi di collocare le proprie conoscenze fra i due estremi della «modula- ritàn e dell'<interazione».

I fautori della prospettiva procedurale affermano che un sistema dichiarativo avrebbe lo svantaggio di essere troppo statico (quindi difficilmente a~plicabile a certe conoscenze che sono legate ad . . - oprr;i~ioiii) e spz5so riiloiidantc i n quanto se una stessa conoscenza serve i n c~~iitciti Ji\.crsi Iasi Jzvc codificare più \.«Ire; iiioltrc è diffi- coltoso discernere velocemente. nella massa dei dati, ciò che serve in un dato momento.

D'altro canto, se si sceglie un sistema di rappresentazione dichiarativa si ha il vantaggio di una più facile scomposizione delle conoscenze in <fatti>, modulari; i moduli così ottenuti hanno caratteristiche di flessibilità e di economia (perché un singolo item in cui è codificata una informazione può essere interpretato da vari punti di vista a seconda del programma che ne fa uso) oltre che di facilità di aggiornamento (se ogni elemento è indipendente dagli altri, è più facile sostituirne qualcuno o aggiungerne altri). La scelta di un sistema procedurale, invece, è particolarmente utile quando sia importante prendere in considerazione le interazioni: così, se si debbono fornire a un robot le informazioni su come manipolare dei blocchi, è più vantaggioso usare delle procedure anche per definire la struttura del mondo perché queste automa- ticamente tengono conto di ciò che si è fatto e degli effetti delle interazioni fra diverse operazioni.

La discussione fra gli esponenti di questi due punti di vista non è giunta ad un punto conclusivo perché è stata spesso radicalizza- ta. Si tratta di due approcci che hanno validità non assoluta in quanto tali ma in relazione alle condizioni in cui vengono appli- cati e agli obiettivi che vengono posti. Ad esempio: il fatto che una singola subroutine non abbia significato di per sé ma solo in un certo contesto, e che quindi per modificare le conoscenze nell'approccio procedurale è indispensabile cambiare tutta la

struttura del programma, viene citato come un pesante svantaggio da parte di chi sostiene la validità dell'altro approccio; i proce- duralisti replicano che invece proprio questa è una prova deila bontà del loro modo di vedere, che riesce ad affrontare meglio la complessità dei sistemi in cui, si potrebbe dire ripetendo il famoso motto, il tutto è diverso dalla somma delle parti.

Come hanno notato Colombetti e al. (1978), paradossalmente la discussione sul come rappresentare la conoscenza si è sviluppata prima di chiarire che cosa rappresentare. in relazione ai tipi di conoscenze e ai loro usi. Per riprendere il loro esempio, la conoscenza relativa al baseball non sarà codificata allo stesso modo se si tratta di rispondere a domande su tale gioco o se si deve comandare un robot che giochi effettivamente.

6.4.2. I linguaggi di programmazione

La discussione sull'adozione di una modalità di rappresentazione procedurale o dichiarativa tocca anche la costituzione dei linguag- gi di programmazione disponibili per l'intelligenza artificiale e per la simulazione psicologica. Sappiamo ( 5 3.3.) che lo scopo dei linguaggi ad alto livello è di consentire all'utente l'accesso ad una collezione di subroutine che svolgono direttamente certe funzioni senza che il programmatore si debba preoccupare in dettaglio delle minute operazioni che la CPU esegue. In generale tutti i linguaggi di programmazione sono procedurali, perché scrivere un programma significa in un certo senso far eseguire una dopo l'al- tra quelle subroutine che corrispondono alle singole «istruzioni» e pensare in termini procedurali significa proprio pensare ad un compito da eseguire come a qualcosa che si può raggiungere passo dopo passo. Tuttavia i linguaggi più usati nel campo dell'intelii- genza artificiale, il Lisp e il Prolog, tendono a non incoraggiare questo modo di pensare e questa è una delle caratteristiche per cui differiscono dai linguaggi di programmazione tradizionali.

L'interprete Lisp può essere considerato un programma per il quale non esiste una distinzione netta fra istruzioni e dati, che di fatto hanno la stessa struttura sintattica. In Lisp, anzi, non si parla neppure di «istruzioni» ma si preferisce indicare come «fun- zioni» le strutture di simboli che indicano al tempo stesso le ope- razioni da farsi e gli oggetti a cui esse si applicano. A differenza degli altri linguaggi, poi, nel Lisp l'insieme delle funzioni non è

predefinito e limitato ma è possibile all'utente modificare queile esistenti o crearne di nuove. Questa possibilith è consentita anche allo stesso programma. che dunque può effettivamente automo- dificarsi nel corso dell'esecuzione, oppure creare da sé un nuovo programma ed usarlo. I1 Lisp è stato usato con successo anche per creare nuovi linguaggi di livello ancora più alto come il Plan- ner. il Conniver, il Programmar, il Krl. (Altri dettagli sul Lisp si trovano nell'Appendice).

I1 Lisp, date le sue caratteristiche di notevole flessibilità nella manipolazione di strutture simboliche, è stato considerato il lin- guaggio ideale per l'intelligenza artificiale e la simulazione psico- logica: la maggior parte dei programmi di un certo interesse sono stati scritti in Lisp o in uno dei linguaggi di livello più alto basati sul Lisp. Si tratta dunque di un linguaggio che non può essere ignorato da chiunque si occupi della costruzione di programmi «intelligenti».

Un altro linguaggio spesso utilizzato nell'intelligenza artificiale è il Logo. Esso è stato sviluppato originariamente presso il MIT da Seymour Papert. un matematico noto per i suoi interessi didattici oltre che di AI e per aver collaborato con Piaget a Ginevra per parecchi anni. I1 Logo è molto simile al Lisp in quanto ne adotta l'idea delle funzioni definibili dall'utente (qui dette <procedure») e delle liste. ma la sua sintassi è più semplice non avendo bisogno di parentesi. La caratteristica più conosciuta del Logo è il possesso di funzioni primitive atte a consentire ad una *tartaruga» (un animaletto disegnato sullo schermo o anche una vera e propria tartaruga meccanica collegabile al computer) di muoversi trac- ciando dei segni lungo il percorso. permettendo così la realizza- zione di elaborazioni grafiche. Poiche questo sistema è spesso adottato per insegnare ai bambini i concetti basilari dell'informa- tica, il Logo si è fatto la fama di essere un linguaggio didattico, quasi un linguaggio-giocattolo: in realtà la sua potenza non è inferiore a quella del Lisp e potrebbe di fatto sostituirlo senza problemi. 11 Lisp rimane più usato nell'ambito dell'intelligenza artificiale solo per motivi storici. in quanto un'ampia comunità di ricercatori lo conosce e lo sa usare bene e dunque non ha motivo di apprendere altri linguaggi.

La grande diffusione del Lisp nella comunità dell'intelligenza artificiale in questi ultimi anni ha tuttavia visto svilupparsi sempre di più la concorrenza di un altro linguaggio dalle caratteristiche molto diverse. Infatti alcuni ritengono che il Lisp sia ancora trop-

po procedurale. cioè che obblighi ancora l'utente a pensare in termini di <passo-dopo-passo» alle procedure che definisce. Quale antidoto contro questo male, nell'ultimo decennio si è affermato sempre più il Prolog. un linguaggio dichiarativo che utilizza la sintassi della logica dei predicati del primo ordine, sia pure con alcune restrizioni4. I1 Prolog richiede soltanto che siano enumerati (cioè descritti o «dichiarati») i dati di base dell'elabo- razione. cioè gli oggetti di cui ci occupiamo. le relazioni logiche esistenti fra tali oggetti e le regole valide per manipolare la verità delle asserzioni formulabili su di essi. Su tali basi, il linguaggio sarà in grado di esplorare le strutture dei dati, trarre inferenze, risolvere problemi. I1 programmatore non ha bisogno di specifi- care come. ma soltanto di descrivere in maniera corretta e com- pleta la situazione e poi. ancora in termini logici. dire che cosa gli interessa sapere: la potenza del linguaggio consente di ricavare le informazioni richieste senza doversi preoccupare dei passaggi che portano al loro ricavo.

Naturalmente. essendo un programma, il Prolog non può non avere un aspetto procedurale, ma si può dire che esso rimane per lo più invisibile all'utente. In un certo senso. il passaggio dal Lisp al Prolog è simile al passaggio dal linguaggio macchina ad un lin- guaggio ad alto livello, che consente di non doversi preoccupare di registri e indirizzi di celle di memoria; il Prolog è ad un livello ancora più alto. perché toglie al programmatore anche la necessita di definire i passi da eseguire nel corso dell'elaborazione. cioè le procedure5.

I1 Prolog è un liiiguaggio molto adatto per la costruzione di programmi che risolvono problemi e può avere un sano impatto anche sui processi cognitivi di chi lo usa. in quanto lo costringe a definire una rappresentazione molto chiara degli elementi del problema (oggetti, loro struttura e relazioni. condizioni ammesse

' Una delle prime presentazioni dell'idea è dovuta al logico Kowalski. 1974. Ottimi tcsti introduttivi al Prolog sano Clocksin e Mellish. 1981; Bratko. 1986. ' Se le cose stanno così in teoria. bisogna dire che in pratica non è possibile

scrivere un programma Prolog estremamente complesso e allo stesso tempo effi- ciente ignorando del rutto i dettagli procedurali. Rimane vero che lo -stile. di programmazione in Prolog è completamente diverso da quello dei tradizionali linguaggi procedurali come il Pascal o. in parte. lo stesso Lisp.

le quali si verificano cambiamenti nel sistema, pianificazione degli scopi, ecc.). Ma tutto questo non significa che il Prolog sia anche il linguaggio ideale per la costruzione di programmi di simulazione psicologica: il suo vantaggio principale, cioè il con- centrarsi sul cosa piuttosto che sul come, in questo caso si rivela uno svantaggio dal momento che l'interesse di chi progetta una simulazione sta principalmente proprio nell'esplicitazione delle funzioni che costituiscono un processo psichico. Tale esplicita- zione certamente non comprende soltanto gli elementi stmtturali del processo ma anche e soprattutto gli elementi funzionali, che sono descritti meglio da un set di procedure. Se le informazioni relative a come sono strutturate ed elaborate le rappresentazioni interne. a quali regole vengono di volta in volta applicate per dar luogo alle azioni, in una parola tutte le questioni che concernono il «controllo» (v. 5 3 .3 . ) , rimangono nascoste per l'utente, eviden- temente gli automatismi del linguaggio finiscono con il non essere una facilitazione ma piuttosto una complicazione.

6.4.3. 11 Krl

Un tentativo, più interessante per la simulazione psicologica, di integrare in un unico sistema aspetti procedurali e dichiarativi è Krl, un «linguaggio per la rappresentazione della conoscenza* (Knowledge Representation Language) di Bobrow e Winograd (1977, 1979). Si tratta di un linguaggio di livello più elevato rispetto al Lisp (su cui è costruito) e per di più è ispirato in parte ad alcune teorie psicologiche: percib è stato presentato dai suoi autori come qualcosa di più di un semplice linguaggio di program- mazione, simile al Planner o al Conniver, ma quasi come una teoria della rappresentazione della conoscenza.

Nel presentare la prima versione del linguaggio, Bobrow e Winograd affermavano d'aver progettato Krl essenzialmente per fornire uno strumento adeguato per «modellare il pensiero o ottenere prestazioni intelligenti»: è evidente che adottare tale strumento significa automaticamente accettarne i presupposti teorici. le modalità di organizzazione dei dati. le strutture di base. Qualcosa di simile in realtà awiene sempre quando si deve tra- durre una teoria in un programma, perché il tipo di linguaggio prescelto per la programmazione tende ad imporre con la sua struttura un certo modo di pensare la traduzione; nel caso del

Krl, tuttavia, tale interferenza è particolarmente avvertita dal momento che il linguaggio stesso risente, come si è detto, di alcune teorie psicologiche.

Questi aspetti saranno più chiari se esaminiamo un po' più in dettaglio la struttura generale e la filosofia di base del Krl. Come si sa, qualunque sistema di elaborazione «intelligente» di infor- mazioni (progettato vuoi per la comprensione del linguaggio naturale. vuoi per il ragionamento o la soluzione di problemi, ecc.) ha bisogno di una base di dati che sia organizzata in memoria in modo pratico ed economico: cioè le informazioni, per quanto complesse, devono essere facilmente rintracciabili con il minimo dispendio di risorse (spazio di memoria e tempo di ela- borazione). Le entità concettuali che costituiscono il sistema di conoscenza del Krl possono essere di vario tipo, potendo trattarsi di oggetti. individui, scene, fatti che accadono in una dimensione temporale, ecc. L'idea di Bobrow e Winograd è, allora, di fornire al sistema una serie di «descrizioni» delle entità concettuali da definire: anzi, poiché una stessa entità concettuale può essere definita diversamente a seconda dei punti di vista, per ciascuna di tali entità potranno esserci diverse descrizioni.

Un esempio fatto da Bobrow e Winograd: il fatto che una persona sia andata a S. Francisco può essere descritto sia attra- verso I'unità «viaggio» che attraverso l'unità «visita». Queste unità di descrizione sono delle specie di cornici con caselle specifiche per i fatti previsti per ognuna. L'unità «viaggio» prevede ad esem- pio un amodon (che può essere aereo o auto o bus) e una «de- stinazione>> (che dev'essere una città); l'unità «visita» prevede un visitatore e un visitato. e così via.

Queste unità possono essere incorporate in descrizioni più complesse che indicano, fra l'altro, la prospettiva da cui conside- rarle (ad esempio un viaggio con destinazione Boston) o specifi- cano qualche particolare (la persona che è venuta ieri pomeriggio, il cane che appartiene allo studente, ecc.) o il modo di procurarsi certe informazioni (se l'età della persona è inferiore a 12 anni è un bambino, altrimenti è un ragazzo o un adulto). Per trattare una tale mole di dati in maniera efficiente, Bobrow e Winograd si sono ispirati alla teoria della Rosch (1975). secondo la quale la creazione e il ritrovamento di categorie semantiche nella memo- ria non fa riferimento a classi astratte. bensì a specifici individui che possiedono le caratteristiche tipiche della classe e funzionano quindi da «prototipi». L'acquisizione di conoscenze, quindi, si

basa sulla memorizzazione di una certa serie di prototipi e la ricerca di conoscenze o il ragionamento che ne fa uso si basano <'su un processo di riconoscimento in cui nuovi oggetti o eventi sono confrontati con un insieme memorizzato di prototipi attesi» (Bobrow e Winograd, 1977, p.20).

Un'altra caratteristica che il Krl. nella sua prima versione, ha ereditato dalle ricerche psicologiche della Rosch (1975) è la distin- zione fra tre tipi di categorie: basilari, astratte e specializzate. Essendo le categorie astratte (che corrispondono a quelle chia- mate «superordinate» dalla Rosch) molto generali e quelle spe- cializzate invece molto particolari. normalmente -- tutte le volte che sia possibile - viene usato il livello di analisi intermedio. quello «basilare». Ad esempio non si dirà di solito: «c'è un ani- male nella strada» o «c'è un fox-terrier nella strada» per indicare che c'è un cane. Bobrow e Winograd pensavano che classificando gli oggetti in questo modo avrebbero potuto fornire ai programmi Krl delle euristiche più efficaci per compiere ragionamenti. Invece successivamente si sono resi conto che l'introduzione di questi livelli categoriali complicava le cose non essendo sempre facile trovare il livello più adatto; d'altro canto, nel momento in cui si sono messi a individuare procedure di elaborazione e a scrivere programmi, si sono resi conto che tale strutturazione dei dati non serviva. Questo caso & abbastanza istruttivo perché mostra come a volte nell'intelligenza artificiale vi sia un uso di modelli derivati dalla psicologia suggerito da considerazioni intuitive ma anche come il mantenimento di tali modelli sia condizionato dalla rea- lizzabilità di programmi che li usino, cioè dalla loro rispondenza ai canoni computazionali.

Altre caratteristiche del Krl. comunque. ricordano concetti familiari agli psicologi cognitivisti. Una di queste è la possibilità di strutturare un insieme di unità in una dista focale» (focus list), che contiene descrizioiii valide solo in un certo contesto. Bobrow e Winograd presentano questa caratteristica del Krl come «un meccanismo con cui implementare e testare modelli della memo- ria a breve termine»:questa idea è stata suggerita da teorie psi- cologiche secondo le quali la memoria è «dipendente dal contesto» (Norman, Bobrow. 1975; Norman, Rumelhart & LNR Res. Group. 1975; Bobrow, Norman, 1975).

Essendo anche (forse soprattutto) un linguaggio di program- mazione, il Krl naturalmente, oltre alle modalità di definizione e strutturazione dei dati, deve prevedere la possibilità di definire

delle procedure. Nel Krl esistono sia procedure già incorporate che definite dali'utente. Alcune di esse vengono richiamate quan- do se ne ha bisogno (sono dette «servitori») ed altre scattano quando si verificano speciali circostanze a cui sono sensibili (se- guendo la tradizione. sono dette «demoni»). Accanto alle proce- dure che normalmente sono usate per eseguire delle funzioni o per manipolare i dati (le unità), ci sono delle procedure speciali che vengono attivate ogni volta che si ha a che fare con certe uniti. Questa particolarità. che rende più evidente il compromesso fra aspetto procedurale e dichiarativo nel Krl, fa uso del cosid- detto «attaccamento procedurale» (procedura1 attachment) e con- siste nell'inserire all'interno di una unità di rappresentazione una casella. simile alle altre, che invece di specificare informazioni relative all'unità dice che cosa fare ogni volta che la stessa è manipolata.

Ad esempio. l'unità-prototipo «persona,> potrà contenere, accanto alle caselle per il nome, per l'età. ecc.. una casella detta triggers che specifica la procedura da far scattare (trigger) ogni volta che il prototipo (come se fosse un modulo da compilare) sia riempito con dati relativi ad una specifica persona; tale procedura potrebbe cercare in memoria se esiste già una unità che contenga i dati, anche parziali. relativi alla persona adesso incontrata: se sì, sarà stata trovata la persona a cui ci si riferisce. altrimenti verrà creata una nuova unità. Analogamente è possibile far partire procedure (dette traps) legate non ad un prototipo ma diretta- mente a unità particolari.

Per quanto riguarda la gestione del controllo, il Krl adotta un sistema di «elaborazione multipla» (multiprocessing). Si tratta di questo: il programma centrale possiede un'eagendah in cui cia- scuna cosa da fare è annotata in una delle sue «righe» numerate che indicano l'ordine di priorità. Qualunque processo in corso di esecuzione (come pure l'utente stesso) può inserire o cancellare qualche item dall'agenda o modificarne l'ordine di priorità. In questo modo l'elaborazione può essere guidata sia dall'obiettivo programmato che dai dati incontrati nel corso dell'esecuzione. È evidente la somiglianza di questo sistema con la struttura dell'at- tenzione umana, che è diretta contemporaneamente dagli stati motivazionali interni (scopi, interessi, ecc.) e dagli stimoli percet- tivi che possono «catturarlaa per la loro intrinseca natura (si pensi alle variabili che Berlyne, 1960, definisce collative). In questo caso. si tratta di un'idea che. anche se non deriva esplici-

tamente dalle ricerche psicologiche, è con esse in sintonia e sicu- ramente rende il Krl più adatto di altri linguaggi per la simula- zione di attività psichiche complesse. Alcuni hanno ritenuto di parlare di «autorappresentazione» a proposito di queste caratte- ristiche del Krl, ma ci sembra che sia preferibile una certa cau- tela uell'uso di categorie mentalistiche parlando di programmi.

Sebbene il Krl presenti interessanti spunti per la simulazione psicologica, bisogna dire che sul piano applicativo non ha incon- trato il successo che avrebbe meritato. La sua presentazione ha però suscitato vivaci discussioni ed ha stimolato la nascita di altri strumenti che condensano le capaciti di sistemi di rappresenta- zione della conoscenza e di linguaggi di programmazione (v. ad es. il KL-One, di cui si parla nel $i 7.4).