Why? There's no particular reason why a language can't span low-level to high-level. C# is a good example of that: normally you deal with garbage collected objects and references, but if you need to drop down to explicit stack allocations, raw pointers, unions etc, you can - though of course the resulting code looks very different from idiomatic high-level code.