प्रोग्रामिंग प्रतियोगिता प्रतियोगी C ++ और Java का उपयोग क्यों करते हैं? [बन्द है]


93

इस वर्ष की Google कोड जाम प्रतियोगिता में प्रतिस्पर्धा करने और उसका अनुसरण करने के बाद , मैं उस सफल [सफल] प्रतियोगी की अविश्वसनीय संख्या पर ध्यान नहीं दे सका, जिसने C / C ++ और Java का उपयोग किया था। संपूर्ण प्रतियोगिता में उपयोग की जाने वाली भाषाओं का वितरण यहाँ देखा जा सकता है

कई वर्षों तक C / C ++ में प्रोग्रामिंग करने के बाद, मुझे हाल ही में अपने पठनीय / सीधे स्वभाव के लिए अजगर से प्यार हो गया। अभी हाल ही में, मैंने OCaml, योजना, और यहां तक ​​कि तर्क जैसी भाषाएं भी सीखीं। इन भाषाओं में निश्चित रूप से उनकी खूबियां हैं और, मेरी राय में, कुछ स्थितियों के लिए C ++ और Java की तुलना में अधिक आसानी से लागू किया जा सकता है। उदाहरण के लिए, कॉल / सीसी की स्कीम का उपयोग बैकट्रैकिंग (कई समस्याओं का जवाब देने के लिए आवश्यक उपकरण) और प्रोलॉग के तर्क विनिर्देश को सरल बनाता है, हालांकि अपनी पाशविक बल प्रकृति के कारण अक्षम, काफी सरल कर सकता है (और यहां तक ​​कि स्वचालित रूप से कुछ समस्याओं को हल कर सकता है) किसी के दिमाग को लपेटो।

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

मेरे प्रश्न के लिए कई प्रेरणाएँ हैं। सबसे महत्वपूर्ण बात, मैं एक बेहतर प्रोग्रामर बनना चाहता हूं - व्यावहारिक पहलू और प्रतियोगिता पहलू दोनों। कार्यात्मक और तर्क प्रोग्रामिंग जैसे सुंदर प्रतिमानों से परिचित होने के बाद, यह देखना हतोत्साहित करता है कि बहुत से लोग उन्हें C / C ++ और Java के पक्ष में छोड़ देते हैं। यहां तक ​​कि यह मुझे उक्त प्रतिमानों के लिए मेरी प्रशंसा का सवाल बनाता है, यह चिंता करते हुए कि मैं एक प्रोग्रामिंग प्रतियोगिता में लिस्प / स्कीम / प्रोलोग प्रोग्रामर के रूप में सफल नहीं हो सकता।


11
मुझे लगता है कि निष्पादन की गति एक कारक हो सकती है।
ज़की

दिलचस्प सवाल; कोड जाम या अन्य प्रतियोगिताओं (एसीएम, आदि) में प्रतिभागियों से कुछ जवाब प्राप्त करना अच्छा होगा। समय सीमा की व्याख्या भाषाओं के खिलाफ पूर्वाग्रह हो सकती है, हालांकि ...
tzaman

11
डायनेमिक भाषाओं में प्रदर्शन की एक बड़ी समस्या है: बेंचमार्क
NullUserException

टॉपकोडर के लिए, यह विशुद्ध रूप से है क्योंकि उनके पास कुछ भी लेकिन पायथन मानक पुस्तकालयों के उपयोग को रोकने के लिए एक नियम है, जो तुच्छ कार्यों के अलावा कुछ भी असंभव बनाता है। अंतरिक्ष छवियों में क्षुद्रग्रहों की खोज? बहुत बुरा, आप भी NumPy का उपयोग नहीं कर सकते।
१०:१४ को

जवाबों:


68

बड़ा अच्छा सवाल! जैसा कि किसी ने प्रोग्रामिंग में डब किया हुआ है, वह थोड़ा खुद को चुनौती देता है, मेरे पास कहने के लिए कुछ हो सकता है।

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

