प्रतियोगी कोडिंग

thumb| प्रतियोगी कोडिंग के दौरान विश्व के दो प्रसिद्ध प्रतियोगी पेत्र मित्रिचेव (piipetraPetr Mitrichev) (बाएँ) और गेन्नादी कोरोत्केविक (Gennady Korotkevich) (दाएँ)
प्रतियोगी प्रोग्रामिंग या प्रतिस्पर्धी कोडिंग एक मानसिक खेल है जिसे आमतौर पर इंटरनेट या स्थानीय नेटवर्क पर आयोजित किया जाता है, जिसमें प्रतिभागियों को प्रदान किए गए विनिर्देशों के अनुसार कार्यक्रम करने की कोशिश की जाती है। प्रतियोगियों को खेल प्रोग्रामर के रूप में जाना जाता है। प्रतिस्पर्धी प्रोग्रामिंग को कई बहुराष्ट्रीय सॉफ्टवेयर और इंटरनेट कंपनियों द्वारा मान्यता प्राप्त और समर्थित है, जैसे कि गूगल और फेसबुक कई संगठन हैं जो नियमित रूप से प्रोग्रामिंग प्रतियोगिताओं की मेजबानी करते हैं।

एक प्रोग्रामिंग प्रतियोगिता में आम तौर पर मेजबान को तार्किक या गणितीय समस्याओं का एक सेट पेश किया जाता है, जिसे पहेली के रूप में भी जाना जाता है, प्रतियोगियों को (जो दसियों से कई हजारों की संख्या में भिन्न हो सकते हैं), और प्रतियोगियों को प्रत्येक समस्या को हल करने में सक्षम कंप्यूटर प्रोग्राम लिखने की आवश्यकता होती है । ज्यादातर हल किए गए प्रश्नों की संख्या और सफल समाधान लिखने के लिए खर्च किए गए समय पर आधारित है, लेकिन इसमें अन्य कारक (उत्पादित उत्पादन की गुणवत्ता, निष्पादन समय, कार्यक्रम का आकार, आदि) भी शामिल हो सकते हैं। 

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

समस्या श्रेणी के बावजूद, किसी समस्या को हल करने की प्रक्रिया को दो व्यापक चरणों में विभाजित किया जा सकता है: एक कुशल एल्गोरिदम का निर्माण, और एक उपयुक्त प्रोग्रामिंग भाषा में एल्गोरिथ्म को लागू करना। प्रोग्रामिंग प्रतियोगिताओं में ये दो सबसे अधिक परीक्षण किए गए कौशल हैं।

 लाभ और आलोचना 
प्रोग्रामिंग प्रतियोगिता में भाग लेने से कंप्यूटर विज्ञान की पढ़ाई के लिए छात्रों में उत्साह बढ़ सकता है। प्रोग्रामिंग प्रतियोगिताओं की तरह आईसी पी सी में हासिल किए गए कौशल भी कैरियर की संभावनाओं में सुधार करते हैं, क्योंकि वे "तकनीकी साक्षात्कार" पास करने में मदद करते हैं, जिन्हें अक्सर उम्मीदवारों को मौके पर जटिल प्रोग्रामिंग और एल्गोरिदम संबंधी समस्याओं को हल करने की आवश्यकता होती है।

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

फिर भी एक और भावना यह है कि ज्ञात समाधानों के साथ समस्याओं का समाधान करके अत्यधिक प्रतिस्पर्धा पर अपना समय बर्बाद करने के बजाय, उच्च प्रोफ़ाइल प्रोग्रामर को वास्तविक दुनिया की समस्याओं को हल करने में अपना समय निवेश करना चाहिए।

 संदर्भ 

 गूगल
 फेसबुक
 प्रतियोगी प्रोग्रामिंग के साथ कैसे शुरू करें?
 एल्गोरिथ्म कौशल का अवलोकन
 प्रोग्रामिंग सूची
 प्रतियोगी प्रोग्रामिंग के कैरियर लाभ
 प्रतिस्पर्धात्मक प्रोग्रामिंग के लिए एक बेहतर तरीका है