खेल प्रोग्रामिंग. प्रोग्रामिंग ओलंपियाड - क्या वे वास्तविक कार्य में मदद करते हैं? कार्यों और उनकी तैयारी के बारे में

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

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

  • एसीएम आईसीपीसी फाइनल में भाग लिया;
  • बेलारूसी विश्वविद्यालय की ओर से बात की;
  • विश्वविद्यालय में अपनी पढ़ाई पहले ही पूरी कर चुका है;

एक चयन किया. परिणाम बेलारूस से इक्कीस एसीएम आईसीपीसी फाइनलिस्टों की सूची थी। हम उनमें से अधिकांश से संपर्क करने और तीन सरल प्रश्न पूछने में सक्षम थे:

  1. आपका वर्तमान कार्यस्थल क्या है और किए गए कार्य की स्थिति/सार क्या है?
  2. यह कंपनी/व्यवसाय क्यों?
  3. भविष्य के लिए आपकी क्या योजनाएं हैं, आप इसे अपने लिए कैसे देखते हैं? आप कहां जाना चाहाेगे?

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

इवान मिखनेविच (ACM ICPC 2000)

  1. वारगेमिंग पब्लिक कंपनी लिमिटेड, निदेशक।
  2. यह मेरे कामकाजी करियर की शुरुआत से ही कंपनियों के समूह में वृद्धि का परिणाम है।
  3. हकीकत में, मैं पहले से ही इस सब से थक चुका हूं और अब एक नया करियर शुरू करने का समय आ गया है, एक नई जगह पर, एक नए क्षेत्र में (संभवतः, आईटी नहीं)।

सर्गेई स्टेपांत्सोव (ACM ICPC 2000)

  1. मैं वर्तमान में इंटेटिक्स कंपनी में उपाध्यक्ष व्यवसाय विकास के रूप में काम करता हूं।
  2. मेरा अधिकांश करियर इस कंपनी से जुड़ा हुआ है, जहां मैं विभिन्न भूमिकाओं में खुद को आजमाने में कामयाब रहा: मैंने एक परीक्षण विशेषज्ञ के रूप में शुरुआत की, और एक प्रोग्रामर, प्रोजेक्ट मैनेजर और एक उत्पादन विभाग के प्रमुख के रूप में भी काम किया। और अंततः मैं व्यवसाय विकास में विशेषज्ञ बन गया।
  3. मैं अभी भी खुद को इतना बूढ़ा महसूस नहीं करता कि खुद को विकसित करना बंद कर सकूं :)। मुझे लगता है कि मेरे जीवन के व्यावसायिक हिस्से का भविष्य अभी भी मुझे कई रोमांचक मोड़ों से प्रसन्न करेगा।

व्लादिमीर टैंकोविच (एसीएम आईसीपीसी 2000, 2003)

  1. वर्तमान में माइक्रोसॉफ्ट में मैं किनेक्टा के लिए कंप्यूटर विज़न एल्गोरिदम पर काम कर रहा हूं। इससे पहले मैं खोज प्रासंगिकता में था।
  2. मैं 2005 से इस कंपनी के साथ हूं। वे मुझे बेलारूस गणराज्य से ले आए, और अभी तक जाने का कोई मतलब नहीं था। मैं इस टीम में शामिल हुआ क्योंकि यह मुझे वैज्ञानिक कार्य करने की अनुमति देता है, जो लेखों के संग्रह में नहीं, बल्कि एक तैयार उत्पाद में जाता है।
  3. भविष्य के लिए कोई विशेष योजना नहीं है. आईटी में, पैसा कोई समस्या नहीं है, मिन्स्क और यहां दोनों जगह। अब तक, मुझे मशीन लर्निंग और एआई को समझने में बहुत दिलचस्पी है। इससे पता चलता है कि मैं लगभग हर समय वही करता हूं जो मैं चाहता हूं और इसके लिए मुझे अच्छा भुगतान भी मिलता है। यानी अगले 1-2 साल तक मैं यही काम करूंगा और फिर देखेंगे। मैं बहुत सारा अनुभव प्राप्त कर रहा हूं, और अगर मेरे पास इसे विश्वसनीय रूप से लागू करने का कोई विचार है, तो मैं एक स्टार्टअप का प्रयास करूंगा।

एलेक्सी किर्कोवस्की (एसीएम आईसीपीसी 2002, 2005)

  1. एनटी एलएलसी "लक्ससॉफ्ट", दूसरी श्रेणी के सॉफ्टवेयर इंजीनियर।
  2. मैं वास्तव में प्रसिद्ध मॉस्को बॉडी शॉप लक्ससॉफ्ट में जाना चाहता था, बचपन से ही मैंने हैच को स्वचालित करने का सपना देखा था, लेकिन मैंने एक भी पत्र पर ध्यान नहीं दिया और बेलारूसी लक्ससॉफ्ट में समाप्त हो गया। वहां, मैंने बिना देखे कुछ कागजात पर हस्ताक्षर किए, और अब मैं बेलारूसी रूबल में एक निश्चित वेतन के लिए 20 साल के अनुबंध के तहत काम कर रहा हूं, जो केवल गैसोलीन के लिए पर्याप्त है।
  3. मेरी योजना प्रति मिनट लाइनों की संख्या के मानक को पूरा करने और प्रथम श्रेणी का सॉफ्टवेयर इंजीनियर बनने की है। फिर प्रोग्रामिंग में एक सीएमएस प्राप्त करें, जिसे अनुबंध की पूरी अवधि के दौरान काम करने में एक भी देरी नहीं होने पर मुझे यहां सौंपा जाएगा।