अब कुछ उत्तरों के लिए:

  • सी ++ / जावा वास्तविक दुनिया में अन्य भाषाओं की तुलना में अधिक सामान्य हैं, इसलिए आप कहीं भी उच्च अनुपात देखने की उम्मीद करेंगे। (लेकिन यह प्रतियोगिता की आबादी में अधिक है।)

  • इन प्रतिभागियों में से कई छात्र हैं, या छात्रों के रूप में प्रतियोगिता में शामिल हुए, और C ++ / Java अधिक सामान्य "पहली भाषाएँ" हैं जो छात्र सीखते हैं। (अंडरग्रेजुएट छात्र इन दिनों स्कीम, हास्केल, पायथन, आदि के साथ शुरू कर सकते हैं, लेकिन हाई-स्कूलर्स (अक्सर स्व-सिखाया जाता है) कम अक्सर।) वास्तव में, पूर्वी यूरोपीय प्रतिभागियों में से कई अभी भी पास्कल का उपयोग करते हैं, और इसके साथ अधिक अद्भुत हैं। हम में से बाकी कभी भी किसी भी भाषा के साथ होंगे।

  • स्कूल और कॉलेज स्तर के प्रतियोगिता आमतौर पर इन भाषाओं का उपयोग करते हैं। इंटरनेशनल ओलंपियाड इन इंफॉर्मेटिक्स (IOI) केवल C, C ++ और पास्कल की अनुमति देता है (या शायद यह अब जावा की अनुमति देता है; मैंने नहीं रखा है), और ACM इंटरकॉलेजिएट प्रोग्रामिंग प्रतियोगिता (ACM ICPC) C, C ++ और Java की अनुमति देता है। टॉपकोडर सी ++, जावा, सी # और वीबी (वास्तव में: पी) की अनुमति देता है; और हाल ही में, पायथन। तो आप कह सकते हैं "प्रतियोगिता पारिस्थितिक तंत्र" में अधिक C ++ / Java प्रोग्रामर हैं। Google कोड Jam और IPSC उन कुछ प्रतियोगिताओं में से हैं जो वास्तव में किसी भी भाषा में कोड की अनुमति देते हैं।

  • अब सवाल यह है कि जीसीजे में जहां प्रतियोगी भाषा चुनने के लिए स्वतंत्र हैं, वे पायथन या स्कीम क्यों नहीं चुनेंगे? सबसे प्रासंगिक कारक यह है कि ये भाषाएं धीमी हैं । निश्चित रूप से, अधिकांश वास्तविक दुनिया की प्रोग्रामिंग के लिए वे आसानी से पर्याप्त रूप से तेज़ होते हैं, लेकिन उन तंग छोरों के लिए जो अक्सर सभी परीक्षण मामलों के लिए n- दूसरी सीमा के तहत चलाने के लिए एक कार्यक्रम प्राप्त करने में शामिल होते हैं, इन भाषाओं में से किसी के लिए यह कटौती नहीं करता है एल्गोरिदम में अधिक शामिल समस्याएं हैं। (O (n लॉग एन) समाधानों को स्वीकार करने के लिए डिज़ाइन की गई समस्या ( C (C 2 ) के लिए C (n 2 ) समाधान नहीं है ) धीमी भाषाओं में भी इष्टतम O (n लॉग एन) समाधानों पर अक्सर नियम चलता है। यहां तक ​​कि जावा को भी एक बाधा दिया जाता था। USACO; मुझे यकीन नहीं है कि यह अभी भी मामला है।)

  • एक अन्य कारक पुस्तकालयों है: C ++ और जावा में अक्सर उपयोगी एल्गोरिदम और डेटा संरचनाओं के लिए बेहतर पुस्तकालय हैं (उदाहरण के लिए लाल-काले पेड़, C ++ का अगला_करण), जबकि पायथन की लाइब्रेरी (वास्तविक दुनिया के लिए पर्याप्त) यहां कम उपयोगी है, और प्रोलॉग और स्कीम ... मैं उनके पुस्तकालयों के बारे में नहीं जानता। यह अपेक्षाकृत मामूली कारक है, क्योंकि ये प्रोग्रामर आवश्यक होने पर अपना कोड लिख सकते हैं। :-)

  • सामान्य प्रयोजन की बहु-प्रतिमान भाषाएं प्रतियोगिता के समय की कमी के भीतर उन चीजों को प्राप्त करने के लिए अधिक उपयोगी हैं, जो उन भाषाओं की तुलना में हैं जो आप पर चीजों को करने के लिए एक दर्शन या तरीका मजबूर करती हैं। यही कारण है कि प्रोलॉग हमेशा उदाहरण के लिए अलोकप्रिय रहेगा। (सामान्य दर्शन: कुछ भाषाएं "सक्षम करने वाली" भाषाएं हैं, जो आपको पैर में खुद को गोली मारने सहित कुछ भी करने देती हैं, कुछ "निर्देशन" हैं जो आपको चीजों को सही तरीके से करने के लिए मजबूर करती हैं।) यह भी है कि C ++ की तुलना में तीन गुना अधिक लोकप्रिय है। सामान्य प्रतियोगिता प्रतिभागियों में जावा, और शीर्ष प्रतियोगियों में बहुत अधिक लोकप्रिय है। चूंकि कोड किसी और के द्वारा पढ़ा नहीं जाना है, यह ठीक है और लूप मैक्रोज़ की तरह उपयोगी भी हैFOR(i,n)(टाइप करने के लिए कम कोड, और अधिक महत्वपूर्ण बात यह है कि जल्दबाजी में बग बनाने का कम मौका)। जावा के खिलाफ कुछ भी नहीं, कुछ शीर्ष प्रोग्रामर हैं जो जावा का भी उपयोग करते हैं। :-)

  • अंत में, हालांकि इनमें से कई शीर्ष प्रोग्रामर के पास सी ++ / जावा / पास्कल उनकी "पहली भाषा" के रूप में हो सकती है, वे अपनी भाषा के कारण अच्छे नहीं हैं, इसलिए आपको इसके बारे में निराशा नहीं करनी है। इन समान प्रोग्रामर्स में से कई ने आईसीपीई प्रतियोगिता जैसे जानबूझकर पागल भाषाओं का उपयोग करने के साथ ही शेल स्क्रिप्ट, एम 4 (ऑटोकॉन्फ़ में प्रयुक्त), और असेंबली ("यू कैन स्पेल विस्मय विदाउट एएसएम") का उपयोग करके भी प्रतियोगिता जीती है


