"आपको केवल एलएलवीएम आईआर को सावधानीपूर्वक बनाने की आवश्यकता है।" मोनो और .NET कोर के बारे में ईगोर बोगटोव

Egor Bogatov मोनो टीम का एक Microsoft डेवलपर है जो मोनो पर काम करता है और इसे .NET कोर के साथ एकीकृत करता है। हमने उनके साथ गेम देव के प्यार के बारे में ज़ामरीन और माइक्रोसॉफ्ट के अंदर काम करने के तरीके के बारे में बात की। हमने चर्चा की कि SSDs एक डेवलपर के सबसे अच्छे दोस्त क्यों हैं, और सम्मेलन प्रस्तुतियों की उपयोगिता हमेशा उनकी जटिलता के साथ संबंध नहीं रखती है। हमेशा की तरह, साक्षात्कार JUG.ru समूह से ओलेग चिरुखिन ( ऑलीगिर ) द्वारा आयोजित किया जाता है।


पेश है: एनक्रिप्टेड डेमोस और हाउ टू गेट इन ज़मारिन


- हब्र को बताएं कि आप कौन हैं, आप क्या करते हैं।

- मैं एक डेवलपर हूं, मैं लगभग दस वर्षों से .NET स्टैक में काम कर रहा हूं, मैंने जावा में थोड़ा काम किया है और एंड्रॉइड के लिए थोड़ा लिखा है।

उन्होंने विभिन्न कंपनियों में काम किया: आउटसोर्सिंग के साथ शुरुआत की, फिर किराने की ओर स्विच किया, जैसे कि वाइबर और प्लेटिका। फिर मैंने जावा सहित थोड़ा मुक्त किया, और ज़ामरीन में काम करने चला गया।

- आप वहां कैसे पहुंचे?

- मैं बहुत लंबे समय से .NET और मोनो के आदी रहा हूं। मुझे C # पसंद आया, लेकिन मैंने Microsoft नीति को पसंद नहीं किया, जिसने इसे विंडोज पर मजबूती से बांध दिया। इसलिए, मैं शुरू से ही क्रॉस-प्लेटफॉर्म कार्यान्वयन का पालन कर रहा हूं।

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

- कहाँ से शुरू किया?

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

मिगुएल में कई दिलचस्प परियोजनाएं हैं। कभी-कभी मुझे ऐसा लगता है कि यह उसी नाम के लोगों का समूह है। ठीक है, एक व्यक्ति हर चीज में गड़बड़ी नहीं कर सकता, हर किसी को जवाब दे सकता है, हर चीज से अवगत हो सकता है।

कई बार मैंने उनके लिए बड़े सम्मेलनों जैसे कि ज़ामरीन इवॉल्व और एमएस बिल्ड के लिए एक डेमो किया - यह माइक्रोसॉफ्ट का सबसे बड़ा डेवलपर सम्मेलन है।

और इन डेमो का उनका व्यावसायिक महत्व क्या था, उनकी आवश्यकता क्यों है?

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

नौकरी के बारे में: कार्य और शाश्वत विवाद "दूरस्थ या कार्यालय"


"अब आप क्या कर रहे हैं?"

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

"क्या आप घर से काम करते हैं?"

- हमारे पास मिन्स्क में एक छोटा Microsoft कार्यालय है। मैं समय-समय पर वहां जाता हूं, लेकिन ज्यादातर घर से ही काम करता हूं।

- और क्या बेहतर है: कार्यालय में या घर पर काम करना?

- घर पर काम करने के लिए आपको आत्म-अनुशासन की बहुत आवश्यकता होती है। समय-समय पर मैं इसे यात्रा के साथ संयोजित करने की कोशिश करता हूं, लेकिन यह बहुत प्रभावी ढंग से काम नहीं करता है। उदाहरण के लिए, मुझे तीन मॉनिटर के साथ एक पूर्ण स्वस्थ डेस्कटॉप कंप्यूटर की आवश्यकता है। लैपटॉप पर, मैं आराम से काम नहीं कर सकता।

- क्या आपको मॉनिटर के लिए इसकी आवश्यकता है या कंप्यूटर पावर महत्वपूर्ण है?