एलेक्सी डैनचेंको (एसीएम आईसीपीसी 2002, 2005)

  1. एनटी एलएलसी "लक्ससॉफ्ट" सॉफ्टवेयर इंजीनियर। में हाल ही मेंमैं अपने उत्पाद के लिए एक डोमेन-विशिष्ट प्रोग्रामिंग भाषा विकसित कर रहा हूं।
  2. एक दिलचस्प विचार को लागू करने के लिए दोस्तों के साथ काम करने का अवसर।
  3. जीवन का आनंद लेना जारी रखें.

एवगेनी गोन्चर (एसीएम आईसीपीसी 2003)

  1. गूगल स्विट्जरलैंड (ज्यूरिख), वरिष्ठ सॉफ्टवेयर इंजीनियर। मैं वेब खोज अवसंरचना परियोजनाओं में से एक पर काम कर रहा हूं।
  2. मुझे बचपन से ही प्रोग्रामिंग पसंद थी।
  3. मैं इलेक्ट्रिक गिटार बजाने में प्रगति करना चाहता हूं और फिर से न्यूजीलैंड जाना चाहता हूं।

इवान मेटेल्स्की (एसीएम आईसीपीसी 2003, 2004)

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

विक्टोरिया लेबेड (एसीएम आईसीपीसी 2004)

  1. मैं गणितज्ञ था और रहूंगा। वह टीम में एकमात्र व्यक्ति थी जिसने कंप्यूटर को नहीं छुआ :) उसने सभी "साइड" काम किए। मैं पेरिस में रहता हूं और काम करता हूं। वर्तमान में मेरे पास पेरिस 7 विश्वविद्यालय में एक अस्थायी पद है - वैज्ञानिक गतिविधिऔर शिक्षण. हाल ही में मेरी पीएचडी प्राप्त हुई।
  2. यह गतिविधि इसलिए है क्योंकि यह व्यक्तिगत और रचनात्मक स्वतंत्रता बनाए रखने का एक दुर्लभ अवसर प्रदान करती है।
  3. मैं कोशिश करता हूं कि भविष्य के लिए कोई योजना न बनाऊं. फिर, ताकि अपने आप को किसी तक सीमित न रखेंफिर ढांचे के भीतर और अपने आप को व्यक्तिगत रूप से अपेक्षाओं, आशाओं और अन्य चीजों के बोझ में उजागर न करें। मैं ठीक हूँमैं विश्वविद्यालय और वैज्ञानिक वातावरण में शुरू की गई यात्रा को जारी रखने की कल्पना करता हूं, लेकिन मैं दरवाजा बंद नहीं कर रहा हूंअन्य विकल्पों के लिए.

मैक्सिम ओसिपोव (ACM ICPC 2004)

  1. विरोनआईटी, निदेशक। व्यवसाय प्रबंधन (मुख्य रूप से परिचालन नहीं, बल्कि बिक्री प्रक्रियाओं, विकास, कार्य की गुणवत्ता आदि को बदलने के उद्देश्य से)
  2. VironIT कंपनी, क्योंकि यह मेरी कंपनी है, मैं मालिक हूं। यह एक वर्ग (गैर-परिचालन प्रबंधन) है क्योंकि यह पता लगाना कि व्यवसाय कैसे बढ़ाया जाए, मेरे लिए सबसे दिलचस्प बात है।
  3. अपनी कंपनी विकसित करें, अन्य चीजों के अलावा, उत्पाद मॉडल पर स्विच करें, एक परिवार और बच्चे शुरू करें। मैं भविष्य को दिलचस्प, कठिन, लेकिन निश्चित रूप से सकारात्मक देखता हूं।

पावेल इरज़ाव्स्की (एसीएम आईसीपीसी 2007, 2008)

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

व्लादिमीर केरस (एसीएम आईसीपीसी 2007, 2008)

  1. ईपीएएम. मोबाइल विकास विभाग के अग्रणी सॉफ्टवेयर इंजीनियर। मैं एंड्रॉइड के लिए एप्लिकेशन विकसित कर रहा हूं।
  2. मुझे नई चीजें सीखना पसंद है, और मेरी वर्तमान कंपनी में मैं आसानी से अपनी प्रोफ़ाइल बदल सकता हूं और सही लोगों-शिक्षकों को ढूंढ सकता हूं।
  3. मैंने पहले ही एक पेड़ लगा दिया है, मैं घर बनाने के लिए बचत कर रहा हूं, मैं बच्चे पैदा करने की योजना बना रहा हूं (आदर्श रूप से, मेरी अपनी बार्सिलोना टीम)।

