Floating-Point Usage on GitHub: A Large-Scale Study of Statically Typed Languages
यह शोध पत्र लाखों गिटहब (GitHub) रिपॉजिटरीज़ में स्टैटिकली टाइप की गई भाषाओं में फ्लोटिंग-पॉइंट अंकगणित के उपयोग का पहला बड़े पैमाने पर अनुभवजन्य अध्ययन प्रस्तुत करता है, जो यह प्रकट करता है कि जबकि मौजूदा बेंचमार्क आंशिक रूप से प्रतिनिधि हैं, वे वास्तविक दुनिया के कोड पैटर्न को पूरी तरह से कैप्चर नहीं करते हैं, और भविष्य की रीजनिंग तकनीकों का मार्गदर्शन करने के लिए 10 मिलियन निकाले गए फंक्शनों का एक डेटासेट जारी करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक रोबोट को गणित करना सिखाने की कोशिश कर रहे हैं। लेकिन सिर्फ साधारण जोड़-घटाव नहीं; आप चाहते हैं कि वह उस उलझे हुए, अपूर्ण गणित को भी संभाल सके जिसका उपयोग असल दुनिया में कंप्यूटर करती है (जैसे कि रॉकेट का प्रक्षेप पथ या किसी स्टॉक की कीमत निकालना)। इसे फ्लोटिंग-पॉइंट अंकगणित (floating-point arithmetic) कहा जाता है।
समस्या यह है कि इस तरह का गणित बहुत पेचीदा होता है। कंप्यूटर हर दशमलव को पूरी तरह से स्टोर नहीं कर सकते, इसलिए वे उसे राउंड ऑफ (round off) कर देते हैं, जिससे छोटी त्रुटियां पैदा होती हैं। ये त्रुटियां जमा होकर बड़ी आपदाएं ला सकती हैं।
वर्षों से, शोधकर्ता ऐसे उपकरण बनाने की कोशिश कर रहे हैं कि क्या यह गणित सुरक्षित है। लेकिन इन उपकरणों का परीक्षण करने के लिए, वे अभ्यास के लिए एक बहुत ही विशिष्ट, छोटे सेट (जिसे बेंचमार्क कहा जाता है) का उपयोग करते रहे हैं। यह एक पायलट को एक बड़े वाणिज्यिक हवाई जहाज को उड़ाना सिखाने के लिए केवल एक छोटे से खाली हैंगर में खिलौने वाले विमान के साथ अभ्यास कराने जैसा है। शोधकर्ताओं ने इस शोध पत्र में पूछा: "क्या हमारा अभ्यास वाला हैंगर वास्तव में असली आसमान जैसा है?"
यहाँ उनके अध्ययन की कहानी दी गई है, जिसे सरल रूप में समझाया गया है:
1. द ग्रेट गिटहब ट्रेजर हंट (The Great GitHub Treasure Hunt)
शोधकर्ताओं ने अनुमान लगाना बंद करने और वास्तविक चीज़ को देखने का निर्णय लिया। वे GitHub पर गए, जो एक विशाल, सार्वजनिक लाइब्रेरी की तरह है जिसमें दुनिया भर के लोगों द्वारा लिखे गए लाखों सॉफ्टवेयर प्रोजेक्ट्स शामिल हैं।
- चुनौती: यहाँ इतने अधिक प्रोजेक्ट्स हैं कि उन सभी को पढ़ना असंभव है। यह शहर के आकार की लाइब्रेरी की हर किताब को पढ़ने की कोशिश करने जैसा है।
- रणनीति: उन्होंने एक चतुर "मछली पकड़ने वाले जाल" (एक कंप्यूटर प्रोग्राम जिसे उन्होंने Scyros नाम दिया) का उपयोग किया। उन्होंने केवल सबसे लोकप्रिय प्रोजेक्ट्स को नहीं उठाया (जो पक्षपाती हो सकते हैं); बल्कि उन्होंने एक निष्पक्ष तस्वीर पाने के लिए लाखों प्रोजेक्ट्स का एक रैंडम सैंपल लिया।
- फ़िल्टर: उन्होंने केवल उन भाषाओं पर ध्यान केंद्रित किया जहाँ खेल के "नियम" सख्त हैं (स्टैटिकली टाइप्ड भाषाएँ)। क्यों? क्योंकि इन भाषाओं में, कंप्यूटर आपको बिल्कुल सटीक रूप से बताता है कि आप किस प्रकार के नंबरों का उपयोग कर रहे हैं (जैसे कि "यह एक दशमलव है," "यह एक पूर्णांक है")। अन्य भाषाओं में, कंप्यूटर अनुमान लगाता है, जिससे लाखों प्रोजेक्ट्स को स्वचालित रूप से स्कैन करना असंभव हो जाता है।
2. उन्होंने क्या पाया: "वास्तविक दुनिया" बनाम "अभ्यास का मैदान"
447,000 प्रोजेक्ट्स को छानने और 1 करोड़ फंक्शन (कोड के छोटे हिस्से) निकालने के बाद, उन्हें कुछ आश्चर्यजनक बातें पता चलीं:
- फ्लोटिंग-पॉइंट गणित हर जगह है: उन्होंने पुष्टि की कि लगभग 62% सभी सॉफ्टवेयर प्रोजेक्ट्स इस पेचीदा गणित का उपयोग करते हैं। यह कोई दुर्लभ चीज़ नहीं है; यह आधुनिक कंप्यूटिंग की रीढ़ है।
- "खिलौना" बेंचमार्क बहुत सरल हैं: शोधकर्ता आमतौर पर जिन अभ्यास समस्याओं का उपयोग करते हैं (जैसे कि FPBench सूट), वे बहुत साफ-सुथरी होती हैं। वे व्हाइटबोर्ड पर लिखे गए अलग-थलग गणितीय समीकरणों की तरह हैं।
- असली कोड: वास्तविक दुनिया में, ये गणितीय फंक्शन बहुत उलझे हुए होते हैं। वे लूप्स (बार-बार होने वाली क्रियाएं), इफ-स्टेटमेंट्स (निर्णय लेना जैसे "यदि तापमान बहुत अधिक है, तो रुकें"), और अन्य फंक्शन को लगातार कॉल करने जैसी चीजों में लिपटे होते हैं।
- मेल न खाना: अभ्यास संबंधी बेंचमार्क में ये जटिल विशेषताएं शायद ही कभी होती हैं। यह एक पायलट की उड़ने की क्षमता का परीक्षण करने के लिए केवल बिल्कुल शांत मौसम में उड़ाने जैसा है। गणित का परीक्षण करने वाले उपकरण "व्हाइटबोर्ड समीकरणों" को हल करने में तो बेहतरीन हैं, लेकिन वास्तविक सॉफ्टवेयर के "उलझे हुए कॉकपिट" का सामना करने में विफल हो सकते हैं।
- "विशेष" लाइब्रेरी दुर्लभ हैं: शोधकर्ता अपने उपकरणों का परीक्षण करने के लिए अक्सर GNU साइंटिफिक लाइब्रेरी (GSL) के फंक्शन का उपयोग करते हैं। अध्ययन में पाया गया कि वास्तविक दुनिया के कोड में, लोग इन विशिष्ट लाइब्रेरी फंक्शन का लगभग कभी भी उपयोग नहीं करते हैं। वे अपने स्वयं के कस्टम मैथ या स्टैंडर्ड मैथ लाइब्रेरी का उपयोग करते हैं।
3. उपमा: "कुकिंग क्लास" (The Analogy: The "Cooking Class")
कल्पना कीजिए कि आप एक कुकिंग इंस्ट्रक्टर हैं जो छात्रों को एक परफेक्ट सूफ़ले (फ्लोटिंग-पॉइंट मैथ) बनाना सिखाने की कोशिश कर रहे हैं।
- पुराना तरीका: आप उन्हें सामग्री और मिश्रण के निर्देशों के साथ एक रेसिपी कार्ड देते हैं। आप उन्हें इस कार्ड पर टेस्ट करते हैं। वे पास हो जाते हैं! लेकिन फिर, आप उनसे एक व्यस्त, शोर-शराबे वाले किचन में, टूटे हुए ओवन और चिल्लाते हुए ग्राहक के बीच सूफ़ले बनाने के लिए कहते हैं। वे बुरी तरह विफल हो जाते हैं क्योंकि परीक्षण ने उन्हें उस अराजकता के लिए तैयार नहीं किया था।
- नया तरीका (यह पेपर): शोधकर्ता हजारों वास्तविक किचनों में गए (GitHub), उन्होंने देखा कि शेफ वास्तव में कैसे खाना बनाते हैं, और महसूस किया: "अरे, असली शेफ तो टूटे हुए ओवन और चिल्लाते हुए ग्राहकों से हर समय निपटते हैं!"
- परिणाम: उन्होंने नए अभ्यास संबंधी प्रश्नों का एक सेट बनाया (59 चैलेंज बेंचमार्क्स) जिसमें टूटे हुए ओवन और चिल्लाते हुए ग्राहक भी शामिल हैं। ये कठिन हैं, अधिक जटिल हैं, और वास्तविक दुनिया के लिए उपकरणों को बेहतर ढंग से तैयार करने के लिए बेहतर हैं।
4. यह क्यों महत्वपूर्ण है
यह शोध पत्र निष्कर्ष निकालता है कि हमें केवल "परफेक्ट" कोड पर काम करने वाले उपकरण बनाना बंद करना होगा। हमें ऐसे उपकरणों की आवश्यकता है जो उस उलझे हुए, निर्णय लेने वाले और लूप वाले कोड को संभाल सकें जिसे डेवलपर्स वास्तव में लिखते हैं।
- डेटासेट: उन्होंने अन्य शोधकर्ताओं के उपयोग के लिए 1 करोड़ वास्तविक-दुनिया के गणितीय फंक्शन का एक विशाल डेटासेट जारी किया है।
- लक्ष्य: ऐसे उपकरणों के अगले युग के निर्माण में मदद करना जो वास्तव में हमारे सॉफ्टवेयर को सुरक्षित रख सकें, चाहे वह एक सेल्फ-ड्राइविंग कार को नियंत्रित कर रहा हो, बैंक खाता प्रबंधित कर रहा हो, या उपग्रह लॉन्च कर रहा हो।
संक्षेप में: शोधकर्ताओं ने वास्तविक दुनिया को देखा ताकि उन्हें एहसास हो सके कि हमारे अभ्यास परीक्षण बहुत आसान थे। उन्होंने परीक्षणों का एक नया, कठिन और अधिक यथार्थवादी सेट बनाया ताकि जिन उपकरणों का उपयोग हम अपने सॉफ्टवेयर को सुरक्षित रखने के लिए करते हैं, वे वास्तव में काम के लिए तैयार हों।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।