2
मैं सहमत हूँ; जैसा कि मैंने कहा, पुस्तकालयों का अस्तित्व एक बहुत ही मामूली मुद्दा है। मैं इसे हटा सकता हूं यदि आपको लगता है कि मैंने इसे ओवरस्टैट किया था।
श्रीवत्सआर

2
दूसरी से लेकर अंतिम बुलेट बिंदु तक जावा के बारे में थोड़ा सा भी सही नहीं है। GCJ के कई शीर्ष प्रतियोगी जावा का उपयोग करते हैं।
NullUserException

1
[! फाइनल में अन्य भागीदार ( "linguo") का इस्तेमाल किया अजगर, और प्रतियोगिता के माध्यम से LOLCODE, पीट, असत्य, श्वेत रिक्ति, और FRACTRAN सहित भाषाओं का उपयोग किया गया है]
ShreevatsaR

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

1
@EvgeniSergeev जो आप कहते हैं, वह अधिकांश प्रोग्रामिंग प्रतियोगिताओं के लिए सही है, जैसे IOI / TopCoder, लेकिन विशेष रूप से GCJ में, बड़े इनपुट के लिए समय सीमा आमतौर पर 8 मिनट होती है, और समस्याओं को आमतौर पर डिज़ाइन किया जाता है ताकि पायथन समाधान भी पास हो सकें। 10 साल पहले भी अंगूठे का नियम प्रति सेकंड ~ 10 ^ 9 "सरल" ऑपरेशन था, इसलिए उदाहरण के लिए O (n ^ 2) को 2 (n ^ 3) से अलग करना, हमें बस n ^ 2 <10 ^ 9 * 60 चाहिए * 8 <n ^ 3, या लगभग 8000 <n <692000। आप 400x धीमी भाषा में भी n = 20000, और n ^ 2 algo ले सकते हैं (10 ^ 9/400 प्रति s) केवल 160 सेकंड लगेंगे, जबकि तेजी से n ^ 3 को 8000 सेकंड का समय लगेगा।
श्रीवत्सआर