सर्गेई तिखोन (एसीएम आईसीपीसी 2009)

  1. ईपीएएम सिस्टम्स, लीड सॉफ्टवेयर इंजीनियर। वास्तुकार/विशेष परियोजना डेवलपर।
  2. मिलनसार, मजबूत टीम, दिलचस्प कार्य, पेशेवर विकास के अच्छे अवसर।
  3. आईटी में काम करें, लेकिन विज्ञान की सीमा पर, वास्तविक अनुप्रयोगों और सेवाओं (मशीन लर्निंग, प्राकृतिक भाषा प्रसंस्करण, खोज प्रौद्योगिकी, मॉडलिंग) में डेटा विज्ञान के कार्यान्वयन पर काम करें। कार्यात्मक प्रोग्रामिंग का प्रचार, प्रसार और कार्यान्वयन (मैं एफ# पर एक ब्लॉग चलाता हूं)।

एलेक्सी लोबानोव (एसीएम आईसीपीसी 2010)

  1. Yandex कंपनी, Yandex.Maps की डेवलपर। इसके समानांतर, मैं बीएसयू के ग्रेजुएट स्कूल में पढ़ रहा हूं और डीएमए एफपीएमआई विभाग में सहायक के रूप में काम कर रहा हूं (मैं "एल्गोरिदम और डेटा स्ट्रक्चर्स" पाठ्यक्रम में व्यावहारिक कक्षाएं पढ़ाता हूं)।
  2. यांडेक्स क्यों: दिलचस्प कार्य (जटिल, ज्ञान-गहन, एल्गोरिथम सहित), आरामदायक काम करने की स्थिति और एक उत्कृष्ट टीम हैं। एफपीएमआई बीएसयू क्यों: मुझे लगता है कि अपने ज्ञान को छात्रों की अगली पीढ़ी तक पहुंचाना महत्वपूर्ण है।
  3. भविष्य के लिए योजनाएँ: सफलतापूर्वक स्नातक विद्यालय पूरा करें और पीएच.डी. की रक्षा करने का प्रयास करें।

एलेक्सी टॉल्स्टिकोव (ACM ICPC 2010)

  1. बीएसयू, कम्प्यूटेशनल गणित विभाग में सहायक, स्नातक विद्यालय से स्नातक, पाठ्यक्रम पढ़ाना« समानांतर और वितरित कंप्यूटिंग» (अभ्यास)। यांडेक्स,शैक्षणिक कार्यक्रमों के क्यूरेटर, डेटा विश्लेषण स्कूल की मिन्स्क शाखा के प्रमुख (+ वहां शिक्षक), खोज डेवलपर।
  2. मैं इसे एक वाक्य में नहीं कर सकता, लेकिन क्योंकि: "मुझे यह पसंद है!"
  3. कहने को ज्यादा कुछ नहीं है. मैं इन सभी दिशाओं में आगे बढ़ रहा हूं।
"हम फेसबुक और गूगल पर नहीं जाएंगे": दुनिया के कुछ सर्वश्रेष्ठ प्रोग्रामर येकातेरिनबर्ग में क्यों रहते हैं और काम करते हैं

यूराल फ़ेडरल यूनिवर्सिटी से विश्व प्रोग्रामिंग चैम्पियनशिप के विजेताओं के साथ एक दिलचस्प साक्षात्कार।

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

मेरी राय में, इस लोकप्रियता का एक हिस्सा इस साक्षात्कार की कुछ टिप्पणियों से स्पष्ट होता है:

"यूआरएफयू ने इस बार सबसे अच्छा परिणाम क्यों दिखाया? क्या सितारे संरेखित हुए?"

मिखाइल रुबिनचिक: हमारे पास एक शानदार टीम है। ओलेग, लेशा और बाकी सभी बहुत मजबूत लोग हैं। ओलेग अब अपने छठे वर्ष में है, उसने दूसरे वर्ष में पढ़ाई शुरू की, लेकिन तीसरे तक उसका स्तर पहले से ही एक अच्छा स्तर था।[...]

"कौन सा आपके करीब है? एक स्टार्टअप? या एक बड़ी कंपनी?"

ओलेग मर्क्यूरीव: मैंने कहीं भी काम नहीं किया है। और मैं अगले छह महीनों में कहीं भी काम नहीं करने जा रहा हूं। मैं ग्रेजुएट स्कूल जाऊंगा, मुझे थोड़ा विज्ञान का अध्ययन करने की ज़रूरत है, अन्यथा मैं आम तौर पर अपना सारा समय खेल प्रोग्रामिंग पर बिताता हूं।

वे। यह वास्तव में सबसे पहले और सबसे महत्वपूर्ण एक खेल जैसा लगता है। इसमें कुछ जंगली प्रतिबंध शामिल हैं जो खेल प्रतियोगिताओं के लिए विशिष्ट हैं:

"आइए चैंपियनशिप के बारे में थोड़ी बात करें। टीम में तीन लोग। एक कंप्यूटर। एक क्यों? तीन क्यों नहीं?"

मिखाइल रुबिनचिक: जूरी ने एक बार ऐसा निर्णय लिया था। यह तीस साल पहले की बात है.

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

[...] आप विश्व कप में एक प्रिंटर का उपयोग कर सकते हैं। पहला व्यक्ति बैठ गया, कुछ समाधान लिखा, यह काम नहीं किया। उसे गलती ढूंढ़नी होगी. कंप्यूटर से पढ़ना महंगा है, लेकिन हमारे पास केवल एक ही संसाधन है। इसलिए, वे इसे प्रिंटर पर प्रिंट करते हैं और कागज के एक टुकड़े पर पढ़ते हैं।

ख़ैर, मुझे समझ नहीं आता कि यह इतना आकर्षक कैसे हो सकता है। प्रोग्रामिंग एक रचनात्मक गतिविधि है. कोई कार्यक्रम नहीं था और अब एक है. आप कंप्यूटर के साथ कुछ नहीं कर सकते थे, लेकिन अब आप कर सकते हैं। क्या इससे कोई फर्क पड़ता है कि इसमें 20 मिनट लगे या 40? यह बस कुछ अरुचिकर पहलू है।

नहीं, मैं उन प्रतिबंधों की कल्पना कर सकता हूं जो खेल में उत्साह लाते हैं - लेकिन कई दिनों के स्तर पर और वास्तव में कठिन, दिलचस्प कार्य। लुडुम डेयर प्रतियोगिता की तरह - दो दिनों में एक गेम लिखें। या ICFP प्रोग्रामिंग प्रतियोगिता, वे तीन दिन का समय देते हैं, और स्थितियाँ आमतौर पर मन को चकरा देने वाली होती हैं। इसकी तुलना खेल प्रोग्रामिंग में विश्व कप के कार्यों से करें। यदि आप मिनटों और सेकंडों के लिए प्रतिस्पर्धा करते हैं (तीन के बीच एक कंप्यूटर के साथ भी), तो कार्य इस तरह सामने आते हैं - कुछ पेचीदा "मोड़" के साथ कई मानक एल्गोरिदम का चालाक उपयोग।

सामान्य तौर पर, यह एक अजीब दुनिया है. मुझे दोष मत दो, जो उससे डरते हैं। लेकिन मुझे समझ नहीं आया और मैं नहीं समझता।

उनका कहना है कि जब उनका जन्म हुआ तो डोनाल्ड नथ खुद उन्हें देखने आए थे. वे कहते हैं कि जब उन्हें Google में काम करने के लिए आमंत्रित किया गया, तो उन्होंने 15 मिनट में 16 बार संपूर्ण खोज एल्गोरिदम को दोबारा लिखा। वे कहते हैं कि वह क्वांटम कंप्यूटिंग की प्रगति को मुस्कुराहट के साथ देखते हैं, क्योंकि जब वह इसे देखते हैं, तो संख्याएं डर के कारण खुद को प्रभावित करती हैं। लेकिन हम एक बात निश्चित रूप से जानते हैं: पीटर खेल प्रोग्रामिंग के वास्तविक देवता हैं।

डेटा

  • कई चैंपियनशिप के विजेता, पीटर ने दो बार टॉपकोडर जीता और दो बार एसीएम आईसीपीसी में दूसरा स्थान हासिल किया।
  • अपने खाली समय में, पीटर नियमित प्रतियोगिताओं "डमीज़ के लिए एल्गोरिदमिक समस्याएं" के बारे में एक ब्लॉग लिखते हैं: petr-mitrichev.blogspot.ru।
  • मित्रिचेव वर्तमान में Google में काम करते हैं, जहां वह खोज गुणवत्ता पर काम करते हैं। पीटर गूगल कोड जैम प्रतियोगिताओं की तैयारी में भी मदद करता है।

बहुत से लोग सोचते हैं कि खेल प्रोग्रामर अच्छे लोग हैं, असली गीक्स हैं जो एल्गोरिदम को समझते हैं और जटिल समस्याओं को हल करते हैं। लेकिन वो ये भी कहते हैं कि बाद में खुद को कहीं अप्लाई करना उनके लिए बहुत मुश्किल होता है. यह सच है?

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

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

आपने समस्याओं का समाधान किस भाषा में लिखा?

जावा में. स्कूल में मैंने पास्कल में लिखा क्योंकि उस समय मुझे कुछ और नहीं पता था। और फिर, जब यह चुनना आवश्यक था कि किस पर स्विच किया जाए, तो जावा पास्कल के करीब निकला।

प्रतिस्पर्धी माहौल में, आपको 20-30 मिनट में एक प्रोग्राम लिखना होगा, और इसे तुरंत सही ढंग से काम करना चाहिए। इसलिए, यह बहुत महत्वपूर्ण है कि भाषा बगों को पनपने न दे। C++, जिसे अधिकांश लोग उपयोग करते हैं, इस तथ्य से अलग है कि इसे लिखना काफी आसान है गलत प्रोग्राम. आप गलती से कुछ भूल सकते हैं, किसी वेरिएबल को गलत प्रकार निर्दिष्ट कर सकते हैं, लेकिन यह सब किसी तरह संकलित होगा और किसी तरह काम करेगा। संभवतः उस तरीके से नहीं जैसा आप उम्मीद करते हैं।

जावा में, यदि आप कोई गलती या टाइपो त्रुटि करते हैं, तो प्रोग्राम संभवतः संकलित नहीं होगा। यहां सब कुछ सख्त है, जैसा कि पास्कल के मामले में था। यह मुझे अधिक उचित लगा. पीछे की ओरपदक - जावा प्रोग्राम अक्सर C++ प्रोग्राम की तुलना में डेढ़ गुना धीमी गति से चलते हैं। कभी-कभी ये डेढ़ बार कार्यक्रम को समस्या की स्थितियों में फिट करने के लिए पर्याप्त नहीं होते हैं।

हर कोई अपनी प्रोग्रामिंग भाषा चुन सकता है, है ना?

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

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

तो क्या ये सब जीवन में लागू होता है? आख़िरकार, ऐसी नौकरी ढूँढ़ना संभवतः कठिन है जहाँ यह ज्ञान उपयोगी हो। हाँ, आप Google या Yandex पर जा सकते हैं, लेकिन क्या किसी बैंक में आना अधिक कठिन है?

मुझे ऐसा लगता है कि यह कौशल का एक बहुत ही उपयोगी हिस्सा है, वह हिस्सा जो किसी प्रोग्राम को पहली बार त्रुटियों के बिना लिखने या किसी मित्र के प्रोग्राम में त्रुटि ढूंढने की क्षमता के लिए ज़िम्मेदार है। मैंने खुद किसी बैंक में काम नहीं किया है, लेकिन मुझे लगता है कि ऐसे कौशल वहां भी उपयोगी होंगे। हालाँकि, निश्चित रूप से, एल्गोरिदम स्वयं वास्तव में हर काम में उपयोग नहीं किए जाते हैं। लेकिन व्यक्तिगत तौर पर यह पृष्ठभूमि मेरी बहुत मदद करती है।

संभवतः आपके पास कोई विशेष कहानी होगी कि आप Google में कैसे आए?

हाँ, कोई कहानी नहीं है, सब कुछ दूसरों जैसा ही था। अब मैं खोज कर रहा हूं (इसका सामान्य हिस्सा, जो देश और भाषा पर निर्भर नहीं करता है), लेकिन, दुर्भाग्य से, मैं इसके बारे में कुछ नहीं बता सकता, क्योंकि यह बहुत गोपनीय हिस्सा है।

खेल प्रोग्रामिंग: पक्ष और विपक्ष

आइए मैं आपसे एक मूर्खतापूर्ण प्रश्न पूछने का प्रयास करता हूँ :)। आपके अनुसार खेल प्रोग्रामिंग क्यों की जानी चाहिए?

