Hmm, I feel like the new syntax is actually going to be more restrictive than the current one. All those rules.... I'd rather relax them.
The syntax is backward compatible, so I'm not sure what you mean by more restricitve. At the very most it's as restrictive, unless I'm missing something.
1. "Stop" command should not be required for anything. When the program meets "cond" and "body" and "else", it just assumes that there was a "stop" in front of it.
Very possible. The only problem of course is that we have no way of assigning Junk DNA to stretches of the genome (assuming that is a problem of course), which is what I would like to see happen. In this method, the DNA will or more less be expressed 100% all the time. But as I said before, all we have to do is think up a rule system we like and go with it. I wouldn't be opposed to this idea at all.
2. Instead of Noble genes we can simply have nested conditions.
The only reason I didn't suggest nested conditions of indefinate depth was that it seemed too powerful to me, and caused problems with the syntax of the above stop commands. Again, I'll go with popular opinion on this one. Either one accomplishes the same objective.
Noble genes allow you to quickly and easily see which level a cond, start, etc, is on. As well as clearly defining the roles each is to play, since Noble BODY commands can't perform any store operations.
Also, I see problems if you want to go up a level in the nested structure. Like:
cond
blah
..cond
..blah..
back down to the original level
but then I guess we'd use the stop command?
3. I don't like the select command, because the same can be accomplished using commands that exist already. Keep it simple.
Select makes things easier only if you have long runs of genes all doing the same thing for slightly different values. Such as a multibot assigning tasks for each cycle after it's born. In such a case:
cond
*.robage 0 =
start
stop
cond
*.robage 1 =
start
stop
cond
*.robage 2 =
start
stop
cond
*.robage 3 =
start
stop
becomes:
*.robage select
cond
0
start
stop
cond
1
start
stop
cond
2
start
stop
cond
3
start
stop
stop
Which not only is slightly shorter, but decreases the chance of the genes drifting apart during mutations. That is, all the genes are involved in the same logical operation, so they should probably be grouped in some way inside the genome. If you or mutations change the condition from robage to something else, the effect can effect multiple genes at once, instead of having to go through each one one at a time.
Carlo:All the ideas are borrowed straight from computer languages. The advantage of select is the same advantage it has in all languages, it helps combine what otherwise would be long stretches of almost identical if statements.
The advantage of sleep is that it allows single genes to work over multiple cycles. I don't know if you've tried coordinating actions that take more than one cycle, but it isn't that easy. sleep definately makes it easier.
Noble genes allows the genome to be constructed as a large Finite State Machine, with much broader states than allowed currently. So you can have 'hunt' mode, 'find a mate' mode, etc, and the appropriate genes are all turned on and off quickly and concisely.
If instead you added the state condition to all genes manually, the chances of these interrelated genes drifting apart through mutations becomes more probable. That's fine for some sims, but others would like to see more specific changes to the details instead of the structure.
The changes in DNA structure allow Junk DNA to form, helps make the structure less rigid, allowing mutations to change order of genes, stop commands, etc. more easily. A stop can be deleted, combining two genes into one, etc.
The sleep command is my favorite. It's relatively simple, but solves alot of the problems of forming complex multibot structures.