ऐसे कई कारण हैं जिन पर एक भाषा Y चुनने के लिए विचार किया जा सकता है Y कार्यक्रम की पठनीयता, प्रोग्रामिंग में आसानी, कई प्लेटफार्मों के लिए पोर्टेबिलिटी, अच्छे प्रोग्रामिंग वातावरण का अस्तित्व ऐसे कारण हो सकते हैं। हालाँकि, मैं केवल निष्पादन की गति पर विचार करूंगा, जैसा कि प्रश्न में अनुरोध किया गया है। उदाहरण के लिए, प्रश्न पर विचार नहीं किया जाता है, विकास की गति।
दो भाषाएं एक ही बायोटेक को संकलित कर सकती हैं, लेकिन इसका मतलब यह नहीं है कि एक ही कोड का उत्पादन किया जाएगा,
दरअसल bytecode एक विशिष्ट वर्चुअल मशीन के लिए केवल कोड है। इसमें इंजीनियरिंग के फायदे हैं, लेकिन यह विशिष्ट अंतर के लिए सीधे संकलन के साथ मूलभूत मतभेदों को पेश नहीं करता है। तो आप एक ही मशीन पर सीधे निष्पादन के लिए संकलित दो भाषाओं की तुलना करने पर विचार कर सकते हैं।
इसने कहा, भाषाओं की सापेक्ष गति का मुद्दा एक पुराना है, जो पहले संकलक के लिए वापस डेटिंग है।
कई वर्षों के लिए, उन शुरुआती समय में, पेशेवर ने माना कि हाथ से लिखा कोड संकलित कोड से तेज था। दूसरे शब्दों में, मशीन भाषा को कोबोल या फोरट्रान जैसी उच्च स्तरीय भाषाओं की तुलना में तेज़ माना जाता था। और यह दोनों तेजी से और आमतौर पर छोटा था। उच्च स्तरीय भाषाएं अभी भी विकसित हुईं क्योंकि वे बहुत से लोगों के लिए उपयोग करने में आसान थे जो कंप्यूटर वैज्ञानिक नहीं थे। उच्च स्तर की भाषाओं का उपयोग करने की लागत का भी नाम था: विस्तार अनुपात, जो उत्पन्न कोड के आकार (उन समय में एक बहुत महत्वपूर्ण मुद्दा) या वास्तव में निष्पादित निर्देशों की संख्या की चिंता कर सकता था। अवधारणा मुख्य रूप से प्रायोगिक थी, लेकिन पहली बार में यह अनुपात 1 से अधिक था, क्योंकि आज के मानकों के अनुसार कंपाइलरों ने काफी सरल दिमाग वाला काम किया है।
इस प्रकार मशीन की भाषा, फोरट्रान की तुलना में तेज थी।
बेशक, यह समय के साथ बदल गया, क्योंकि संकलक अधिक परिष्कृत हो गए, इस बिंदु पर कि विधानसभा भाषा में प्रोग्रामिंग अब बहुत दुर्लभ है। अधिकांश अनुप्रयोगों के लिए, विधानसभा भाषा कार्यक्रम कंपाइलरों को अनुकूलित करके उत्पन्न कोड के साथ खराब प्रतिस्पर्धा करते हैं।
इससे पता चलता है कि एक प्रमुख मुद्दा माना जाने वाली भाषा के लिए उपलब्ध कंपाइलरों की गुणवत्ता, स्रोत कोड का विश्लेषण करने की क्षमता और उसके अनुसार इसे अनुकूलित करना है।
यह क्षमता संकलक के लिए काम को आसान बनाने के लिए स्रोत की संरचनात्मक और गणितीय गुणों पर जोर देने के लिए भाषा की सुविधाओं पर कुछ विस्तार पर निर्भर हो सकती है। उदाहरण के लिए, एक भाषा उपयोगकर्ता परिभाषित कार्यों के बीजीय गुणों के बारे में बयानों को शामिल करने की अनुमति दे सकती है, ताकि कंपाइलर इन गुणों का उपयोग अनुकूलन उद्देश्यों के लिए कर सके।
संकलन प्रक्रिया आसान हो सकती है, इसलिए बेहतर कोड का उत्पादन होता है, जब भाषा की प्रोग्रामिंग प्रतिमान उन मशीनों की विशेषताओं के करीब होती है जो कोड को अलग करेगी, चाहे वास्तविक या आभासी मशीन।
एक और मुद्दा यह है कि क्या भाषा में लागू किए जाने वाले प्रतिमानों को प्रोग्राम की जाने वाली समस्या के प्रकार के लिए बंद कर दिया जाता है। यह उम्मीद की जानी चाहिए कि विशिष्ट प्रोग्रामिंग प्रतिमानों के लिए विशिष्ट एक प्रोग्रामिंग भाषा उस प्रतिमान से संबंधित बहुत कुशलता से संकलन करेगी। इसलिए प्रोग्रामिंग भाषा की पसंद स्पष्टता के लिए और गति के लिए निर्भर हो सकती है, प्रोग्रामिंग भाषा की पसंद के अनुसार जिस तरह की समस्या को प्रोग्राम किया जा रहा है, उसके अनुकूल है।
सिस्टम प्रोग्रामिंग के लिए C की लोकप्रियता शायद इस तथ्य के कारण है कि C मशीन आर्किटेक्चर के करीब है, और उस सिस्टम प्रोग्रामिंग का सीधा संबंध उस आर्किटेक्चर से भी है।
तर्क प्रोग्रामिंग और बाधा समाधान भाषाओं का उपयोग करके तेजी से निष्पादन के साथ कुछ अन्य समस्या आसानी से प्रोग्राम की जाएगी ।
कॉम्प्लेक्स रिएक्टिव सिस्टम को बहुत ही कुशलता से प्रोग्रामिंग की जा सकती है, जैसे कि एस्टेरेल जैसी विशिष्ट सिंक्रोनस प्रोग्रामिंग लैंग्वेज के साथ, जो इस तरह के सिस्टम के बारे में बहुत ही विशेष ज्ञान का प्रतीक है और बहुत तेज कोड उत्पन्न करता है।
या एक चरम उदाहरण लेने के लिए, कुछ भाषाएँ अत्यधिक विशिष्ट होती हैं, जैसे कि वाक्यविन्यास विवरण भाषाएं प्रोग्रामर्स को प्रोग्राम करने के लिए उपयोग की जाती हैं। एक पार्सर जनरेटर ऐसी भाषाओं के लिए एक कंपाइलर के अलावा कुछ भी नहीं है। बेशक, यह ट्यूरिंग पूर्ण नहीं है, लेकिन ये संकलक अपनी विशेषता के लिए बहुत अच्छे हैं: कुशल पार्सिंग कार्यक्रमों का निर्माण। ज्ञान के क्षेत्र को प्रतिबंधित किया जा रहा है, ऑप्टिमाइज़ेशन तकनीक बहुत ही विशिष्ट और बहुत सूक्ष्म रूप से ट्यून की जा सकती है। ये पार्सर जनरेटर आमतौर पर किसी अन्य भाषा में कोड लिखकर प्राप्त किए जा सकने वाले से बेहतर होते हैं। संकलक के साथ कई उच्च विशिष्ट भाषाएं हैं जो समस्याओं के एक प्रतिबंधित वर्ग के लिए उत्कृष्ट और तेज कोड का उत्पादन करती हैं।
इसलिए, जब एक बड़ी प्रणाली लिखते हैं, तो यह उचित हो सकता है कि किसी एक भाषा पर भरोसा न करें, लेकिन सिस्टम के विभिन्न घटकों के लिए सर्वोत्तम भाषा का चयन करें। यह, ज़ाहिर है, संगतता की समस्याओं को उठाता है।
एक और बात जो अक्सर मायने रखती है, वह है विषयों के लिए कुशल पुस्तकालयों का अस्तित्व।
अंत में, गति एकमात्र मानदंड नहीं है और अन्य मानदंडों के साथ संघर्ष में हो सकता है जैसे कि कोड सुरक्षा (खराब इनपुट के संबंध में छूट, या सिस्टम त्रुटियों के प्रति लचीलापन), मेमोरी का उपयोग, प्रोग्रामिंग में आसानी (हालांकि प्रतिमान संगतता वास्तव में मदद कर सकती है) ), ऑब्जेक्ट कोड का आकार, कार्यक्रम की स्थिरता, आदि।
गति हमेशा सबसे महत्वपूर्ण पैरामीटर नहीं होती है। साथ ही इसमें विभिन्न प्रकार की जटिलताएँ हो सकती हैं, जैसे जटिलता जो औसत जटिलता या बदतर स्थिति जटिलता हो सकती है। इसके अलावा, एक बड़ी प्रणाली के रूप में एक छोटे कार्यक्रम में, ऐसे हिस्से होते हैं जहां गति महत्वपूर्ण होती है, और अन्य जहां यह कम मायने रखता है। और यह हमेशा पहले से निर्धारित करना आसान नहीं है।