Copertina
Autore Maria Rita Laganá
CoautoreMarco Righi, Francesco Romani
Titolo Informatica. Concetti e sperimentazioni
EdizioneApogeo, Milano, 2003, Idee & Strumenti , pag. 304, cop.fle., dim. 190x235x17 mm , Isbn 978-88-503-2030-1
PrefazioneRemo Bodei
LettoreCorrado Leonardo, 2004
Classe informatica: applicazioni , informatica: linguaggi , informatica: reti , informatica: sistemi
PrimaPagina


al sito dell'editore


per l'acquisto su IBS.IT

per l'acquisto su BOL.IT

per l'acquisto su AMAZON.IT

 

| << |  <  |  >  | >> |

Indice

Prefazione                                          xi
Introduzione                                      xvii
Ringraziamenti                                     xxi

Parte I - Concetti                                   1


Capitolo 1 - L'hardware del PC                       5

1.1 Il processore, la scheda madre e la memoria      7
    1.1.1 Il processare                              7
    1.1.2 La scheda madre                            8
    1.1.3 La memoria RAM                             9
1.2 Dispositivi di ingresso/uscita                  11
    1.2.1 Il monitor e la scheda video              11
    1.2.2 La scheda audio                           12
    1.2.3 L'hard disk                               12
    1.2.4 Le unità di ingresso/uscita ausiliarie    13
    1.2.5 La connessione di rete                    15
1.3 Altre apparecchiature                           16
    1.3.1 Il contenitore esterno con l'alimentatore 16
    1.3.2 Il mouse e la tastiera                    16
    1.3.3 Lo scanner                                18
1.4 L'evoluzione dell'hardware                      18
1.5 La Macchina di Von Neumann                      19

Capitolo 2 - Il software del PC                     21

2.1 Il BIOS                                         22
2.2 Il sistema operativo                            23
    2.2.1 Il kernel                                 25
    2.2.2 Il file system                            26
    2.2.3 L'interfaccia utente                      28
    2.2.4 Le applicazioni di sistema                32
    2.2.5 Breve storia dei sistemi operativi        33
2.3 Utilità                                         35
    2.3.1 Text editor                               35
    2.3.2 Backup                                    35
    2.3.3 Altre utilità                             36
2.4 Applicazioni per ufficio                        36
    2.4.1 Word processing                           37
    2.4.2 Foglio elettronico                        39
    2.4.3 Programmi di presentazione                41
    2.4.4 Database                                  42
2.5 Altre applicazioni                              42
    2.5.1 Sistemi di sviluppo                       42
    2.5.2 Applicazioni scientifiche                 43
    2.5.3 Applicazioni ludico-multimediali          43
    2.5.4 Applicazioni di rete                      44

Capitolo 3 - Reti                                   45

3.1 Le reti di calcolatori                          46
    3.1.1 Le origini                                46
    3.1.2 La nascita di Internet                    47
    3.1.3 TCP/IP e lo scambio di pacchetti          48
3.2 Uso di Internet                                 50
    3.2.1 Protocollo HTTP                           50
    3.2.2 Protocollo FTP                            52
    3.2.3 Protocollo TELNET                         52
    3.2.4 Il servizio di e-mail                     52
    3.2.5 Newsgroup e chat                          53
    3.2.6 L'ora di Internet                         53
    3.2.7 Protocolli peer-to-peer                   54
3.3 Le reti e le basi di dati                       55
    3.3.1 Architettura centralizzata                55
    3.3.2 Architettura LAN                          55
    3.3.3 Architettura client/server                56
    3.3.4 Architettura a più livelli                57
3.4 Sicurezza                                       57
    3.4.1 Virus                                     58
    3.4.2 Cavalli di Troia                          59
    3.4.3 Altre tipologie di attacco                60
    3.4.4 Intranet                                  62

Capitolo 4 - Archiviazione e trattamento dei dati   63

4.1 La rappresentazione digitale dei dati           63
    4.1.1 Rappresentazione dei numeri               63
    4.1.2 Rappresentazione dei testi                64
    4.1.3 Rappresentazione di immagini e suoni      65
    4.1.4 Compressione dei dati                     66