यहां सब कुछ बहुत सरल और किसी भी अन्य खेल के समान है। यदि आपको यह पसंद है, यदि आपको इससे आनंद मिलता है तो आपको इसे करने की आवश्यकता है। यह अपने आप में अंत नहीं होना चाहिए. आपको खेल प्रोग्रामिंग को अच्छा समय बिताने, दिलचस्प लोगों से मिलने आदि के तरीके के रूप में सोचने की ज़रूरत है।

यदि आप कोई कारण बताने का प्रयास करें कि आपको खेल प्रोग्रामिंग पर समय क्यों बर्बाद नहीं करना चाहिए तो क्या होगा?

मुझे लगता है कि आपको इस बात से अवगत होने की आवश्यकता है कि यह जीवन में मुख्य बात नहीं है। इसके अलावा कुछ अन्य लक्ष्य भी रखें। यदि कोई चीज़ आपके पूरे जीवन पर कब्ज़ा करने लगती है, तो शायद यह कम से कम एक ब्रेक लेने के बारे में सोचने का एक कारण है।

लेकिन अभ्यास क्या कहता है? उदाहरण के लिए, क्या खेल प्रोग्रामिंग के आसपास करियर बनाना संभव है?

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

क्या आपने कभी खुद इस बारे में सोचा है? क्या आपने कभी जूरी में या समस्या लेखक के रूप में भाग लिया है?

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

