आइए आपको एक वास्तविक दुनिया का उदाहरण देते हैं।
लगभग 15 साल पहले मैंने यूनिक्स से विंडोज में सी में लिखे एक बड़े सिस्टम को पोर्ट करने पर काम किया था, यह कोड की लगभग 3 मिलियन लाइनें थी। आपको पैमाने का कुछ विचार देने के लिए, हमारे कुछ यूनिक्स सिस्टम (RS6000) पर संकलन करने में 210 से अधिक का समय लगा, विंडोज़ सिस्टम को लगभग 4hrs में संकलित कर सकता है।
(हमारी अपनी व्याख्या की गई भाषा में भी हमारे पास 2 मिलियन लाइन कोड था, लेकिन बिल्ड सिस्टम के लिए हमारी भाषा का उपयोग नहीं करने का निर्णय लिया गया क्योंकि यह फ़ाइल प्रसंस्करण के लिए कभी डिज़ाइन नहीं किया गया था। इसके अलावा हमें अपनी भाषा को लागू करने वाले C कोड को संकलित करने के लिए एक बिल्ड सिस्टम की आवश्यकता थी। ।)
जिस समय बिल्ड सिस्टम को शेल स्क्रिप्ट्स और फ़ाइलों को बनाने के मिश्रण में लिखा गया था, ये विंडोज़ के लिए पोर्टेबल नहीं थे - इसलिए हमने अपनी खुद की बिल्ड सिस्टम लिखने का फैसला किया।
हम सी का उपयोग कर सकते थे, हालांकि हमने अजगर का उपयोग करने का फैसला किया, इसके कुछ कारण थे। (हम एक ही समय में अजगर में हमारे स्रोत कोड नियंत्रण प्रणाली को फिर से लिखते हैं, यह निर्माण प्रणाली के साथ बहुत ही हस्तक्षेप किया गया था, इसलिए मॉड्यूल में जांचे गए ऑब्जेक्ट फ़ाइलों को डेवलपर्स द्वारा साझा किया जा सकता है।)
हमारे अधिकांश कोड कुछ सरल नियमों (सभी प्लेटफार्मों, विंडोज, वीएमएस और यूनिक्स के 6 संस्करणों के लिए केवल अजगर की कुछ हजार लाइनें) के साथ बनाए जा सकते हैं, जिन्हें फाइलों के नामकरण सम्मेलनों से चुना गया था।
जिस समय RegEx विभिन्न प्लेटफार्मों पर C सिस्टम के बीच बहुत मानक नहीं था, पायथन ने RegEx में बनाया था।
कुछ मॉड्यूल को कस्टम बिल्ड चरणों की आवश्यकता थी, पायथन ने कक्षा की फ़ाइलों को गतिशील रूप से लोड करने की अनुमति दी। हमने एक कस्टम वर्ग को एक मॉड्यूल (lib) बनाने के लिए उपयोग करने की अनुमति दी है, जो कि फ़ोल्डर में एक जादुई नाम के साथ अजगर फ़ाइल होने पर आधारित है। यह अजगर का उपयोग करने का हत्यारा कारण था।
हमने जावा पर विचार किया, लेकिन यह उस समय सभी प्लेटफार्मों पर शिपिंग नहीं था।
(हमारे सोर्स कोड कंट्रोल सिस्टम के लिए यूआई ने एक वेब ब्राउज़र का उपयोग किया है जो सभी प्लेटफॉर्म पर पोर्टेबल था। इंटरनेट कनेक्शन के 6 महीने पहले। हमें ब्राउज़र को X25 पर डाउनलोड करना था!)