4.2 Trattamento di testi                            67
4.3 Recupero automatico dell'informazione           69
4.4 Le basi di dati                                 72
    4.4.1 Introduzione                              72
    4.4.2 Dal file system alle basi di dati         74
    4.4.3 Basi di dati relazionali e SQL            76
    4.4.4 La rappresentazione logica e
          la rappresentazione concettuale           80
    4.4.5 Sviluppi e prospettive                    82

Capitolo 5 - Multimedialità                         85

5.1 Le basi tecnologiche della multimedialità       86
    5.1.1 Authoring                                 86
    5.1.2 Memorizzazione                            86
    5.1.3 Trasmissione e distribuzione              87
    5.1.4 Rappresentazione                          87
    5.1.5 Protezione                                87
5.2 Le basi concettuali della multimedialità        88
5.3 Gli ipertesti                                   89
    5.3.1 Ipertesti monotestuali                    92
    5.3.2 Da testo a ipertesto                      93
    5.3.3 Ipertesti pluritestuali: il Web           94
5.4 Le applicazioni didattiche                      98
    5.4.1 Luci e ombre della didattica "automatica" 98
    5.4.2 Didattica in rete                        100
5.5 Le basi di dati multimediali                   101

Capitolo 6 - Linguaggi di programmazione           103

6.1 Algoritmi e programmi                          104
    6.1.1 Algoritmi                                104
    6.1.2 Il concetto di variabile                 107
    6.1.3 Interpreti e compilatori                 108
    6.1.4 Programmi                                109
    6.1.5 Un esempio di programma Pascal           110
6.2 I linguaggi di programmazione                  111
    6.2.1 BASIC                                    112
    6.2.2 COBOL                                    112
    6.2.3 FORTRAN                                  113
    6.2.4 C e C++                                  114
    6.2.5 Java                                     115
    6.2.6 C #                                      116
6.3 I linguaggi di scripting                       116
    6.3.1 I linguaggi di scripting di un sistema
          operativo                                117
    6.3.2 I linguaggi di scripting dei browser     118
6.4 La complessità della computazione              118

Capitolo 7 - Calcolo scientifico                   121

7.1 Il calcolatore e il metodo scientifico         122
7.2 Tipi di errore                                 123
    7.2.1 I numeri reali                           123
    7.2.2 Errore inerente                          124
    7.2.3 Errore algoritmico                       125
    7.2.4 Errore analitico o di troncamento        127
7.3 Problemi diretti e problemi inversi            129
7.4 Grafica tridimensionale                        129
7.5 Caos e frattali                                131
    7.5.1 I frattali                               131

Capitolo 8 - Intelligenza artificiale e robotica   135

8.1 Intelligenza artificiale                       137
    8.1.1 Computer che giocano                     138
    8.1.2 Alberi di ricerca                        138
    8.1.3 Giochi a due giocatori                   142
    8.1.4 Sistemi esperti                          144
8.2 La robotica                                    146
    8.2.1 Sensori e attuatori                      148
    8.2.2 Mobilità                                 150

Parte II - Sperimentazioni                         151


Capitolo 9 - Sperimentazioni
             con il foglio elettronico             153

9.1 Per cominciare                                 153
    9.1.1 Un primo esempio                         154
    9.1.2 Indirizzamento assoluto e relativo       157
    9.1.3 Un esempio più complesso                 159
    9.1.4 Uso delle funzioni predefinite           162
9.2 Stampa e grafici                               164
    9.2.1 Stampa di risultati                      164
    9.2.2 Grafici                                  166
9.3 Un utilizzo del foglio elettronico
    nella ricerca storica                          168
9.4 Usi impropri del foglio elettronico            172
    9.4.1 Righe e record                           172
    9.4.2 Ridondanza ed errori                     172

Capitolo 10 - Sperimentazioni
              con le basi di dati                  177

10.1 DDL in Access                                 178
    10.1.1 Definizione delle tabelle               178
    10.1.2 Definizione degli indici                181
    10.1.3 Definizione dei vincoli                 181
    10.1.4 Osservazioni sui vincoli                184
