| Short Code was an interpreted bytecode proposed by Mauchly in 1949 and implemented by Schmitt on the UNIVAC I in 1950: https://en.wikipedia.org/wiki/Short_Code_%28computer_languag... Going back further, Turing's 1936 Universal Machine is "universal" because it can interpret a description of another machine, which could be a different Universal Machine (i.e. an interpreter), an application-specific machine, or even the same universal machine (i.e. self-emulation). Gates and Allen developed Altair BASIC on a PDP-10 at Harvard in 1976, handling invalid-instruction traps by emulating the 8080 instructions they were using, thus turning the PDP-10's operating system into an interpreter for a different instruction set. The Alto being used at the same time at Xerox PARC was optimized for such emulations: it ran "microcode" loaded from RAM, so that you could program it to interpret whatever instruction set was most appropriate for your application. Throughout the 1960s and 1970s, a large fraction of IBM computer time was spent running emulators of earlier IBM models like the 650, 704, 709, and 7090, in order to run the software developed for those older machines. And of course today much of our computer time is spent running software represented as JVM bytecodes, SpiderMonkey bytecodes https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Sp..., CPython bytecodes, or Lua "bytecodes"; and Vulkan, the new replacement for OpenGL, defines a vendor-independent bytecode format for representing GPU programs. A level below this, the currently popular out-of-order CPUs recompile the i386 or amd64 instructions emitted by our compilers into sets of "micro-ops", which are then independently scheduled; sometimes these micro-op representations are cached so that the recompilation process doesn't have to be repeated every time through a loop. You could argue that this, even more than the usual microcode approach that was supposed to go out the window with the advent of RISC, has turned our entire software infrastructure into bytecode for a more convenient virtual machine. Your comment seems to be predicated on the misconception that programming a computer to interpret a more convenient instruction set is some kind of bizarre or unusual thing to do. In fact, it is not only commonplace, but absolutely central to our modern concept of "computer". |
If my dim memory of Knuth's article on the early history of compilers is right, Short Code was meant more for programmer productivity than code size.