Il paradigma a fondamento di questo approccio e' quello degli Automi
Cellulari, i quali sono strutturati nel seguente modo: si immagina una
regione di spazio (con dimensioni ed estensione arbitrarie) suddivisa
uniformente da una griglia regolare (come ad esempio una struttura cristallina).
All'interno di ogni cella si immagina una entita' che svolge delle operazioni
sulla base dei dati in suo possesso e delle informazioni che le giungono da
altre celle (adiacenti e non).
In pratica si immagina ogni cella occupata da un Automa a Stati Finiti (tutti
identici tra loro) e da un certo numero di dati distribuiti uniformemente
nelle celle. Ogni automa modifica i propri dati (o meglio quelli della propria
cella) sulla base di elaborazioni
(transizioni) che hanno come argomento i dati locali e i dati letti da altre
celle.
Per esempio si puo' cercare di simulare l'allagamento di un bacino idrico di forma qualunque. Per fare questo si potrebbe suddividere la mappa del bacino con una griglia bidimensionale e caratterizzare ogni cella con due valori: il livello medio del terreno (nell'area della cella) e l'altezza della colonna di liquido. In seguito viene definita una regola che per ogni cella stabilisce, sulla base del livello complessivo terreno piu' liquido proprio e dei vicini adiacenti, quanto liquido acquisire o cedere e da (o verso) quali direzioni realizzare lo scambio.
E' quindi chiaro che il sistema si fonda sui seguenti presupposti:
La programmazione di questa architettura consiste quindi nel definire le dimensioni dello spazio (intese come numero di assi e loro estensione), le relazioni reciproche tra celle (topologia dei collegamenti), le regole di transizioni (cioe' la dinamica del sistema in simulazione), e infine lo stato iniziale del sistema (i valori di partenza in ogni cella).
In questo senso si definisce il concetto di Materia Programmabile
in quanto un programma, in questa architettura, non si sviluppa tramite un
algoritmo ma attraverso la definizione di uno spazio con le proprie
caratteristiche "fisiche" e le proprie dinamiche.
Al programmatore e' data ampia liberta' di scelta sia riguardo alle geometria
del sistema che alle relazioni causa-effetto tra le sue parti. L'approccio
algoritmico e' consentito e permette di realizzare dinamiche piu' complesse
(unendolo al concetto precedentemente esposto) ma c'e' un prezzo da pagare
in termini di prestazioni.