14

मुझे Google AI प्रतियोगिता के प्रतियोगियों की साजिश रचने का जेरी कॉफिन का विचार पसंद आया, इसलिए मैंने सभी परिणामों को लिया और उन्हें प्लॉट किया (गणना का मतलब, मानक विचलन, और फिर एक्सेल में सामान्य वितरण घटता ग्राफ)।

लुआ और जेएस के साथ, यह मिला:

इसके बिना (कुछ प्रतियोगी थे, इसलिए शायद परिणाम विषम हैं):

ऐसा लगता है कि जावा प्रतिभागियों ने बाकी हिस्सों की तुलना में खराब प्रदर्शन किया, जबकि गो, कॉमन लिस्प और सी बेहतर अंत पर हैं।


हालाँकि, Google कोड जाम के बारे में पूछा गया प्रश्न और Google AI प्रतियोगिता नहीं है (आपका उत्तर पहली जगह है जो मैं इसके बारे में सुन रहा हूं), इसलिए Google ग्राफ़ Jam के लिए इन ग्राफ़ को खींचना अधिक प्रासंगिक हो सकता है। दरअसल, इस प्रश्न में पहले से ही ऐसे आंकड़ों (2010) का उल्लेख है ; यह भी देखना 2011 , 2012 , 2013 और (इस समय प्रगति में) 2014
श्रीवत्सआर

12

क्यों हम सभी अंग्रेजी बोलते हैं और नहीं एस्पेरांतो ? खैर, ऐसा ही हुआ। हालांकि अंग्रेजी असंगत और फूला हुआ है और एस्पेरांतो जानबूझकर 'बेहतर उपकरण' के रूप में तैयार किया गया है।

इस प्रकार, एक कारण एक परंपरा है। अधिकांश स्कूलों में अभी भी C / C ++, जावा, पास्कल या यहां तक ​​कि बेसिक में प्रोग्रामिंग सिखाई जाती है। और उन कंटेस्टेंट में भाग लेते हैं जो ज्यादातर छात्रों को चुनते हैं, जो भाषा वे बेहतर जानते हैं।
इसके अलावा, आप देख सकते हैं कि अधिकांश एल्गोरिथम पुस्तकें पास्कल या एडा की शैली में psedudocode की सुविधा देती हैं, और बहुत कम ही - लिस्प। मुझे पता नहीं क्यों, शायद एक परंपरा भी। या शायद यह एल्गोरिदम के लिए इतना अच्छा नहीं है।

एक और कारण गति होगा। हालाँकि यह Google कोड जाम की समस्या नहीं है, लगभग सभी प्रतियोगिताओं में 2x गति अंतर 'स्वीकृत' और 'समय सीमा' के बीच अंतर है।
दूसरे शब्दों में, यदि C ++ में इष्टतम एल्गोरिथ्म रूबी की तुलना में 10 गुना तेज है, तो इसका मतलब यह हो सकता है कि C ++ में उप-इष्टतम एल्गोरिथ्म अभी भी रूबी में एक अच्छे से अधिक तेज होगा। और प्रतियोगिता लेखक आमतौर पर O (n ^ 2) सबमिशन की अनुमति नहीं देना चाहते हैं, यदि O (n * logn) प्राप्त किया जा सकता है।


