Język C uważany jest za niskopoziomowy i „bliski sprzętowi”. Tymczasem model języka C opiera się na abstrakcyjnej maszynie, która z dużą swobodą realizuje program, często działając wbrew potocznym intuicjom na temat kodu. Abstrakcyjna maszyna C „materializuje się” w postaci efektów ubocznych programu, przypominając tym samym słynny paradoks kota Schrödingera, który tym bardziej jest w pudełku, im bardziej tam zaglądamy.