एक स्टैक एक्सचेंज साइट है जिसे प्रोग्रामिंग पजल्स एंड कोड गोल्फ कहा जाता है । प्रोग्रामिंग पहेली उस साइट पर की इस परिभाषा फिट पहेली :
एक खिलौना, समस्या, या अन्य अंतर्ज्ञान को सरलता या रोगी के प्रयास से हल करने के लिए कठिनाइयों को प्रस्तुत करने के द्वारा डिज़ाइन किया गया।
वे मनोरंजन करने के लिए डिज़ाइन किए गए हैं, न कि इस तरह से कि एक कामकाजी प्रोग्रामर को अपने दैनिक काम में आने वाली वास्तविक दुनिया की समस्या से चकित किया जा सकता है।
कोड गोल्फ "एक प्रकार की मनोरंजक कंप्यूटर प्रोग्रामिंग प्रतियोगिता है जिसमें प्रतिभागी सबसे कम संभव स्रोत कोड को प्राप्त करने का प्रयास करते हैं जो एक निश्चित एल्गोरिथ्म को लागू करता है।" PP & CG साइट के उत्तरों में, आप देखेंगे कि लोग अपने उत्तरों में बाइट्स की संख्या निर्दिष्ट करते हैं। जब उन्हें कुछ बाइट्स से दाढ़ी बनाने का एक तरीका मिल जाता है, तो वे मूल संख्या पर हमला करेंगे और नया रिकॉर्ड करेंगे।
जैसा कि आप उम्मीद कर सकते हैं, कोड गोल्फिंग चरम प्रोग्रामिंग भाषा का दुरुपयोग करता है। एक अक्षर का चर नाम। कोई व्हाट्सएप नहीं। पुस्तकालय कार्यों का रचनात्मक उपयोग। अप्राकृतिक सुविधाएँ। नॉनस्टैंडर्ड प्रोग्रामिंग प्रैक्टिस। हैकिंग को याद करते हुए।
यदि एक प्रोग्रामर ने गोल्फ-स्टाइल कोड वाले काम पर एक पुल अनुरोध प्रस्तुत किया, तो इसे अस्वीकार कर दिया जाएगा। उनके सहकर्मी उन पर हंसते थे। उनका मैनेजर एक चैट के लिए उनके डेस्क से गिर जाता था। फिर भी, प्रोग्रामर पीपी एंड सीजी को जवाब प्रस्तुत करके खुद को खुश करते हैं।
इससे क्या लेना-देना है stdc++.h
? जैसा कि दूसरों ने बताया है, इसका उपयोग करना आलसी है। यह गैर-पोर्टेबल है, इसलिए आपको नहीं पता कि यह आपके कंपाइलर या आपके कंपाइलर के अगले संस्करण पर काम करेगा या नहीं। यह बुरी आदतों को बढ़ावा देता है। यह गैर-मानक है, इसलिए आपके कार्यक्रम का व्यवहार आपकी अपेक्षा से भिन्न हो सकता है। यह संकलन समय और निष्पादन योग्य आकार बढ़ा सकता है।
ये सभी वैध और सही आपत्तियां हैं। तो कोई इस राक्षसी का उपयोग क्यों करेगा?
यह पता चला है कि कुछ लोगों को कोड गोल्फ के बिना प्रोग्रामिंग पहेलियाँ पसंद हैं । वे एक साथ मिलते हैं और ACM-ICPC, Google कोड Jam, और Facebook हैकर कप, या Topcoder और Codeforces जैसी साइटों पर प्रतिस्पर्धा करते हैं। उनकी रैंक प्रोग्राम की शुद्धता, निष्पादन की गति और वे कितनी तेजी से समाधान प्रस्तुत करते हैं, पर आधारित है। निष्पादन की गति को अधिकतम करने के लिए, कई प्रतिभागी C ++ का उपयोग करते हैं। कोडिंग गति को अधिकतम करने के लिए, उनमें से कुछ का उपयोग करें ।stdc++.h
क्या यह एक अच्छा विचार है? चलो नुकसान की सूची की जाँच करें। पोर्टेबिलिटी? इससे कोई फर्क नहीं पड़ता क्योंकि ये कोडिंग इवेंट एक विशिष्ट संकलक संस्करण का उपयोग करते हैं जो प्रतियोगियों को पहले से पता है। मानकों का अनुपालन? कोड के ब्लॉक के लिए प्रासंगिक नहीं जिसका उपयोगी जीवन एक घंटे से कम है। संकलन समय और निष्पादन योग्य आकार? ये प्रतियोगिता के स्कोरिंग रूब्रिक का हिस्सा नहीं हैं।
तो हम बुरी आदतों से बचे हैं। यह एक वैध आपत्ति है। इस हेडर फ़ाइल का उपयोग करके, प्रतियोगी यह जानने का मौका लेने से बच रहे हैं कि कौन सी मानक हेडर फ़ाइल उनके प्रोग्राम में उपयोग की जाने वाली कार्यक्षमता को परिभाषित करती है। जब वे वास्तविक दुनिया कोड लिख रहे हैं (और उपयोग नहीं कर रहे हैं stdc++.h
) तो उन्हें इस जानकारी को देखने में समय बिताना होगा, जिसका मतलब है कि वे कम उत्पादक होंगे। इसके साथ अभ्यास करने का नकारात्मक पक्ष है stdc++.h
।
यह सवाल उठाता है कि यह प्रतिस्पर्धी प्रोग्रामिंग में भाग लेने के लायक क्यों है अगर यह stdc++.h
अन्य कोडिंग मानकों का उपयोग करने और उल्लंघन करने जैसी बुरी आदतों को प्रोत्साहित करता है । एक उत्तर यह है कि लोग इसे उसी कारण से करते हैं जब वे पीपी एंड सीजी पर कार्यक्रम पोस्ट करते हैं: कुछ प्रोग्रामर को गेम की तरह संदर्भ में अपने कोडिंग कौशल का उपयोग करना सुखद लगता है।
तो सवाल यह है कि क्या उपयोग करने के लिए stdc++.h
नीचे आता है कि क्या एक प्रोग्रामिंग प्रतियोगिता में कोडिंग गति का लाभ बुरी आदतों से निकलता है जो एक का उपयोग करके विकसित हो सकता है।
यह सवाल पूछता है: "मुझे क्यों नहीं # शामिल होना चाहिए <bits/stdc++.h>
?" मुझे एहसास है कि यह पूछा गया था और एक बिंदु बनाने के लिए उत्तर दिया गया था, और स्वीकृत उत्तर का उद्देश्य इस प्रश्न का वन ट्रू उत्तर होना है। लेकिन सवाल यह नहीं है कि "मुझे <bits/stdc++.h>
उत्पादन कोड में क्यों शामिल नहीं होना चाहिए ?" इसलिए, मुझे लगता है कि अन्य परिदृश्यों पर विचार करना उचित है जहां उत्तर अलग हो सकता है।
using namespace std;
वहाँ कहीं बाहर का एक संस्करण शामिल होगा।