I’ve linked to the middle, the meat, of How Atari BASIC Works. I really like the way that they crammed a pretty decent BASIC interpreter into 8K or 10K (depending on how you count) of ROM.
In comparison, the first BASIC interpreter that I saw that was written in C was a bloated, over-implemented disaster. (What’s “over implemented”? It’s when someone decides that “bullet point” features are more important than memory usage, or interpreter efficiency, or usability. For instance, you wind up with thirteen ways of opening files, or Format statements that output Roman numerals, but the built-in editor stinks and the floating point arithmetic is glacial).
I’m not saying “Go back to assembly.” I’m saying, “Pay attention.” To pick some technologies at random: There’s something that makes burning cycles making SOAP or X-Windows faster that’s evil, while the same cycles used to make SmallTalk and maybe Ruby better should be spent with glee.