We don&#x27;t actually <i>need</i> to butt into the Halting Problem or Rices Theorem, though.<p>Ideally, we would have proven-to-terminate non-turing complete DSLs that can be composed together to form more powerful DSLs. The problem is that we don&#x27;t really know how to compose programs well, and when you demand the ability to peer into arbitrary executing code and modify it on the fly, you don&#x27;t make it easier to learn how to do this.<p>If you were forced to use an architecture that separated things properly, you&#x27;d be forced to deal with those composition problems, rather than &#x27;hacking&#x27; programs using a level of power that is unnecessary for the problem you hope to solve. (And you <i>are</i> hoping to solve a problem, not just run a program that fails to terminate.)<p>(I&#x27;m not arguing that this is the &#x27;right way&#x27; to do things. It&#x27;s just a way that should be considered properly.)