Engineering decisions and the resulting output.
We've known for decades that machine-translated code is garbage, and should only be done as a last resort.
We've known for decades that machine-translated code is garbage, and should only be done as a last resort.
Seriously though, that's an overly-pedantic definition of a compiler. Broadly speaking, languages compile in a direction of decreasing abstraction. Crossing from one high-level abstraction to another is just asking for trouble, especially in this case where the target language makes very specific performance promises as long as certain abstractions are maintained.