मेरी राय में, जो लोग बोलचाल की भाषा में "प्रोग्रामिंग भाषाओं" पर विचार करते हैं, वे वास्तव में तीन अलग-अलग चीजें हैं:
- भाषा प्रकार और वाक्य रचना
- भाषा आईडीई
- किसी भाषा के लिए उपलब्ध पुस्तकालय
उदाहरण के लिए जब कोई चर्चा में C # लाता है तो आप सोच सकते हैं कि वह भाषा वाक्य रचना (1) के बारे में बात कर रहा है लेकिन यह 95% निश्चित है कि चर्चा में .Net फ्रेमवर्क (3) शामिल होगा। यदि आप एक नई भाषा नहीं डिज़ाइन कर रहे हैं, तो यह कठिन है और आमतौर पर अलग करने के लिए (1) और उपेक्षा (2) और (3)। ऐसा इसलिए है क्योंकि आईडीई और मानक पुस्तकालय "आराम कारक" हैं, चीजें जो एक निश्चित उपकरण का उपयोग करने के अनुभव को सीधे प्रभावित करती हैं।
पिछले कुछ वर्षों में मैंने भी Google Code Jam में भाग लिया था। पहली बार मैंने C ++ का विकल्प चुना क्योंकि इसमें इनपुट पढ़ने के लिए अच्छा समर्थन है। उदाहरण के लिए C ++ में एक मानक इनपुट से तीन पूर्णांक पढ़ना इस तरह दिखता है:
int n, h, w;
cin >> n >> h >> w;
जबकि C # में भी ऐसा ही लगेगा:
int n, h, w;
string[] tokens = Console.ReadLine().Split(' ');
n = int.Parse(tokens[0]);
h = int.Parse(tokens[1]);
w = int.Parse(tokens[2]);
यह एक साधारण कार्यक्षमता के लिए एक बहुत अधिक मानसिक उपरि है। मल्टीलाइन इनपुट के साथ C # में चीजें और भी जटिल हो जाती हैं। शायद मैं बस फिर एक बेहतर तरीका समझ नहीं आया है। वैसे भी, मैं पहले दौर को पारित करने में विफल रहा क्योंकि मेरे पास एक बग था जिसे मैं दौर के अंत से पहले ठीक नहीं कर सकता था। विडंबना यह है कि इनपुट रीडिंग विधि ने बग को बाधित कर दिया। समस्या सरल थी, इनपुट में एक संख्या थी जो 32 बिट पूर्णांक के लिए बहुत बड़ी थी। C # में int.Parse(string)
एक अपवाद होगा, लेकिन C ++ में फ़ाइल इनपुट स्ट्रीम एक निश्चित त्रुटि ध्वज को सेट करेगा और किसी समस्या से अनजान डेवलपर को चुपचाप विफल बना देगा।
दोनों उदाहरण प्रदर्शित करते हैं कि कैसे लाइब्रेरी का उपयोग किया गया था फिर भाषा सिंटैक्स का। पहला वर्बोसिटी दर्शाता है और दूसरा विश्वसनीयता प्रदर्शित करता है। कई पुस्तकालयों को कई भाषाओं में पोर्ट किया जाता है और कुछ भाषाएं उन पुस्तकालयों का उपयोग कर सकती हैं जो विशेष रूप से उनके लिए नहीं बनाए गए हैं (देखें सी लाइब्रेरी के साथ पायथन के बारे में @ vartec का उत्तर)।
इसे लपेटने के लिए, सही एल्गोरिदम को जानने से मदद मिलती है। कोडिंग प्रतियोगिताओं में, यह महत्वपूर्ण है, खासकर जब निष्पादन समय और मेमोरी जैसे संसाधन जानबूझकर सीमित होते हैं। अनुप्रयोग विकास में यह स्वागत योग्य है लेकिन आम तौर पर महत्वपूर्ण नहीं है। वहां स्थिरता बनाए रखना अधिक महत्वपूर्ण है। यह सही डिजाइन पैटर्न लागू करके प्राप्त किया जा सकता है, अच्छी वास्तुकला, पठनीय कोड और प्रासंगिक प्रलेखन और उन सभी तरीकों को भारी रूप से इन-हाउस और तीसरे पक्ष के पुस्तकालयों पर निर्भर करता है। इसलिए, मुझे यह जानना अधिक महत्वपूर्ण है कि किस तरह के पहिये का आविष्कार पहले से ही किया गया है और वे कैसे फिट होते हैं फिर कैसे अपने आप को बनाने के लिए।