1. A computer implemented learning method comprising the steps of: (a) providing a computer with an indirectly executable program including: a first instruction that points to and designates machine code stored in a memory as data; a second instruction that points to and designates machine code stored in a memory as directly executable code; a third instruction that alters machine code pointed to by the first instruction; and a fourth instruction that executes machine code pointed to by the second instruction; and (b) controlling the computer to execute the program which performs the steps of: (b1) creating and storing a machine code entity including a directly executable instruction in a memory, said directly executable instruction causing the processor to execute, as a next instruction, an instruction other than an instruction which directly follows said directly executable instruction in the entity; (b2) executing the second instruction to point to the entity; (b3) executing the fourth instruction using input data to produce a result; (b4) evaluating the result using a learning algorithm; (b5) executing the first instruction to point to the entity; (b6) executing the third instruction to alter the entity using an alteration algorithm to include a different directly executable instruction; and (b7) repeating steps (b3) to (b6) until an end criterion is reached.