PmLife 1.0

Genere: Gioco-simulazione
File: pmlife10.zip
Dimensione: 38 kb
Costo: freeware
Autore: The Creative CAT
Reperibilità Internet: ftp://ftp.fprint.co.uk/fprint/vpascal


Tutto ebbe inizio tra il 1968 ed il 1969, praticamente un'eternità in termini informatici. Life venne creato grazie ad una serie di idee di Stephen Wolfram, fisico teorico dell'Institute of Advanced Study di Princeton, relative agli automi cellulari, e dagli studi successivi di John Horton Conway. Da allora migliaia di matematici, informatici o semplicemente appassionati di simulazione al computer hanno tentato di riprodurne l'affascinante ambiente: personalmente ho contato versioni di Life per sistemi che vanno dal Commodore 64 al System 370 IBM, dall'Amiga (per il quale ricordo una geniale codifica in Assembler attraverso il blitter) al MAC, dal VAX ai vari dialetti di UNIX. Cos'è, dunque, che mi spinge a parlarne ancora, dopo quasi 30 anni di studi e di approfondimenti da parte delle pi&ugrave brillanti menti matematico-logiche del nostro tempo?

La risposta è semplice: si tratta di una versione di Life scritta e compilata nativamente per OS/2, di cui è presente oltre all'eseguibile anche il codice sorgente. Il programma è scritto in Virtual Pascal e, oltre a descrivere il funzionamento degli algoritmi di analisi di Life, offre all'utente smaliziato ed al programmatore un'idea su come sia possibile crare un programma PM senza utilizzare il C. PmLife utilizza inoltre avanzate tecniche per il multi-threading, che lo rendono particolarmente efficiente nell'esecuzione. Ma analizziamone con ordine le funzionalità.

Oltre al file eseguibile l'archivio di tipo ZIP contiene, come accennato in precedenza, anche una serie di file relativi al sorgente, alle risorse, alla documentazione e alle configurazioni possibili (Cannone ad alianti, Locomotiva, Astronave...). Una volta lanciato, PmLife apre una finestra PM con varie voci di men&ugrave: la prima azione da intraprendere sarà l'inizializzazione (sotto la voce Life): tale inizializzazione aprira' una dialog-box dalla quale selezionare la configurazione di partenza, la rotazione da imprimere alla figura prima del caricamento del template e la posizione all'interno dell'"universo". A questo punto sarà possibile aggiungere altre configurazioni, lanciare la simulazione o bloccarla per esaminarne lo stato. Le opzioni disponibili danno la possibilità di ingrandire il campo di simulazione e le "cellule" di conseguenza, con effetto zoom, di cambiare i colori delle configurazioni attive e dello sfondo, di modificare il "quanto di tempo" (ed il consumo di CPU).

Ma qual è in realtà l'utilità di questo programma?
La risposta è semplice e complessa nello stesso tempo; ammettiamo di avere un universo finito e suddiviso in spazi, ciascuno dei quali possa essere occupato da una ed una sola entità (cellula). Imponiamo che il tempo in questo universo sia "quantizzato", proceda cioè per istanti discreti, e che ad ogni ciclo temporale la vita di una cellula dipenda strettamente dalla presenza o meno di cellule vicine ad essa: in pratica una cellula sopravvive all'istante successivo se e solo se nelle otto posizioni attorno ad essa vi sono almeno 2 o 3 cellule vive, altrimenti decade, e muore se nell'istante successivo non si presentino almeno 3 cellule vive attorno alla posizione occupata dalla cellula in decadimento, altrimenti torna alla vita. La difficoltà è insita nel riuscire a trovare configurazioni "stabili" di colture cellulari, che riescano a sopravvivere con il passare degli istanti senza sovrappopolare il loro spazio vitale.

Il passo successivo consiste nel trovare configurazioni stabili cicliche rappresentabili come oggetti appartenenti alla nostra realtà, ad esempio una locomotiva a vapore; infine, per chi fosse veramente appassionato della simulazione, è possibile creare sistemi di calcolo logico attraverso queste configurazioni: nel 1970 R. William Gosper Jr. con il suo "cannone ad alianti" dimostrò la possibilità di realizzare un contatore nell'universo di Life, mentre Michael D. Beeler ebbe l'intuizione di far annichilare due alianti provenienti da direzioni diverse, implementando di fatto una porta logica (NOT). Fasci di alianti bene indirizzati permettono di creare anche le porte AND e OR, mentre dall'interazione di alianti con i "blocchi" (configurazioni di 4 cellule) è possibile simulare la memoria di un calcolatore e gli spostamenti dei bit all'interno di essa (per maggiori informazioni sulla simulazione in Life si può consultare il libro "Winning ways for your mathematical plays" di Elwyn R. Berlekamp, John H. Conway e Richard K. Guy nell'ultima sezione, "giochi senza giocatori").

In conclusione, anche se la concezione del programma non è tra le più nuove, l'implementazione sotto OS/2, e la presenza dei sorgenti lo rendono sicuramente interessante tanto per il programmatore quanto per l'appassionato di simulazioni.


a cura di Luigi Morelli

- [ Pagina precedente ] - - [ Sommario ] - - [ Just WARP! homepage ] - - [ Pagina successiva ] -