- और मॉनिटर के लिए, और सत्ता के लिए। मुझे समय-समय पर अलग-अलग रनटाइम को संकलित करने की आवश्यकता होती है: मोनो, कॉर्क्लर, कोरर्ट, ट्विक वर्चुअल मशीन, आदि। ऐसा करने के लिए, मुझे एक पूर्ण-शीर्ष प्रोसेसर की आवश्यकता है, और टीपीडी द्वारा गलतफहमी कटौती नहीं है, और निश्चित रूप से, एक तेज एसएसडी।

- यही है, यदि आप मोनो कोड पर काम करना चाहते हैं, तो क्या आपको एक सामान्य कंप्यूटर की आवश्यकता है?

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

- अपने कार्य दिवस का वर्णन करें

- मैं मिन्स्क से दूरस्थ रूप से काम करता हूं। मेरी टीम का थोक संयुक्त राज्य अमेरिका में है, हालांकि यूरोप में कई लोग हैं, जापान, ऑस्ट्रेलिया, यहां तक ​​कि अफ्रीका में भी लोग हैं। ऐसी वितरित टीम। हम मुख्य रूप से स्लैक में संवाद करते हैं, एक सप्ताह में कई बार रैलियां करते हैं। हम समय-समय पर बोस्टन या रेडमंड में मिलते हैं।

कार्य ज्यादातर बहुत सार हैं। उदाहरण के लिए, किसी विशिष्ट नाम स्थान से पोर्ट प्रकार। मैं समानांतर में कुछ ले सकता हूं, गिटहब में जा सकता हूं और कुछ कीड़े ठीक कर सकता हूं। समय-समय पर मैं .NET कोर के लिए कुछ करता हूं - मैं कुछ को अनुकूलित या साफ करने की कोशिश करता हूं।

- और कार्य कहां से आते हैं, यह कैसे आयोजित किया जाता है? कोई अंतहीन बैकलॉग?

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

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

Microsoft, Axes और विश्वासघात के बारे में


- ठीक है, हाँ, लाइसेंस की अनुमति देता है। और वास्तव में आप एक ही कंपनी में हैं।

- हाँ, यह करता है। हमने पहले भी ऐसा किया है। मोनो कुछ वितरणों का हिस्सा था, मुझे लगता है कि उबंटू और गनोम में भी मोनो था। मिगुएल को बताया गया था कि वह सभी को मठ में जाने देगा।

"हाँ, मुझे याद है, स्टैलमैन ने उसे देशद्रोही कहा था।"

“उन्हें डर था कि Microsoft के वकील किसी भी क्षण आ सकते हैं और सभी पर मुकदमा कर सकते हैं, जो सौभाग्य से, Microsoft ने नहीं किया।

- ठीक है, हाँ, माइक्रोसॉफ्ट ने ठीक इसके विपरीत किया - यह घर पर लिनक्स का उपयोग करना शुरू कर दिया।

- Microsoft अब नए सीईओ के साथ पूरी तरह से अलग है, क्लाउड प्रौद्योगिकियों पर ध्यान ने हमें खुले स्रोत की दुनिया में ले लिया है और यह सब हम पहले के बारे में नहीं सोच सकते थे। अब एक क्लिक के साथ मार्केटप्लेस से उबंटू डब्ल्यूएसएल डाउनलोड करना, लिनक्स पर एमएस एसक्यूएल सर्वर को तैनात करना और मैकओएस के तहत .NET से अंडर डेवलप करना संभव है।

- यानी, आप खुले लाइसेंस के तहत सुरक्षित रूप से कोड लिख सकते हैं और कोई भी कुछ नहीं कहेगा?

"हाँ, बिल्कुल।" स्वाभाविक रूप से, कुछ आंतरिक परियोजना को खुले स्रोत में रखने से पहले, हमें थोड़ी नौकरशाही की आवश्यकता है, लेकिन सामान्य तौर पर, मुझे किसी भी चीज के उपयोग पर कोई प्रतिबंध नहीं मिला।

- क्या आपके पास ऐसे कार्य हैं जिन्हें एक साथ तीन प्लेटफार्मों की आवश्यकता होती है?

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

.NET कोर और मोनो को समझना


- वे कौन सी दिशाएं हैं जो आपको पसंद हैं और क्या उन्हें .NET कोर और मोनो में विकसित किया जा सकता है?

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

यह भी उत्साहजनक है कि सी # और .NET गेम देव में सी ++ के साथ एक समतल पर मुख्यधारा में हैं, एकता और कुछ अन्य इंजनों के लिए धन्यवाद जिनके पास सी # स्क्रिप्टिंग है।
एक संभावित दिलचस्प दिशा है - ब्राउज़र के लिए वेब असेंबली में सी # संकलित करना।

