मशीन कोड के अलावा, अस्तित्व में कोई प्रोग्रामिंग भाषा नहीं है जो सीधे हार्डवेयर पर निष्पादित होती है, इस अर्थ में कि आप इसे शाब्दिक स्रोत पाठ नहीं खिला सकते हैं। सभी वास्तविक कार्यान्वयन को स्रोत प्रोग्राम को "मशीन" की भाषा में अनुवाद करना होगा ।
कुछ कार्यान्वयनों के लिए, इसका सांख्यिकीय रूप से अनुवाद किया गया है। हम आमतौर पर इन कार्यान्वयनों को "संकलित" कहते हैं। दूसरों के लिए, इसे कुछ मध्यवर्ती रूप में अनुवादित किया जाता है, जिसे तब गतिशील रूप से अनुवादित किया जाता है क्योंकि कार्यक्रम चलाया जाता है। हम आमतौर पर इन कार्यान्वयनों को "व्याख्या" कहते हैं। इन दोनों के बीच संभावनाओं का सिलसिला जारी है, और कई आधुनिक सीपीयू भी इसके निष्पादन कोर के हिस्से के रूप में गतिशील अनुवाद करते हैं।
यहां तक कि जब आपके कार्यक्रम को निष्पादन से बहुत पहले संकलित किया जाता है, जब तक कि आप फर्मवेयर नहीं लिख रहे हैं, यह दुर्लभ है कि संकलित कोड नंगे धातु पर सीधे चलता है जिसमें इसका समर्थन नहीं है। ऑपरेटिंग सिस्टम उपयोगकर्ता-अंतरिक्ष कार्यक्रमों के लिए एक वर्चुअल मशीन प्रदान करता है, जो अक्सर भ्रम के रूप में ऐसी सुविधाएँ प्रदान करता है कि आपके पास स्वयं के लिए एक सीपीयू हो। एक फ्लैट मेमोरी स्पेस का भ्रम जो मशीन से जुड़ी भौतिक रैम से बड़ा हो सकता है, जिसे "वर्चुअल मेमोरी" भी कहा जाता है।
उस के ऊपर, जब आप C में प्रोग्रामिंग कर रहे हैं, तब भी C वर्चुअल मशीन है! इसे पारंपरिक रूप से "सी रनटाइम" या संक्षेप में सीआरटी के रूप में जाना जाता है।
चूँकि C अधिकतर समय से ठीक पहले असेंबली / मशीन कोड में सीधे अनुवादित किया जाता है (कुछ प्लेटफार्मों पर, कुछ थ्रेडेड कोड भी हो सकते हैं , और जिसे वर्चुअल मशीन का हिस्सा माना जा सकता है), वर्चुअल मशीन को आमतौर पर केवल स्टार्टअप को हैंडल करना होता है बंद करना।
स्टार्टअप में आमतौर पर स्टैक और ढेर स्थापित करना शामिल है; ऑपरेटिंग सिस्टम शायद ही आपके लिए ये प्रदान करता है, और प्रोग्रामर को ये प्रदान करने के लिए प्रोग्रामिंग भाषा का काम है। कुछ प्लेटफार्मों पर सिग्नल हैंडलिंग के कुछ प्रारंभिककरण हो सकते हैं, बहु-थ्रेडेड वातावरण में "मुख्य" थ्रेड स्थापित करना, वैश्विक कंस्ट्रक्टरों को बंद मौका पर चलाना जो प्रोग्राम को सी ++ कोड से जोड़ा गया है, गतिशील रूप से जुड़े पुस्तकालयों को संभाल रहा है, या वहां argc / argv और envp को सेट करने के लिए कुछ प्रसंस्करण की आवश्यकता हो सकती है। अंत में, CRT मुख्य पर नियंत्रण स्थानांतरित करता है।
शटडाउन के रूप में, कई ऑपरेटिंग सिस्टम अशुद्ध रूप से एक प्रक्रिया को मार सकते हैं, इसलिए शटडाउन को बहुत अधिक करने की आवश्यकता नहीं है। मुख्य बात यह है कि एटैक्सिट () कॉल को संसाधित करने के लिए उस मामले के लिए जहां कार्यक्रम सफाई से बाहर निकलता है।