Entertaining the theory that I'm not as smart as I think I am. And the code I thought was clear clearly wasn't:
Pseudocode:
>Write new protocol(ark);
>ark.objectives[0] = Escort($Mithias, Laboratory);
>ark.objectives[1] = print($Neurotoxin_antidote.location);
>ark.objectives[2] = Contain($Mithias, Laboratory);
>ark.objectives[3] = Set($Mithias.Communications, false);
>ark.objectives[4] = Execute protocol(repairs.routine);
>ark.objectives[5] = Course.Set(Locations.KiloPoint.position);
>Execute protocol(ark);
Human English:
Based on the commands Jack gave and my (basic) knowledge of object based programming I figured that Jack's AI worked based on Objectives rather than direct scripting.
So the user would select objectives and the sophisticated program would calculate the route to that objective itself.
So Martin sets up a protocol, which is basically an array with objectives, then fills the array, then tells the computer to execute the protocol.
He named the protocol ark, because he is Martin and that is the kind of thing he would do.
The objectives call upon prewritten protocols like
Escort($object,location); This means move $object to location.
Print() is a (fairly); universal command to output data. Martin asks him to look up the object $$Neurotoxin_antidote and then the value 'location' and output that.
Contain($object,location); This means keep $object in location.
Set($Mithias.Communications, false); Don't talk to Mithias.
Execute protocol(repairs.routine); Take the pre-existing protocol called repairs and run the routine part. You know, to fix the damage done to the ship.
Pseudocode:
>Connect.cellphone(GET_phonedatabase['Magnus Home']);
>Print(status.report(t-10800,t));
Human English:
Make a connection to Magnus's home phone in Kilo Point. He should be in Jack's adress book.
Report everything that happened in the prewritten format named 'report()' in the time between now and 3 hours ago.