10.2 Le interrogazioni                             185
    10.2.1 Le interrogazioni su una tabella
           con la clausola WHERE                   186
    10.2.2 Le interrogazioni su una tabella
           con la clausola GROUP BY                188
    10.2.3 Le interrogazioni annidate              188
    10.2.4 Attributi calcolati                     189
    10.2.5 Un'interrogazione su due tabelle        189
10.3 Normalizzazione degli schemi                  192
    10.3.1 Prima forma normale                     192
    10.3.2 Altre forme normali                     193
10.4 Le relazioni tra due tabelle                  194
    10.4.1 Modello concettuale                     195
    10.4.2 Modello logico                          197
    10.4.3 La chiave esterna in Access             199
10.5 Vincoli esprimibili su più tabelle            199
    10.5.1 Vincolo di integrità referenziale       199
    10.5.2 Vincoli di aggiornamento e vincoli
           di cancellazione                        201
    10.5.3 Il trigger                              201
10.6 Interrogazioni su una base di dati            201

Capitolo 11 - HTML e XML                           205

11.1 Il linguaggio HTML                            206
    11.1.1 Struttura dei tag                       207
    11.1.2 Semplici elementi di formattazione      209
    11.1.3 I riferimenti assoluti e relativi       213
    11.1.4 Inserimento di immagini                 214
    11.1.5 Validazione                             219
    11.1.6 Forma e contenuto                       221
    11.1.7 Pubblicazione e indicizzazione          223
11.2 Applet e plugin                               224
    11.2.1 I programmi dentro le pagine            224
    11.2.2 I plugin: estensioni del browser        226
11.3 XML                                           228
    11.3.1 La persistenza dei dati                 228
    11.3.2 Il linguaggio XML                       229
    11.3.3 Parsing                                 231
    11.3.4 DTD, schemi e processori                233
    11.3.5 XHTML                                   236

Capitolo 12 - Gestione di una piccola rete locale  239

12.1 Collegamento di più computer                  240
    12.1.1 La connessione a livello fisico         240
    12.1.2 Configurazione logica                   243
    12.1.3 Condivisione dei dati tra un portatile
           e un desktop                            245
12.2 Accesso a Internet                            246
    12.2.1 Accesso a Internet via rete telefonica
           commutata                               247
    12.2.2 Accesso a Internet via ISDN             248
    12.2.3 Accesso a Internet via ADSL             248
12.3 Sicurezza delle reti                          249
    12.3.1 Password                                250
    12.3.2 Antivirus                               250
    12.3.3 Limitazione dei servizi                 251
    12.3.4 Firewall                                251
12.4 Sicurezza nell'uso dell'e-mail                252

Capitolo 13 - Programmazione e complesità          255

13.1 La ricorsione                                 255
13.2 Il calcolo dei numeri di Fibonacci            256
    13.2.1 Un programma ricorsivo                  257
    13.2.2 Un programma iterativo                  257
    13.2.3 Prestazioni a confronto                 258
13.3 Il calcolo dei numeri primi                   259
    13.3.1 Un programma "scemo"                    259
    13.3.2 Un programma "furbo"                    260
    13.3.3 Un programma altamente sofisticato      260
    13.3.4 Prestazioni a confronto                 261
13.4 La torre di Hanoi                             262

Capitolo 14 - Uso di un word processor             267

14.1 Tecnologia per la composizione e la stampa    268
14.2 La struttura di un documento                  269
    14.2.1 Elementi della pagina                   269
    14.2.2 Elementi del documento                  271
    14.2.3 Elementi tipografici                    272
    14.2.4 Le regole d'oro per scrivere bene       275
14.3 Qualche sperimentazione con Word              276
    14.3.1 Indici e numerazioni automatiche        276
    14.3.2 Word e Access                           278

Appendice A - Le unità di misura                   281
Glossario                                          285
Bibliografia                                       301
 

 

| << |  <  |  >  | >> |

Pagina xvii

Introduzione


Un'esigenza diffusa nella società in cui viviamo, sommersi da nuovi strumenti che sembrano garantirci quasi una vita da semidei, è quella di acquisire consapevolezza culturale delle loro effettive capacità, per poter poi usarli al meglio, quando occorre, nel lavoro e nel tempo libero. Spesso, però, guide e manuali ci sommergono con dettagli talmente minuziosi da diventare inutili per un problema particolare e certo inadatti a offrire una visione sintetica.

