For those old enough to program on punch cards you could say that is closer. We load the program into ram and then the env can and often does modify the program on the fly and we do dumb thing like use the current line number to save a byte because dividing by 17 is “good enough”. Most cards are functional and many cards do double or triple duty to save space. So a bug in one card can subtly break three wildly different spots. Analogies break down of course as in biology it all executes at the same time which is why the micro services or lamdas that can be scaled up or down have been my go to. And you can even inject external events into your lambda systems.
And for anyone familiar with lisp, code is data, data is code. For modern coders you can think that it has a billion feature flags you can also flip on and off rather than rewriting the code on the fly