7
बस अपने सादृश्य पर एक टिप्पणी: एस्पेरांतो अपने लक्ष्यों पर बुरी तरह विफल रहता है। इसकी ध्वनियाँ बहुत हद तक ज़मानहोफ़ की पोलिश की बोली के समान हैं, और इसका व्याकरण अप्राकृतिक और जटिल है। यह किसी भी तरह से एक अच्छी सार्वभौमिक भाषा नहीं है; क्लिंगन, कई मायनों में, एक प्राकृतिक मानव भाषा की तरह प्रतीत होने का बेहतर काम करता है। मैं यह मान सकता हूं कि इसमें C ++ और Java में समानताएं हैं, लेकिन यह अनुचित होगा :) ( xibalba.demon.co.uk/jbr/ranto पर भी देखें ।)
एंटाल स्पेक्टर-ज़ेब्यूसिएस

1
@ अच्छी तरह से, सादृश्य त्रुटिपूर्ण हो सकता है, लेकिन आप मेरी बात मान लीजिए। तुम्हारे और मेरे बीच, मैं या तो
स्‍क्रीनशॉट

(प्राकृतिक) भाषा जनजातीय सदस्यता का एक बिल्ला है , और प्रोग्रामिंग भाषा एक ही दबाव से प्रभावित हैं
trapezoid

12

सबसे पहले, मैं आपके आधार पर सवाल उठाता हूं [संपादित करें: या मैं एक आधार होने के लिए क्या कहता हूं - वह प्रतियोगी जो C ++ और जावा किराया का समान रूप से उपयोग करता है]। उदाहरण के लिए, यहां उन भाषाओं का उपयोग किया गया था, जो पहले 100 स्थानों पर और Google की हालिया AI प्रतियोगिता में अंतिम 100 स्थानों में आने वाली प्रविष्टियों के लिए इस्तेमाल की गई थीं :

वैकल्पिक शब्द

C ++ और Java का उपयोग करने वाले प्रतियोगी कहीं भी उस प्रतियोगिता में समान रूप से सफल होने के करीब नहीं थे । पायथन का उपयोग करने वाले प्रतियोगियों को विशेष रूप से अच्छी तरह से किराया नहीं लगता था, हालांकि उनमें से बहुत कम थे, उस संबंध में किसी भी निष्कर्ष को कमजोर करते हुए।

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

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


1
खैर, ऐसा लगता है कि अधिकांश शीर्ष प्रतिभागियों ने C ++ / C # का उपयोग किया और उनमें से कम ने पायथन / हास्केल / लिस्प / स्कीम / रूबी / प्रोलॉग का उपयोग किया, जो प्रश्न के आधार को मजबूत करता है, है ना? सवाल यह नहीं था कि सी ++ और जावा की आपस में तुलना (हालांकि यह दिलचस्प है, धन्यवाद), लेकिन कुछ इस तरह: "क्यों" अच्छी "भाषाएं शीर्ष पर कम सुसंगत हैं?" अच्छे प्रतियोगी (जो संभवतः कई भाषाओं को नहीं जानते हैं) इनमें से किसी एक को क्यों नहीं चुनते हैं? " लेकिन मैं मानता हूं कि परिचितता प्रमुख कारणों में से एक है।
श्रीवत्सआर

मेरी धारणा (शायद गलत थी) यह सवाल था कि C ++ और जावा का उपयोग करने वाले प्रतियोगियों ने समान रूप से सफल रहे। यह कुछ प्रतियोगिताओं में सच हो सकता है, लेकिन निश्चित रूप से इस एक में नहीं लगता है। हालांकि यह निश्चित रूप से सच है कि उनमें से बहुत कम थे, गो, हास्केल, लुआ और सीएल का उपयोग करने वाले प्रतियोगी जावा का उपयोग करने वालों की तुलना में अधिक सफल लग रहे थे (हालांकि, माना जाता है कि सफलता दर के मामले में, सी ++ निश्चित रूप से कम से कम हावी था। यह विशेष मामला)।
जेरी कॉफ़िन

5
क्षमा मेरा नाइट-पिकिन 'लेकिन यह वास्तव में एक लाइन ग्राफ के बजाय एक बार चार्ट होना चाहिए ...
tzaman