जहां तक ​​प्रतियोगिताओं का सवाल है, सबसे पहले मैं हमारी प्रतियोगिता के लिए Google Code Jam के लिए समस्याएँ बनाने में मदद करता हूँ। साथ ही मैं एसीएम सेमीफाइनल में मदद करता हूं, जो सेंट पीटर्सबर्ग में होता है। यह फाइनल के लिए रूसी टीमों और पूर्व यूएसएसआर की टीमों के बीच चयन है।

क्या प्रतियोगिताओं से पैसा कमाना संभव है? आख़िरकार, वे जीतने पर नकद पुरस्कार देते हैं।

संभावना बहुत कम है. दस हजार प्रतिभागियों के लिए एक पुरस्कार?.. मैं इसे कमाई नहीं कहूंगा। इसे आय के मुख्य स्रोत के रूप में गिनते हुए... मुझे ऐसा लगता है कि इसकी कोई संभावना नहीं है।

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

प्रतियोगिताएं आज

हमें और विस्तार से बताएं कि अब किस तरह की प्रतियोगिताएं हैं, यह सब कैसे होता है?

आज दो तरह की प्रतियोगिताएं हैं. साप्ताहिक, नियमित प्रतियोगिताएँ होती हैं। इनका संचालन दो मुख्य साइटों - टॉपकोडर और कोडफोर्सेस द्वारा किया जाता है। प्रत्येक प्रतियोगिता में डेढ़ से दो घंटे का समय लगता है। वहां, प्रतिभागियों को हल करने और प्रोग्राम को सर्वर पर भेजने के लिए कई समस्याएं दी जाती हैं। आयोजक जाँच कर रहे हैं कि कार्यक्रम चल रहा है या नहीं।

टॉपकोडर साप्ताहिक प्रतियोगिताओं वाली सबसे पुरानी और सबसे प्रसिद्ध साइट है। उनके निम्नलिखित नियम हैं. तीन समस्याओं को हल करने के लिए एक घंटा और पंद्रह मिनट आवंटित किए जाते हैं।