- मुझे पता नहीं है कि कैसे .NET में है, लेकिन कभी-कभी मुझे संकलन के लिए मानक पुस्तकालयों का एक गुच्छा खींचना पड़ता है। जावा में, आप हैलो वर्ल्ड चलाते हैं, और आपके पास 2,000 कक्षाएं भरी हुई हैं। ब्राउज़र में बड़ी संख्या में मेगाबाइट लोड किए जाएंगे। आप इस बारे में क्या सोचते हैं?

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

- क्या आपने प्लस या सी के बजाय मोनो # को फिर से लिखने की कोशिश की है?

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

कचरा बीनने वाले के बारे में


- मैंने .NET कोर जीसी देखी, जो बच्चों को डराता है, क्योंकि यह सी ++ में स्रोत का डेढ़ मेगाबाइट है! डेढ़ मेगाबाइट, कार्ल! यह कितनी किताबें हैं!

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

- क्या आपके पास प्लगइन्स या कचरा कलेक्टर को बदलने की क्षमता है या यह एक है?

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

- तथ्य यह है कि माइक्रोसॉफ्ट ने सब कुछ पर कुल नियंत्रण जाने दिया है, क्योंकि जीसी और जेआईटी एक बहुत अच्छा नियंत्रण उपकरण हैं।

- हां। .NET फाउंडेशन को देखें - यह सिर्फ माइक्रोसॉफ्ट नहीं है। वहां Google, Red Hat, Samsung, Intel, सामान्य रूप से, सभी कंपनियां जो पहले लगती थीं, वह Microsoft के बगल में नहीं खड़ी होंगी। जब तक कि Apple गायब नहीं है।

आईडीई सहायता के बारे में


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

- C # कंपाइलर Roslyn को मूल रूप से IL में न केवल C # कंपाइलर के रूप में लिखा गया था, बल्कि एक IDE बैकएंड और एनालाइजर भी है, यह खराब कोड को भी पचा सकता है। आप बस कुछ दृश्य दिखा सकते हैं और इसके आउटपुट के आधार पर कुछ कर सकते हैं, और वह सीधे कहेगा: "मुझे वहां मेनू दिखाओ", "प्रस्ताव को फिर से प्रस्तुत करना", "यहाँ आपके पास परिवर्तनों का पूर्वावलोकन है", आदि .. "हाइलाइट," उपयोगकर्ता को रिफैक्टरिंग प्रदान करते हैं। ” यही है, यह संकलक सीधे आपको अपनी आईडीई बनाने की अनुमति देता है।

वास्तव में, आप बस अपने GUI के लिए इंटरफेस का एक सेट लागू करते हैं, और आपके पास पहले से ही एक IDE है जो रिफैक्टरिंग और इस तरह के एक बड़े सेट का समर्थन करता है।

सामान्य तौर पर, कई आधुनिक भाषाएँ एएसटी प्रदान करती हैं, कोड अभिव्यक्तियों का एक सार पेड़। उदाहरण के लिए, क्लैंग प्लस कोड से एक अमूर्त पेड़ प्राप्त करना संभव बनाता है, वैसे, हम इस सुविधा का उपयोग सी ++ और उद्देश्य-सी कोड के लिए सी # बाइंडिंग उत्पन्न करने के लिए करते हैं।

- क्या आपने किसी चीज के लिए विजुअल स्टूडियो कोड का उपयोग करने की कोशिश की है?

- अच्छा, मैं कहूंगा कि यह मेरा सबसे बुनियादी उपकरण है।

- मान लीजिए कि दोस्त मोनो रिपॉजिटरी खोलना और उसे लटका देना चाहता है। इसके लिए उसे क्या चाहिए?

- विंडोज पर, बस रनटाइम का समाधान और बीटीएसएल का समाधान खोलें और दोनों का निर्माण करें। कुशल समानांतरकरण के लिए धन्यवाद, msbuild इसे लगभग 5 मिनट में करना चाहिए। macOS और लिनक्स पर, मेकफाइल्स के माध्यम से सामान्य दृष्टिकोण का उपयोग किया जाता है।

रिपोर्ट और कुछ बिगाड़ने वालों की तैयारी पर


