कंपाइलर उपयोगिता कार्यक्रम हैं - वे प्रोग्रामिंग भाषा पाठ को मशीन कोड में बदल देते हैं। यदि प्रोग्रामिंग भाषा सॉफ्टवेयर का वर्णन करती है जो सिर्फ एक संकलक होता है ....।
कंपाइलर अन्य आर्किटेक्चर के लिए मशीन कोड भी बना सकते हैं। उदाहरण के लिए, Apple इंटेल-आधारित सर्वर के रैक का उपयोग करके iOS को संकलित करता है। संकलक को एआरएम कोड को चलाने की ज़रूरत नहीं है जो इसे उत्पन्न करता है, बस इसे डिस्क पर लिखें।
कंपाइलर 2.0 को भाषा कंपाइलर 1.0 में लिखा जाना चाहिए, यह प्रक्रिया कर सकता है, लेकिन यह निश्चित रूप से अनुकूलन जैसी नई सुविधाओं के साथ कंपाइलर 2.0 बना सकता है। फिर आप संकलक 2.0 का उपयोग करके स्रोत कोड को फिर से संकलित कर सकते हैं और खुद का एक बेहतर संस्करण बना सकते हैं। फिर से, संकलक नहीं जानता कि यह खुद का एक और संस्करण बना रहा है।
यदि हम समय के क्षणों में बहुत पीछे चले जाते हैं, तो हम एक ऐसे बिंदु पर पहुंच जाते हैं, जहां हमारा कोई कंपाइलर नहीं है - एक उच्च-स्तरीय भाषा का पहला पहला पुनरावृत्ति। फिर हमें पेंसिल और ओपकोड पुस्तकों को बाहर निकालना होगा और विधानसभा में पहला लिखना होगा। हमने पहला असेम्बलर कैसे लिखा? प्रत्यक्ष मशीन कोड प्रविष्टि, संभवत: छिद्रित पेपर टेप पर, या फ्रंट पैनल पर फ़्लिपिंग स्विच।