Talvolta anche i docenti di corsi universitari, per fornire ai loro allievi una visione d'insieme coerente e completa, devono dedicare tempo all'insegnamento dell'alfabetizzazione informatica prima di entrare nel merito delle applicazioni specifiche. La stessa alfabetizzazione informatica ha profondamente cambiato obiettivo: negli anni '60 si insisteva nel far conoscere i principi di programmazione dando molta importanza alla capacità di calcolo (allora prettamente scientifico o commerciale) della macchina; oggi, invece, l'insegnamento dei rudimenti informatici non riguarda tanto il computer, quanto piuttosto le applicazioni, che investono numerosi campi della vita di ogni giorno. Le competenze che così si acquisiscono creano una nuova generazione di artigiani che plasmano nuovi tipi di creazioni. Si sono allora diffusi i corsi di "guida per computer"; se però si desidera una visione di insieme non limitata alla sola pratica, questi insegnamenti hanno la necessità di essere integrati alla luce di un'effettiva cultura informatica. È infatti importante non fare del computer un giocattolo per "scimmie ammaestrate", ma uno strumento di pensiero e di crescita.

Non potevamo iniziare questo testo senza uno sguardo alla storia dell'informatica. Pochi eventi, infatti, hanno avuto maggiore impatto nella società umana di quanto lo abbia avuto la nascita dei calcolatori elettronici.

Per capire che cosa è accaduto è necessario percorrere brevemente la storia del progresso tecnologico fin dalle origini. La prima tappa della civiltà umana è stata certamente la scoperta del fuoco e il suo utilizzo. Con il fuoco "rubato agli dei" si poteva cuocere il cibo, sopravvivere ai lunghi inverni, illuminare la notte, proteggersi dalle belve, bruciare le città nemiche; infine primo anello di una catena che non si sarebbe più spezzata - il fuoco era fondamentale per lavorare i metalli. Con il fuoco, i metalli e la ruota furono costruiti i carri; con i carri, i cavalli e le strade, le distanze cessarono di essere insormontabili

Il secondo grande passo avanti nello sviluppo della tecnologia è stato l'introduzione del metodo scientifico, un passaggio nella storia della cultura indissolubilmente legato al nome di Galileo. Per la prima volta, e non senza suscitare opposizioni, fu affermato che la Natura segue leggi matematiche comprensibili e che si può intervenire con la Scienza per costruire macchine che permettano di esplorare la Natura, fare previsioni e modificare gli eventi (si pensi al telescopio e al microscopio, ma anche agli occhiali e alle macchine da stampa). Anche qui bisogna sottolineare la presenza di una catena senza fine: le conoscenze scientifiche generano altre conoscenze e possibilità tecnologiche che a loro volta generano nuove conoscenze e nuove macchine. Si immagini un ingegnere espertissimo, che sia anche un valente artigiano, catapultato "nudo" su un'isola ricca di ogni risorsa naturale ma assolutamente primitiva. Egli sa benissimo cosa gli servirebbe per costruirsi una lancia dotata di motore fuoribordo, oppure un elicottero, ma per realizzare queste macchine dovrebbe ripercorrere in poco tempo tutto il cammino tecnologico dell'umanità.

Dopo la rivoluzione industriale, dominata dalla macchine fatte di ferro e acciaio e basata sullo sfruttamento dell'energia, una nuova rivoluzione si è stagliata all'orizzonte, basata invece sull'informatica.

L'era dell'informatica è nata dalla confluenza di tre grandi filoni del sapere e dell'abilità umana.

* L'algoritmica, ovvero la disciplina delle "ricette" per risolvere problemi "difficili". I più antichi algoritmi risalgono ai cinesi, ai greci e agli arabi.

* L'ingegneria, ovvero la disciplina del "fare le macchine".

* La metamatematica, ovvero quella branca della matematica che studia le possibilità della matematica stessa.

