CyberLife
Descriviamo in questo capitolo CyberLife, una tecnologia di
vita artificiale basata sullapplicazione di metafore
biologiche a problemi di software-complexity. CyberLife si basa
su un insieme di principi filosofici e asserzioni :
1. Pensare il computer come un contenitore per cyberspazio,
pensare alla programmazione come alla creazione di macchine che
popolano il cyberspazio.
2. Sciami di semplici oggetti interagiscono tra loro hanno
maggiore potenza rispetto a quella che può fornire una singola
struttura top-down, inoltre essi minimizzano esplosioni
combinatoriali.
3. La vita è una complessa rete di cicli feedback che permette
al sistema di aggirarsi al limite del caos.
4. Il modo migliore, se non lunico, per creare sistemi
viventi è costruire modelli dei building blocks dei quali sono
costituite le forme viventi.
Riguardo il punto uno, il cyberspazio può essere definito
come un luogo dove due persone si incontrano mentre quando
sono in comunicazione telefonica. Questa definizione può essere
estese a qualsiasi comunicazione di rete e internet può essere
pensato come un contenitore di cyberspazio o come un canale
dentro il cyberspazio.
Con laffermarsi del concetto di realtà virtuale il
cyberspazio è diventato un mondo dentro il computer,
le persone possono camminarci, vederlo, incontrarsi, manipolarlo.
Lidea che un computer sia un contenitore e un supporto
vitale per il cyberspazio ha iniziato ad avere profonde
implicazioni nella metodologia di programmazione. Originariamente
i computer furono progettati per essere delle veloci macchine di
calcolo, in seguito sono state considerate delle macchine per
eseguire algoritmi. La recente adozione della Programmazione
Object-Oriented ha cambiato questo punto di vista e considera il
computer come un mezzo per modellare oggetti, ognuno dei quali ha
certe proprietà, ed è la relazione tra queste proprietà
che descrive il comportamento del sistema: il paradigma moderno
è quindi quello in cui il programmatore costruisce oggetti che
stanno nel cyberspazio dentro il computer. LObject-Orientation
è diventata popolare perché porta vantaggi come portabilità,
riusabilità e robustezza.
Tradizionalmente la scienza ha usato un approccio analitico e
riduzionista: per studiare qualcosa di complesso lo si divide in
parti e si studiano le parti; se il modello è troppo complicato
se ne cerca uno più semplice. Nonostante questo metodo abbia
avuto grande successo, ha delle limitazioni in quanto spesso è
impossibile predire il comportamento del sistema studiando le sue
parti. Tutti sanno che lintero è più grande della somma
delle sue parti, se studi solo le parti manca qualcosa di
cruciale. Questo qualcosa è conosciuto come comportamento
emergente. Per esempio una formica da sola non è in grado di
progettare, memorizzare o comunicare il piano per la costruzione
di un formicaio, tuttavia un gruppo numeroso di formiche può
costruire delle strutture sofisticate senza bisogno di una
formica architetto capo. Un altro esempio è quello di una goccia
dacqua. Noi possiamo costruire le equazioni differenziali
della goccia, ma queste risulteranno inutili per descrivere il
comportamento di una cascata. Il principio che guardando una
goccia non possiamo descrivere la cascata è chiamato emergenza e
la scuola di pensiero che sfrutta lemergenza per costruire
grandi edifici da molti e piccoli building blocks è conosciuta
come bottom-up.
Una conseguenza pratica del pensiero bottom-up per un
programmatore è che esso lo aiuta a gestire la complessità.
Immaginiamo di voler definire un adventure game in termini di
albero binario di decisione (approccio top-down). La prima
decisione può essere presa in due modi e ciascuna scelta
porta ad unaltra decisione definendo così quattro percorsi
nellalbero. Ad esempio 32 decisioni producono 4.294.967.296
possibili percorsi per un singolo giocatore. Aggiungendo
giocatori e considerando che le scelte di ciascuno influenzano
gli altri, il problema diventa molto complicato per il fatto che
è necessario considerare tutti i casi possibili. Se il
programmatore non considera tutte le possibili soluzioni la
risposta del sistema può essere errata o inesistente.
Un grande vantaggio degli esseri viventi è che essi sono in
grado di risolvere problemi imparando dallesperienza e
generalizzando. Quindi se noi fossimo in grado di creare forme di
vita artificiali per il nostro progetto, saremmo capaci di
scegliere i problemi che noi vogliamo che queste risolvano. Ogni
creatura vivente è composta da centinaia di miliardi di cellule
che eseguono milioni di azioni differenti, ciascuna dando il suo
piccolo contributo senza la supervisione di una cellula master.
Ciascuna contribuisce inconsciamente al funzionamento dellindividuo
(emergenza). In tutto ciò sta un principio molto importante:
general-purpose building blocks, il cui comportamento è
controllata da dati (geni, ambiente locale), la cui interazione
produce il comportamento del sistema, che non può essere
predetto, non è residente e non è controllato da nessuna
singola parte.