C was not created as an abstract machine
C was created to write Unix on PDP-11 hardware. Prior to that operating systems were typically written in assembler. C was seen as a high level assembler and only later ported to other hardware.<p>Realistically, C should have been restricted for writing operating systems and device drivers. It is far too low-level for application programming. But since it was often the only <i>portable</i> high level language, software vendors adopted it for purposes that it was never designed to handle.  That was partly the reason that C++ and Objective C emerged.