कार्यों को आमतौर पर बहुत सरल, मध्यम और कठिन में विभाजित किया जाता है। आयोजक उन्हें चुनने का प्रयास करते हैं ताकि, कहें, पांच लोग सभी समस्याओं को हल करते हैं, सौ लोग दो को हल करते हैं, और बाकी सभी कम से कम एक को हल करते हैं। इसके अलावा, प्रत्येक कार्य के लिए यह महत्वपूर्ण है कि आप इसे कब सबमिट करें - जितना बाद में, आपको उतने ही कम अंक प्राप्त होंगे। इस प्रकार उन लोगों को विभाजित किया जाता है जिन्होंने समान संख्या में समस्याएँ हल कीं। फिर बिंदुओं का सारांश दिया जाता है। एक सामान्य कार्य 250 अंक का होता है। औसत 500. कठिन 1000. औसतन, पहले स्थान पर रहने वाले लोगों को प्रति प्रतियोगिता एक हजार से कुछ अंक मिलते हैं।

फिर वे पांच मिनट का ब्रेक लेते हैं और बाकी पंद्रह मिनट दूसरों की गलतियां ढूंढने में बिताते हैं। आप अपने "कमरे" में किसी भी व्यक्ति की किसी भी समस्या का समाधान खोल सकते हैं। एक "कमरा" वह जगह है जहां किसी प्रतियोगिता में भाग लेने वाले लोगों को यादृच्छिक रूप से बीस के समूहों में विभाजित किया जाता है। वे "कमरों" में विभाजित हैं। आप अपने "कमरे" से किसी भी व्यक्ति का कोई भी समाधान खोल सकते हैं। यदि समाधान आपको गलत लगता है, तो आप इनपुट डेटा दर्ज कर सकते हैं जिस पर यह गलत होगा। और यदि यह वास्तव में गलत उत्तर देता है, तो आपको इसके लिए अतिरिक्त 50 अंक मिलते हैं। निस्संदेह, यह कार्य की लागत से कम है। लेकिन यह फिर से लोगों को बांटने के लिए किया गया है।' मुख्य अंक अभी भी समस्याओं को हल करने के लिए दिए जाते हैं, न कि त्रुटियाँ खोजने के लिए।

इस सब के बाद, जूरी द्वारा तैयार किए गए परीक्षणों पर कार्यों का परीक्षण किया जाता है। यदि कार्य पूरा नहीं होता है, तो व्यक्ति को 0 अंक प्राप्त होते हैं।

एक दूसरी साइट भी है, रूसी, कोडफोर्स। उनके नियम थोड़े अलग हैं, लेकिन प्रारूप लगभग समान है - दो घंटे और कई कार्य। यदि आप चाहें तो पांच घंटे तक चलने वाली छात्र प्रतियोगिताओं के विपरीत इस प्रारूप को मनोरंजक कहा जा सकता है।

लेकिन क्या अभी भी बड़ी, वार्षिक प्रतियोगिताएँ होती हैं?

हां, साप्ताहिक रूप से होने वाली दो वर्णित प्रतियोगिताओं के अलावा, कई और वार्षिक प्रतियोगिताएं भी होती हैं। आमतौर पर उन्हें इस तरह संरचित किया जाता है: एक निश्चित बड़ी कंपनी (Google, Yandex, TopСoder, IBM) चयन के कई चरणों के साथ एक प्रतियोगिता आयोजित करती है। पहला चरण ऑनलाइन होता है। और अंतिम चरण पहले से ही एक विशिष्ट स्थान पर आयोजित किया जाता है, जहां सभी फाइनलिस्टों को ले जाया जाता है। ऐसी प्रतियोगिताएं केवल पांच से दस ही होती हैं, लेकिन वे लंबी होती हैं, इसलिए उनमें से एक तो हर समय होती रहती है।

क्या ये सभी प्रतियोगिताएं व्यक्तिगत हैं?

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

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

हां, पहले स्थान पर गोमेल का एक बहुत ही होशियार छात्र गेना कोरोटकेविच है, जो अब आईटीएमओ में पढ़ रहा है। कोडफोर्स पर मेरे परिणाम हाल ही में खराब रहे हैं; अब मैं छठे या पांचवें स्थान पर हूं। वहां भी गेना पहले स्थान पर आती है।

शायद, ऑनलाइन और ऑफलाइन खेलना बिल्कुल अलग एहसास और अनुभव है?

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

ऐसी प्रतियोगिताओं में - चयन के साथ - आमतौर पर नियमित प्रतियोगिताओं की तुलना में अधिक लोग भाग लेते हैं। यदि किसी व्यक्ति ने कभी कहीं भाग नहीं लिया है, तो साप्ताहिक प्रतियोगिताएँ एक समस्या हो सकती हैं। कुछ ऐसी परेशानियां होती हैं जिनका समाधान इंसान नहीं ढूंढ पाता और परेशान हो जाता है। क्वालीफाइंग प्रतियोगिताओं में, आमतौर पर सब कुछ सरल होता है, कम से कम पहले चरण में। उनका मुख्य विचार सभी का मनोरंजन करना है। फिर, अंत में एक ठोस पुरस्कार है - प्रथम स्थान के लिए नकद पुरस्कार। साथ ही, किसी स्थान की यात्रा, उदाहरण के लिए Google कार्यालय की यात्रा भी काफी लाभदायक है।

क्या ऐसा होता है कि कंपनियां प्रतिस्पर्धियों द्वारा प्रस्तुत समाधानों से हुए विकास को जीवन में उपयोग करने का प्रयास करती हैं?

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

क्या समय के साथ प्रतियोगिताएं बदलती हैं? क्या वे अधिक कठिन होते जा रहे हैं या, इसके विपरीत, आसान होते जा रहे हैं?

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