अरे मेरा। मैं एक चार्ट बनाने के लिए संघर्ष कर रहा हूं जो एक घंटे के लिए समझ में आता है, और मैं प्रगति नहीं कर रहा हूं। एक्सेल और Google स्प्रेडशीट मुझे बेवकूफ महसूस करवाते हैं।
तातियाना रचेवा

हालांकि तकनीकी रूप से लिस्प का उपयोग C / C ++ मैक्रो प्रीप्रोसेसर के रूप में नहीं किया जा सकता है ...? आप इसे C ++ प्रोग्राम सबमिट कर सकते हैं, लेकिन वास्तव में आप लिस्प में कोडित हो सकते हैं!
aoeu256

12

लगभग सभी Google कोड जाम के दौर में, C ++ में उच्च प्रदर्शन करने वाले प्रतियोगी कोड के अधिक।

नीचे Google कोड Jam 2012 राउंड 1A, 1B, और 1C (ऊपर से नीचे सूचीबद्ध) के भाषा आँकड़े दिए गए हैं। प्रत्येक दौर में प्रतियोगियों की संख्या क्रमशः 3,686, 3,281 और 3,189 है।

Google कोड जाम 2012 दौर 1 ए से भाषा आँकड़े Google कोड जाम 2012 दौर 1B से भाषा आँकड़े Google कोड जाम 2012 दौर 1C से भाषा आँकड़े


8

मजेदार सवाल, शायद सामुदायिक विकि होना चाहिए।

: देशों द्वारा फाइनल की संख्या को देखो http://www.go-hero.net/jam/10/regions । पूर्वी यूरोप और रूस के लोगों की सूचना संख्या। उन स्थानों पर बहुत मजबूत C ++ समुदाय हैं, साथ ही साथ जावा कई कारणों से हैं।

क्वालीफायर में संख्या भाषाओं को देखें : http://www.go-hero.net/jam/10/languages/0 और फाइनल: http://www.go-hero.net/jam/10/languages/6 । सी ++ आधे से कम बाहर शुरू होता है और फाइनल में 75 प्रतिशत है। या तो अच्छे प्रोग्रामर C ++ पसंद करते हैं या C ++ प्रोग्रामर बनाता है। संभवतः जब तक आप सी ++ को मास्टर नहीं करते, तब तक अन्य चीजें तुच्छ हो जाती हैं।

हालांकि आप अपने स्वयं के निष्कर्ष निकालने के लिए स्वतंत्र हैं।


5

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


उपाख्यान का बहुवचन डेटा नहीं हो सकता है, लेकिन मैंने योजना को अपनी पहली भाषा के रूप में सीखा और मेरा इंट्रो सीएस कोर्स हास्केल में था। मैं मानता हूं कि यह असामान्य प्रतीत होता है, हालांकि: C / C ++ / Java / Python लोकप्रिय हैं।
वांग

अच्छी बात; मुझे लगता है कि यह बात दिल तक पहुंच जाती है। प्रोग्रामर के लिए पर्याप्त अभ्यास के साथ जो अक्सर आते हैं, वास्तव में अन्य भाषाओं में कोई बड़ा लाभ नहीं है। (और कहते हैं, जैसे पर्ल, की टेक्स्ट-प्रोसेसिंग क्षमता शायद ही इन प्रतियोगिताओं में किसी काम की हो।)
श्रीवत्सआर

3

OMG ... लोग सभी आँकड़े और आंकड़े से गुजर रहे हैं !!

बुनियादी बातों को न भूलें .. ये केवल दो भाषाएँ हैं (ज्यादातर) जो कि कॉलेज / स्कूलों में लोगों को सिखाई जाती हैं ...!

भारी भीड़ का जवाब हो सकता है!


3

