I often use mixtures of code and non-code blocks. If there are different kinds of code blocks, though, there can be problems if you want to execute them. If you execute each code block with a different language processor, you each block has to be independent of the others. They can't share constants, function returns, class definitions, etc. If that's the case, you might as well put each block of a different programming language into a different node, and not mix them.
Also, you couldn't break code in the same language across several code blocks, because how could the processor know if you want one to extend the previous one or be independent?
I had to face this issue as I worked on Viewrendered3. Currently, you can render mix and colorize blocks with different languages, but for execution, all the code blocks need to be for the same language (right now limited to only python, but that should be changed in the future). My desire was to support literate programming (that is, to be able to insert commentary in a nicely readable way), so I also had to provide for mixing code and non-code blocks in a node. I also wanted the code to be executable. In the current implementation of VR3, all code blocks in a node or subtree get merged before execution.
I would be willing to entertain requests to change this behavior, but I'd have to be convinced that it would be worth the effort!