It's likely they will come up with some novel configurations
  that we didn't anticipate, but nothing that's not within the
  limits of its programmed potential.

  self-modifying code is a strange area of programming, and the
  vast majority of artificial intelligence doesn't involve
  self-modifying code because of its unpredictability. In fact,
  most programming language do not allow for self-modifying code
  directly, although any turing complete machine (which isn't that
  difficult to accomplish) could _possibly_ do it.

  Instead, the trends seem to be object oriented primarily, even
  within AI. The "purest code" is pure functional programming, but
  the few languages that are pure functional programming - like
  Haskell... don't have the speed people want, so they usually
  return to C++ for closeness-to-the-nature-of-the-computer-itself
  or to Python, which is easy to use and maintain and comprehend.

  My point is, the ranges of modification are set by the
  programmers and the specs of the design ahead of time. Anything
  that goes beyond the programmed limits of capacity are likely
  errors.