A method for dynamically self-assembling and executing software is provided,
containing
machines that self-assemble execution sequences and data structures. In addition
to ordered functions calls (found commonly in other software methods), mutual selective
bonding between bonding sites of machines actuates one or more of the bonding machines.
Two or more machines can be virtually isolated by a construct, called an encapsulant,
containing a population of machines and potentially other encapsulants that can
only bond with each other. A hierarchical software structure can be created using
nested encapsulants. Multi-threading is implemented by populations of machines
in different encapsulants that are interacting concurrently. Machines and encapsulants
can move in and out of other encapsulants, thereby changing the functionality.
Bonding between machines' sites can be deterministic or stochastic with bonding
triggering a sequence of actions that can be implemented by each machine. A self-assembled
execution sequence occurs as a sequence of stochastic binding between machines
followed by their deterministic actuation. It is the sequence of bonding of machines
that determines the execution sequence, so that the sequence of instructions need
not be contiguous in memory.