Nel corso dell'ultimo secolo, finalmente, si è formata una teoria matematica del calcolo e, contemporaneamente, l'ingegneria elettronica ha fornito un modo di immagazzinare ed elaborare l'informazione sotto forma di bit. Questo processo ha permesso di costruire i primi computer, che subito sono stati usati per progettare, costruire e programmare computer più potenti. Si è scatenata una reazione positiva fortissima: la disponibilità di macchine per calcolare dà impulso alla tecnologia (oggi nessuna attività minimamente tecnologica può fare a meno del computer), che a sua volta dà impulso al progresso informatico (per costruire "bene" i computer occorrono computer).

Ne sono risultati una crescita esponenziale della potenza di calcolo e un abbattimento dei costi, uniti a una contemporanea "invasione" in ogni attività umana. Le autostrade informatiche hanno connesso l'intero globo e attraverso Internet (la Rete per antonomasia) eventi politici o risultati sportivi possono essere conosciuti in tutto il mondo in pochi minuti.

Non è quindi errato affermare che al giorno d'oggi l'alfabetizzazione informatica riveste un'importanza paragonabile a quella rivestita dall'alfabetizzazione vera e propria agli inizi del Novecento.

Proprio per questo motivo l'insegnamento dell'informatica si va diffondendo in tutti i percorsi formativi universitari come una materia di base indispensabile alla corretta fruizione dei contenuti scientifici o umanistici dei vari corsi di laurea.

Il presente testo cerca di rispondere a questa esigenza in modo originale, evitando un'esposizione pedissequa e manualistica. Piuttosto, abbiamo cercato di dare, nella prima parte, i concetti essenziali relativi alla struttura delle macchine, ai programmi che le accompagnano e ai fondamenti della scienza informatica. Nella seconda parte sono invece forniti spunti più pratici, che dovrebbero permettere di "toccare con mano" gli aspetti concreti dell'informatica, almeno con riferimento agli argomenti di maggiore interesse.