- आप रिपोर्ट के साथ DotNext पर आ रहे हैं, लेकिन इसके बारे में क्या होगा?

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

Microsoft के साथ इंटेल के लोग CD # SIMD के लिए एक निम्न-स्तरीय API में लाए हैं, जो आपको कंपाइलर पर भरोसा किए बिना अल्ट्रा-फास्ट एल्गोरिदम लिखने की अनुमति देता है, जो कि, जैसा कि बहुत से लोग सोचते हैं, सब कुछ स्वयं को अनुकूलित और वेक्टर कर पाएंगे - यह नहीं है।

- सामान्य मामले में, यह सैद्धांतिक रूप से असंभव है।

- हाँ, आंतरिक अंतर्ज्ञान की स्वतंत्र प्रविष्टि से दूर होने के लिए कहीं नहीं। मुझे संदेह है कि किसी भी भाषा में कोई भी मैट्रिसेस के गुणन या ट्रांसपोज़ेशन का वर्णन सरल प्रकारों पर कर सकता है और संकलक से आउटपुट तक सबसे प्रभावी एसएसई / एवीएक्स निर्देशों की उम्मीद कर सकता है। वैसे, मैंने पहले से ही इन C # इंट्रिंसिक्स को .NET कोर के अंदर लागू किया है ताकि System.Numerics.Matrix को ऑप्टिमाइज़ किया जा सके SSE का उपयोग करके और GetHexDigits फ़ंक्शन को Lzcnt का उपयोग करके ऑप्टिमाइज़ किया जा सके। आप इसे अपनी परियोजनाओं में एपीआई का उपयोग करने के एक उदाहरण के रूप में उपयोग कर सकते हैं।

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

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

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

- हां। मैंने अब अप-फॉर-ग्रेब टैग को फ़िल्टर कर दिया है, यहाँ लगभग 600 मुद्दे हैं, कुछ बिना किसी टिप्पणी के और आप उन्हें ले सकते हैं।

- हाँ, यह सही है। हाल ही में, उन्होंने .NET कोर-टीम के लिए एक हैकथॉन आयोजित किया। उन्होंने कुछ दर्जन मुद्दों को आवंटित किया, और एक दिन में उन्हें तय करना पड़ा और इसके लिए पुरस्कार प्राप्त किया।

- यह बहुत अच्छा है। उन्होंने बहुत सी दिलचस्प बातें बताईं, अब मैं खुद कुछ मुद्दे सुलझाने की कोशिश करना चाहता हूं। सच है, मैं सी # नहीं जानता, यही समस्या है।

- सी #, जैसा कि मैं विश्वास करना चाहता हूं, चीनी की मात्रा और जावा या सी ++ में अनुभव होने के बावजूद एक काफी अनुमानित भाषा है, मुझे लगता है कि आप रनटाइम में कुछ बहुत जल्दी अनुकूलन शुरू कर सकते हैं, अन्य भाषाओं में अनुभव भी आपकी मदद करेगा दूसरी तरफ से चीजों पर।

- मैं .NET कोर रिपॉजिटरी को देख रहा हूं और यह बहुत सभ्य है। और लोग वास्तव में टिप्पणियों में संवाद करते हैं, चर्चा सीधे हो रही है।

- हां, काफी सक्रिय। 100 और 200 टिप्पणियाँ हैं। और आप कक्षाओं के आधार पुस्तकालय से सीख सकते हैं, बहुत सारे दिलचस्प कार्य हैं जो कोई भी ले सकता है।

- जवाब के लिए बहुत बहुत धन्यवाद! DotNext पर मुझसे मिलें।

इस बार, एक मिनट का विज्ञापन असामान्य होगा, क्योंकि जब हम साक्षात्कार की तैयारी कर रहे थे, तो सम्मेलन टिकट भाग गए। रिपोर्ट देखना चाहते हैं और टिकट खरीदने के लिए समय नहीं है? लाइव स्ट्रीमिंग अभी भी साइट पर उपलब्ध है।

यदि आपके पास व्यक्तिगत रूप से DotNext 2018 मास्को की यात्रा करने के लिए प्रश्न या एक अविश्वसनीय इच्छा है, तो हमें टिकट@dotnext.ru पर लिखें (शायद कोई टिकट वापस कर देगा और हम आपकी मदद कर सकते हैं)।

Source: https://habr.com/ru/post/hi430048/


All Articles