कार्यों और उनकी तैयारी के बारे में

प्रतियोगिताओं के लिए कार्यों की रचना कैसे की जाती है? क्या ऐसे संकलक हैं, ऐसे लोग हैं जो पहले से ही जानते हैं कि यह कैसे करना है, या यह किसी प्रकार की क्राउडसोर्सिंग है जहां हर कोई अपनी खुद की कुछ पेशकश कर सकता है?

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

ऐसी समस्याओं से निपटना एक विशेष कौशल है, है ना?

अरे हां। आप समाधान के आधार पर समस्याएं लेकर आ सकते हैं। मान लीजिए कि आपने किसी दिलचस्प एल्गोरिदम के बारे में किसी वैज्ञानिक पत्रिका में कुछ लेख पढ़ा है। या मुझे बस एक निश्चित एल्गोरिदम मिला और याद आया कि मैंने पहले इसका सामना किया था, लेकिन हाल ही में मैंने इसे लंबे समय तक नहीं देखा है। आप कोई ऐसा कार्य लेकर आ सकते हैं जिसके लिए इसके उपयोग की आवश्यकता है।

दूसरा तरीका: जब काम या जीवन में एक निश्चित समस्या उत्पन्न होती है, और आपको एहसास होता है कि इसका उपयोग अच्छे तरीके से किया जा सकता है। आपको चीजों को जटिल बनाना पड़ सकता है या प्रतिबंधों को बदलना पड़ सकता है, लेकिन तब यह प्रतियोगिता के लिए एक दिलचस्प समस्या बन जाएगी।

जीवन से निकटता की अलग-अलग डिग्री की प्रतियोगिताएँ होती हैं। आमतौर पर प्रतियोगिताओं में कार्य कुछ औपचारिक शब्दों में नहीं दिया जाता है, जैसे "दिया गया: अमुक समीकरण हल करें।" आमतौर पर एक निश्चित पृष्ठभूमि या इतिहास दिया जाता है। जैसा कि स्कूली गणित की पाठ्यपुस्तकों में होता है: "एक पाइप से प्रति मिनट दस लीटर पानी बहता है।" इसलिए, आपको पहले किसी तरह इस कहानी को औपचारिक बनाना होगा, इसमें एक गणितीय समस्या ढूंढनी होगी और उसके बाद ही इसे हल करना होगा।

अन्य प्रतियोगिताएं भी हैं. टॉपकोडर इसे मैराथन मैच कहता है, और अन्य कंपनियां भी इसी तरह की प्रतियोगिताएं आयोजित करती हैं। इन्हें थोड़ा अलग तरीके से डिजाइन किया गया है। यह अब एल्गोरिदम में प्रतिस्पर्धा नहीं है, बल्कि अनुमानित समस्याओं को हल करने में है। जब कोई सटीक समाधान नहीं होता है और आपको सर्वोत्तम संभव विकल्प के साथ आने की आवश्यकता होती है। ऐसी प्रतियोगिताएं आमतौर पर दो सप्ताह या एक महीने तक चलती हैं। आप भेज सकते हैं विभिन्न समाधानऔर देखें कि, हाँ, अब मेरा समाधान दूसरों की तुलना में 20% बेहतर है।

क्या "बेहतर" का मतलब तेज़ होना, कम मेमोरी का उपयोग करना आदि है?

हाँ। उदाहरण के लिए, आपको यथासंभव कम बसों का उपयोग करने के लिए मास्को के मानचित्र पर बस यातायात को वितरित करने के लिए एक योजना के साथ आने की आवश्यकता है। अर्थात्, समस्या कथन में एक निश्चित पैरामीटर होता है जिसे अनुकूलित करने की आवश्यकता होती है, लेकिन कोई एक "सही समाधान" नहीं है, केवल कुछ अनुमानित एल्गोरिदम हैं।

उसी टॉपकोडर ने नासा के साथ मिलकर प्रतियोगिताएं आयोजित कीं, और उनका कहना है कि जो समाधान उन्हें पेश किए गए थे, उन्हें वास्तव में अनुकूलित किया गया और आईएसएस पर उपयोग किया गया। वहां वे किसी खास समस्या का समाधान कर रहे थे, ऐसा लगता है कि कैसे मुड़ें सौर बैटरीताकि उसे अधिक ऊर्जा मिले.

कहाँ से शुरू करें

एक अच्छा एल्गोरिथम प्रोग्रामर और विभिन्न प्रतियोगिताओं में भाग लेने वालों को तैयार करने की दृष्टि से - इसके लिए स्वयं को कैसे तैयार करें? यदि आप स्वयं को हाई स्कूल के छात्र या प्रथम वर्ष के छात्र के स्थान पर कल्पना करते हैं?

मैं सबसे ज्यादा सोचता हूं मानक तरीका- इसे अजमाएं। सभी प्रतियोगिताओं में पहले से आयोजित प्रतियोगिताओं का संग्रह उपलब्ध है, ऐसी हजारों समस्याएं हैं जिन्हें किसी भी समय हल किया जा सकता है।

यदि मैं कोई कार्य अपने हाथ में लूं और मुझे यह भी पता न हो कि इसे किस प्रकार से निपटाऊं तो क्या होगा?