Ci auguriamo che queste pagine risultino sintetiche ma chiare, compatibili con la cultura di uno studente in uscita dalla nostra scuola media superiore. Si tratta di un vecchio strumento (un libro cartaceo) con una nuova integrazione (gli esempi illustrati nella parte "sperimentale" del testo si possono reperire sul sito della casa editrice, all'indirizzo www.apogeonline.com/libri/02030/allegati/).

| << |  <  |  >  | >> |

Pagina 103

6

Linguaggi di programmazione


Quando erano solo gli scienziati a servirsi dei computer, la scrittura di programmi e il loro utilizzo facevano parte del ciclo quotidiano del lavoro: come i martelli pneumatici e le gru da venti tonnellate, i computer erano strumenti professionali manipolati solo da esperti professionisti. Col passare del tempo i computer sono diventati sempre più simili alle lavastoviglie e alle automobili, ovvero macchine sofisticate, ma che vengono utilizzate dal vasto pubblico e, come nessuno è in grado di cambiare il cestello della propria lavatrice, e non se ne preoccupa minimamente, così solo una piccola parte degli utenti di computer ha la capacità (e la necessità) di poterli programmare. D'altra parte, però, solo potendo scrivere applicazioni pensate e progettate da noi stessi riusciremmo a sfruttare veramente la versatilità del computer per adattarla al meglio alle nostre esigenze.

I primi linguaggi di programmazione erano orientati essenzialmente al trattamento di dati, scientifici o commerciali. Con l'avvento dei computer multimediali il concetto di dato si è evoluto e i moderni linguaggi di programmazione devono permettere sia di trattare dati eterogenei: numeri, testi, immagini, suoni, filmati, sia di configurare complicate interfacce per il dialogo con l'utente (si pensi, per esempio, alla struttura di un browser Web o di un qualunque videogioco). Molto spesso le applicazioni per scrivere programmi in un determinato linguaggio ci forniscono anche un sistema di sviluppo, un insieme di strumenti che ci permette di scrivere programmi, controllarne la correttezza sintattica, farli eseguire, mantenere tutti i sorgenti in modo ordinato, cercare gli errori (il cosiddetto debugging) e confezionare il prodotto finito.

Non è però possibile vedere in maggiore dettaglio i linguaggi di programmazione se prima non descriviamo dal punto di vista teorico gli algoritmi, ovvero ciò che i linguaggi permettono di esprimere attraverso i programmi.


6.1 Algoritmi e programmi

6.1.1 Algoritmi

Per algoritmo si intende una sequenza finita di passi discreti non ambigui che porta alla soluzione di un problema. Questa definizione è alquanto involuta e deve essere interpretata parola per parola. Innanzitutto, l'algoritmo è costituito da una sequenza (ovvero un insieme ordinato) finita di passi; l'algoritmo quindi è descrivibile con un numero finito di parole e può essere oggetto di comunicazione tra esseri umani oppure tra uomini e macchine. I passi devono essere discreti, ovvero ben distinti l'uno dall'altro - sono escluse azioni continue quali potrebbero essere un colpo della racchetta nel tennis, una mossa di karate o una nota suonata sul violoncello - e non ambigui: questa è la caratteristica più importante che differenzia un vero algaritmo da una qualunque sequenza di parole. Perché i passi siano non ambigui bisogna che sia definito in modo altrettanto non ambiguo un linguaggio di comunicazione provvisto della sua sintassi e della sua semantica. Inoltre, sia chi comunica l'algoritmo sia chi lo deve eseguire devono essere in grado di comprendere questo linguaggio. Una volta strutturato, un algaritmo permette di risolvere il problema per cui è stato pensato.

Bisogna notare che il concetto di algoritmo è indipendente dall'informatica (la Figura 6.1 mostra la definizione di Algorismo tratta dalle edizione del 1612 del Dizionario della Crusca). Talvolta per rendere comprensibile il concetto di algoritmo si utilizzano come esemplificazioni le ricette di cucina o le indicazioni stradali, ma gli esempi più significativi si trovano in matematica e in informatica, dove sequenze anche molto complicate di azioni opportunamente codificate possono servire per la comunicazione tra studiosi di particolari procedimenti oppure per far compiere ai computer determinate azioni.

Vediamo alcuni semplici esempi di algoritmi che trattano argomenti matematici. Usiamo il linguaggio naturale evidenziando in grassetto alcune parole chiave (se ... allora ... altrimenti, scambia, leggi, stampa, vai, fermati) che rappresentano azioni elementari. Per far eseguire effettivamente questi algoritmi da un computer è necessaria la traduzione in un linguaggio di programmazione, come vedremo in seguito. Nella successiva formulazione degli algoritmi, per rendere più chiaro al lettore il significato delle azioni, scriveremo tra parentesi in corsivo i nostri commenti.

| << |  <  |  >  | >> |

Pagina 135

8

Intelligenza artificiale e robotica


L'intelligenza artificiale (IA) e la robotica sono discipline affini e complementari: l'una tenta di realizzare algoritmi che manifestino "intelligenza", l'altra di fornire a essi un corpo.

Secondo una corrente di pensiero, i progressi che saranno compiuti dalle suddette branche dell'informatica permetteranno la realizzazione di robot antropomorfi, magari anche più bravi degli umani, come R. Daneel Olivaw, del quale si narra nei romanzi di fantascienza di Isaac Asimov. Forse allora ci sentiremo orgogliosi di aver effettuato un atto creativo divino, ma oggi siamo ancora lontani da tale meta.

In ogni caso, bisogna prima rispondere alla domanda: "Che cosa è l'intelligenza?". Condividiamo tutti l'opinione che certi comportamenti siano frutto di processi logici, e non abbiamo dubbi nel ritenere che chiunque, anche una macchina, riesca a battere campioni professionisti nel gioco degli scacchi, manifesti una forma di intelligenza. Tuttavia vincere una partita agli scacchi è un compito sì molto difficile, ma anche troppo limitato per farci concludere che stiamo interagendo con un essere dotato di una "mente". Si potrebbe pensare che sommando in una stessa macchina diversi comportamenti "intelligenti" si raggiunga lo scopo prefissato. Sembrerebbe pertanto trattarsi di una questione di quantità. Dobbiamo dunque assemblare componenti elettronici e scrivere software per riprodurre mille comportamenti intelligenti? O dobbiamo arrivare a duemila? O siamo totalmente e ingenuamente fuori strada? Bisogna concentrarsi sulla domanda iniziale: "Che cosa è l'intelligenza?". "Quello che il mio test misura", è la risposta tautologica dello psicologo, risposta pragmatica ma poco soddisfacente per i nostri scopi.

Al nostro problema viene incontro un famoso e lucidissimo articolo dal titolo "Computing Machinery and Intelligence", scritto nel 1950 da Alan Turing. Le sue riflessioni in quelle pagine lo rendono in effetti il padre dell'intelligenza artificiale, in quanto egli ebbe per primo l'intuizione che il computer poteva non essere solo una macchina per far conti. Turing era un matematico con la passione della crittografia e aveva aiutato la sua patria, l'Inghilterra, durante la seconda guerra mondiale, decifrando il codice Enigma con cui comunicavano i nazisti. Era anche uno studioso di informatica e nell'articolo proponeva un test per decidere se una macchina è o no in grado di pensare. Il suo test è profondamente diverso da quello degli psicologi e da lui stesso chiamato "gioco dell'imitazione". L'esperimento consiste nel mettere un esaminatore umano che funga da arbitro davanti a un terminale (Turing parlava di telescrivente); dall'altra parte del filo può esservi un altro umano oppure un computer programmato per simulare l'intelligenza umana. Il compito dell'arbitro è stabilire, analizzando le risposte che riceve alle proprie domande, se sta comunicando con una macchina oppure con una persona in carne e ossa. Un software in grado di superare questo test (ovvero di spacciarsi per umano con un esaminatore umano) sarebbe, secondo Turing, un essere pensante. Naturalmente, perché il test sia efficace, gli argomenti devono essere del tutto liberi e a discrezione dell'arbitro. Un forno a microonde con interfaccia vocale potrebbe forse sostenere un semplicissimo dialogo sullo stato di cottura delle uova ("non mettetele mai con il guscio" ... "ancora cinque minuti" ... "ora sono cotte"...), ma si troverebbe in gravi difficoltà a discutere di filosofia.

Il test di Turing provocò molto scalpore ai suoi tempi. L'idea che il pensiero, una prerogativa umana, potesse essere condiviso da una "ferraglia", non era molto gradita; pressappoco con la stessa ripugnanza era stata inizialmente trattata l'idea di Darwin che ci designava primi cugini delle scimmiette che sollazzano i visitatori dello zoo.

Le obiezioni a Turing che vengono oggi da alcuni studiosi di neuropsichiatria hanno invece tutt'altra natura. "La migliore dimostrazione che le macchine pensino siamo noi. - essi affermano - Noi siamo macchine e pensiamo". Quello che viene contestato è che gli algoritmi siano in grado di esprimere l'intelligenza tout-court. Non può, essi dicono, una semplice manipolazione di simboli (cosa a cui si riduce un qualunque programma) coincidere con l'intelligenza.

Osserviamo comunque che il punto importante è in effetti un altro: aver deciso che il test proposto da Turing è davvero un buon criterio di comportamento intelligente. E ciò, nella polemica suscitata, era in effetti sempre stato considerato indiscutibile. Questa accettazione comporta comunque considerare l'intelligenza dal punto di vista "sperimentale" delle sue capacità invece che da quello "metafisico" della sua natura.

La tesi secondo cui il gioco dell'imitazione può essere svolto e portato a buon termine dal computer si chiama "Tesi Forte dell'intelligenza artificiale". Il suo principio di fondo è che la mente è un sistema di computazione. Gli scienziati che lavorarono lungo questo filone rincorsero la messa a punto di sofisticati programmi che imitassero le capacità cognitive umane. Questa ambizione è stata (per il momento) da molti accantonata lasciando posto alla Tesi Debole: "Possiamo rappresentare e automatizzare solo alcuni processi intelligenti, ad esempio quelli che, come il gioco degli scacchi, obbediscono a un insieme di regole".

Concludendo la nostra breve introduzione invitiamo a leggere il notevole testo di Dennett e Hofstadter L'Io della mente, che offre molti spunti di riflessione, qualunque sia il punto di vista del lettore.

| << |  <  |