The programming issue is nearly as hard as that
One thing that must be remembered is that when nanoprobes are built, they will be based to a large degree on biological systems. Forget the ideas of 0's and 1's for programming, instead A's, T's, G's, and C's will be the code used for instructing them. The sensory devices they will use to find their way around will be the equivalent of receptor proteins It's funny how our huge and clumsy computer systems today find it hard to tell basic shapes apart, yet a tiny virus "knows" when it's in a specific host organism and an osteocyte can build a bone to a certain specification. The nano machines of the future will use a similar type of "intelligence".
