| Actually, bytecodes for langs like Smalltalk can get you down to controlling all of your runtime state down to the level of bits. (Squeak actually runs bit-identical on something like 50 environments!) As for precisely what runtime instructions are executed, most of the time, we can consider this to be an implementation detail. In the case of superscalar processors, you can't necessarily tell me what order your assembly language instructions are executed. And, what about Forth? It's a fairly low-level language by this standard. It bridges the gap between high-level and low level. It's a clear piece of evidence that there isn't such a huge gulf as you claim. but one word does not dispatch on types and expand operator overloading and do the other things that can result in one line of C++ producing half a kilobyte of code There are high level languages that don't do this either. Actually, I know of a specialized declarative Smalltalk that has gotten the entire image down to 45k. A Smalltalk VM is basically little more than a 256 branch switch statement, plus message dispatch, plus GC. The gulf isn't nearly as large as you imagine. Rather, there are a number of "high level" languages that are actually pretty minimal. |