एक महत्वपूर्ण कारण यह हो सकता है कि हर प्रतियोगी अजगर या प्रोलॉग जैसी भाषाओं का समर्थन नहीं करता है। विशेष रूप से ACM ICPC वर्ल्ड फ़ाइनल C / C ++ और Java को सपोर्ट करता है । और TopCoder भी केवल C ++, Java, C #, VB और अब Python का समर्थन करता है । प्रतियोगियों के लिए यह स्वाभाविक है कि वे एक ऐसी भाषा चुनेंगे जो हर प्रतियोगिता में उपलब्ध हो। एक और कारण निष्पादन की गति हो सकता है। और हाँ, एक और कारण यह है कि ऐसी भाषाएं हैं जो अधिकांश लोग पहले सीखते हैं।


2

एसीएम ICPC में जावा के लिए बिग लाइब्रेरी एक विक्रय बिंदु थे। यह महसूस करना आसान है कि आप कुछ यादृच्छिक डेटा संरचना या एल्गोरिथ्म चाहते हैं और इसे मानक पुस्तकालयों से बाहर खींच सकते हैं।


2

ध्यान रखें कि C ++ सभी प्रतियोगियों में न केवल बहुसंख्यक है, बल्कि जैसे-जैसे दौर आगे बढ़ रहा है, इसका प्रतिशत बढ़ता ही जा रहा है और इसमें सुधार होता जा रहा है।

मैं कहूंगा कि यह सच है कि अधिकांश प्रतिभागी छात्र हैं (हालांकि, चूंकि यह एक खुला टूर्नामेंट है जिसमें Google के साथ नौकरी के लिए साक्षात्कार होता है, तो आपको यह विचार करना होगा कि भाग लेने वाले कई स्नातक हैं)। लेकिन नवीनतम दौर केवल अनुभव वाले लोगों के लिए हैं। वे सिर्फ ऐसे छात्र नहीं हैं जिन्होंने सिर्फ C ++ / Java में कोड करना सीखा है।

बेशक, छात्र का तर्क LISP और OcaML या ProLog जैसी भाषाओं के खिलाफ भी काम करता है। वह भाषाएं हैं, जो एआई क्षेत्रों में बहुत उपयोग की जाती हैं, लेकिन मुख्यधारा की दुनिया में छात्रों को सीखने और उनका उपयोग करने की सबसे अधिक संभावना है।

Google की कुछ भाषाओं के समर्थन के अलावा अन्य बड़ी प्रतियोगिताएं, लेकिन फिर भी यह नहीं बताएगा कि पास्कल या .net जावा के स्तर के पास क्यों नहीं हैं (जैसा कि वे प्रमुख प्रतियोगिता आयोजनों में समान रूप से समर्थित होते हैं)।

इन प्रतियोगिताओं में बहुत सारे सर्वश्रेष्ठ कोडर बहुत सारी भाषाएं जानते हैं। लेकिन वे अभी भी राउंड के दौरान C ++ का उपयोग करना पसंद करते हैं, यह पहले "सीखे गए C ++" की तुलना में बड़े कारण के लिए होना चाहिए।

मैं इस दावे के खिलाफ तर्क दूंगा कि सी ++ या जावा के अलावा अन्य भाषाएं नौकरी के लिए बेहतर साधन हैं। यदि प्रत्यक्ष डेटा कहता है कि फाइनलिस्ट सी ++ और जावा का उपयोग करने की अधिक संभावना रखते हैं तो यह उस दावे के लिए एक सीधा विरोधाभास है।

Google AI प्रतियोगिता डेटा वास्तव में कोड जाम के बारे में किसी भी आधार का खंडन नहीं करता है। यह वास्तव में दिखाता है कि शीर्ष कोडर आम लिस्प जैसी भाषाओं का उपयोग करने में सक्षम हैं जब यह वास्तव में नौकरी के लिए बेहतर उपकरण है। यदि हम इस डेटा का उपयोग यह मानने के लिए करना चाहते हैं कि सीएलआईएसपी एआई प्रतियोगिताओं के लिए एक महान उपकरण है, तो हमें यह भी मानना ​​चाहिए कि सी ++ जीसीजे जैसे एल्गोरिथ्म प्रतियोगिताओं के लिए एक महान उपकरण है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.