तो, इसे सरलता से लें। वे भिन्न हैं। ऐसी समस्याएं हैं जिन्हें हर दूसरा स्कूल स्नातक हल कर सकता है। कठिनाई के पूर्णतः भिन्न स्तर हैं। इसमें शामिल होना काफी आसान होना चाहिए। मुझे ऐसा लगता है कि इसके अलावा कोई रास्ता नहीं है। साथ ही, इस तरह आप तुरंत समझ जाएंगे कि आपको यह गतिविधि पसंद है या नहीं।

एल्गोरिथम आधार प्राप्त करने के लिए क्या करने की आवश्यकता है? न्युथ को पढ़ने के लिए तुरंत भागने की शायद ही कोई आवश्यकता है।

मुझे ऐसा लगता है कि हमें कार्यों से शुरुआत करने की जरूरत है। केवल बाद में, जब आपको एहसास होता है कि आप उनमें से किसी एक को हल नहीं कर सकते हैं, तो इन प्रतियोगिताओं में प्रत्येक का एक विश्लेषण होता है। यदि आप स्वयं इसका सामना नहीं कर सकते तो आप समाधान पढ़ सकते हैं। उदाहरण के लिए, विश्लेषण इंगित करता है कि समस्या को हल करने के लिए एक निश्चित एल्गोरिदम का उपयोग किया जाता है। आप पढ़ सकते हैं कि यह एल्गोरिदम क्या है और इसका उपयोग कहां किया जाता है यह सूची से पढ़ने से बेहतर है "हां, मेरे पास एक एल्गोरिदम है जिसे मुझे गर्मियों में अध्ययन करने की आवश्यकता है।" किसी विशिष्ट समस्या से शुरुआत करना बेहतर है जिसे आप हल नहीं कर सकते क्योंकि आप एक विशिष्ट एल्गोरिदम नहीं जानते हैं। ये ज्यादा सही है. आप बेहतर याद रखते हैं, आपकी प्रेरणा मजबूत होती है। एल्गोरिदम सीखने का यह तरीका संभवतः सूची से अधिक समय लेता है, लेकिन इससे बेहतर परिणाम मिलते हैं।

यदि आप एल्गोरिदम का उपयोग करके खुद को "पंप अप" करना चाहते हैं, तो क्या कोई साहित्य या पाठ्यपुस्तकें हैं?

सबसे मानक पाठ्यपुस्तक कॉर्मेन, लेइसरसन, रिवेस्ट है जिसके कवर पर एक गधा है। "एल्गोरिदम: निर्माण और विश्लेषण" कहा जाता है। मुझे नहीं पता, मैंने काफी समय से अध्ययन नहीं किया है, अब शायद नई पाठ्यपुस्तकें हैं जो बेहतर हो सकती हैं। लेकिन मेरे समय में वे कॉर्मेन का इस्तेमाल करते थे। नॉट, बल्कि, एक प्रकार की संदर्भ पुस्तक है। यदि आपको कोई चीज़ ढूंढनी है और वह कहीं नहीं मिली है, तो संभावना है कि वह वहां होगी। लेकिन नुथ को लगातार पढ़ना... यह एक बहुत दुखद अनुभव है।

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

आईटीएमओ विश्वविद्यालय से एसीएम आईसीपीसी विजेता

यह प्रोग्रामर्स के लिए रूट करने का समय है

“प्रोग्रामिंग भविष्य है: हर घर में बड़ी संख्या में प्रोग्राम करने योग्य डिवाइस हैं, और ये प्रौद्योगिकियां हमारे जीवन के सभी क्षेत्रों में प्रवेश कर रही हैं। सोवियत संघ के इंजीनियरों की तरह, प्रोग्रामर भी अब विज्ञान और प्रौद्योगिकी के क्षेत्र में अग्रणी हैं। कोडिंग प्रतियोगिताएं तेजी से लोकप्रिय और शानदार खेल बनती जा रही हैं और भविष्य बहुत आशाजनक है।"- जोर देता है एंड्री स्टेनकेविच.

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

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


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

शुरू से आखिर तक जीत

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


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

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

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

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


आर्थिक प्रश्न

“अब खेल प्रोग्रामिंग की प्रासंगिकता का मुद्दा विशुद्ध रूप से आर्थिक पहलू में बदल गया है। बात यह है कि हम एक महत्वपूर्ण बिंदु पर हैं, जब सूचना प्रौद्योगिकी विकास के नए दौर में ज्यादा समय नहीं बचा है। यह वह दुनिया है जिसमें हम सभी जल्द ही खुद को पाएंगे: बैंकिंग प्रणाली, चिकित्सा पूरी तरह से बदल जाएगी, चालक रहित कारें दिखाई देंगी, इस तथ्य का उल्लेख नहीं करने के लिए कि कई पेशे बस गायब हो जाएंगे - लोग अपनी नौकरियां खो देंगे। लेकिन प्रोग्रामर के पास वास्तव में बहुत कुछ होगा। और हम इसे अब देखते हैं: उनकी मांग ऐसी है कि भौतिकविदों और गणितज्ञों का वेतन, यहां तक ​​​​कि संयुक्त राज्य अमेरिका में भी, प्रोग्रामर की तुलना में दो गुना कम है। और वे देश जिनके पास अब इस क्षेत्र में उच्च योग्य कर्मचारी हैंआईटी अगले 10-20 वर्षों में प्रगति करेगा", - व्लादिमीर पारफेनोव निश्चित है।

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

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


डोपिंग

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



मित्रों को बताओ