# Metaprogramming for Tierra-like (artificial life) program?

**URL:** <https://www.ruby-forum.com/t/metaprogramming-for-tierra-like-artificial-life-program/121532>\
**Category:** Ruby\
**Created:** [November 28, 2007, 7:14pm UTC](https://www.ruby-forum.com/t/metaprogramming-for-tierra-like-artificial-life-program/121532 "2007-11-28T19:14:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![philippeqc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e9bcb4/32.png) [@philippeqc](https://www.ruby-forum.com/u/philippeqc)\
**Post date:** [November 28, 2007, 7:14pm UTC](https://www.ruby-forum.com/t/metaprogramming-for-tierra-like-artificial-life-program/121532/1 "2007-11-28T19:14:40Z")

</div>

People,

Would it be possible to use Ruby’s metaprogramming ability to write  
something like Tierra?:

[http://www.nis.atr.jp/~ray/tierra/whatis.html](http://www.nis.atr.jp/~ray/tierra/whatis.html)

[http://www.nis.atr.jp/~ray/pubs/images/](http://www.nis.atr.jp/~ray/pubs/images/)

A quick summary for those who don’t want to look at this site - Tierra  
is an artificial life program using a virtual computer and virtual  
machine code to allow “evolution” of self-reproducing code by mutation  
(bit-flipping). Various “organisms” then evolve including hosts,  
parasites, immune hosts, hyper-parasites etc

It would be a nice programming exercise for me (to learn more Ruby) if  
something like Tierra was possible using metaprogramming (or any other  
ruby facilities).

Regards,

## Phil.

Philip R.

Pricom Pty Limited (ACN 003 252 275 ABN 91 003 252 275)  
GPO Box 3411  
Sydney NSW 2001  
Australia  
Fax: +61:(0)2-8221-9599  
E-mail: removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![philippeqc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e9bcb4/32.png) [@philippeqc](https://www.ruby-forum.com/u/philippeqc)\
**Post date:** [November 29, 2007, 12:50am UTC](https://www.ruby-forum.com/t/metaprogramming-for-tierra-like-artificial-life-program/121532/2 "2007-11-29T00:50:52Z")

</div>

On Nov 28, 12:08 pm, Phil R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ## is an artificial life program using a virtual computer and virtual Phil.
> 
> Philip R.
> 
> Pricom Pty Limited (ACN 003 252 275 ABN 91 003 252 275)  
> GPO Box 3411  
> Sydney NSW 2001  
> Australia  
> Fax: +61:(0)2-8221-9599  
> E-mail: removed\_email\_address@domain.invalid

Sure, you can write a Game of Life in ruby. (You could even get fancy  
and name it something else, like, say…“Tierra” ;P)

[http://rubyforge.org/projects/rlife/](http://rubyforge.org/projects/rlife/)

Regards,  
Jordan

---

<div class="post-metadata">

**Author:** ![philippeqc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e9bcb4/32.png) [@philippeqc](https://www.ruby-forum.com/u/philippeqc)\
**Post date:** [November 29, 2007, 7:20am UTC](https://www.ruby-forum.com/t/metaprogramming-for-tierra-like-artificial-life-program/121532/3 "2007-11-29T07:20:07Z")

</div>

Jordan,

On Thu, 2007-11-29 at 08:49 +0900, MonkeeSage wrote:

> > A quick summary for those who don’t want to look at this site - Tierra
> 
> Sure, you can write a Game of Life in ruby. (You could even get fancy  
> and name it something else, like, say…“Tierra” ;P)
> 
> [http://rubyforge.org/projects/rlife/](http://rubyforge.org/projects/rlife/)

I think you missed how Tierra is actually working . .

## Phil.

Philip R.

Pricom Pty Limited (ACN 003 252 275 ABN 91 003 252 275)  
GPO Box 3411  
Sydney NSW 2001  
Australia  
Fax: +61:(0)2-8221-9599  
E-mail: removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![philippeqc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e9bcb4/32.png) [@philippeqc](https://www.ruby-forum.com/u/philippeqc)\
**Post date:** [November 30, 2007, 12:16am UTC](https://www.ruby-forum.com/t/metaprogramming-for-tierra-like-artificial-life-program/121532/4 "2007-11-30T00:16:52Z")

</div>

On Nov 29, 12:19 am, Phil R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > It would be a nice programming exercise for me (to learn more Ruby) if  
> > > GPO Box 3411  
> > > I think you missed how Tierra is actually working . .  
> > > E-mail: removed\_email\_address@domain.invalid  
> > > Hi Phil,

Sorry about that. That was meant to be tongue-in-cheek. But the answer  
is “yes” – I don’t see why you couldn’t implement something like that  
with ruby and metaprogramming (I thought the rlife project might be a  
good starting point).

Regards,  
Jordan

---

<div class="post-metadata">

**Author:** ![philippeqc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e9bcb4/32.png) [@philippeqc](https://www.ruby-forum.com/u/philippeqc)\
**Post date:** [November 29, 2007, 10:22pm UTC](https://www.ruby-forum.com/t/metaprogramming-for-tierra-like-artificial-life-program/121532/5 "2007-11-29T22:22:55Z")

</div>

Phil R. wrote:

> People,
> 
> Would it be possible to use Ruby’s metaprogramming ability to write  
> something like Tierra?:

Phil,

While I can’t answer your question specifically, I can provide the  
following information that you may find helpful.

Meta programing within ruby is very extensive with full support for  
reflection and class, method, instance variable creation, etc… There  
is virtually nothing that you can’t create, modify, delete meta  
programing wise from within the ruby runtime.

Please check out the methods eval() and class\_eval() at your leisure

hth

ilan
