शैक्षणिक पत्रों में कोड


34

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

मेरे लिए, वास्तविक क्रियान्वयन सहित, के लाभ महत्वपूर्ण होंगे, अर्थात्:

  • विश्वास या पुनरुत्पादकता का विस्तार (बस इसे स्वयं परखें!)
  • अस्पष्टताओं का स्पष्टीकरण (विशेषकर गैर-देशी वक्ताओं द्वारा लिखे गए पत्रों के लिए)
  • अनुप्रयोगों के लिए कोड का पुन: उपयोग

तो ऐसा क्यों है कि इतने सारे कागजों में वास्तव में कोई कोड शामिल है?

मुझे लगता है कि यह अपने स्वयं के अनुप्रयोगों में कार्यान्वयन का उपयोग करने के लिए कागज के पीछे संगठन का इरादा हो सकता है, और इस तरह इसे जारी नहीं करना चाहेगा, लेकिन अगर ऐसा है, तो भी पेपर क्यों लिखें?


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

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

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

4
@Rapeel एक ही कोड जारी करना केवल पुनरावृत्ति स्थापित करने में मदद करेगा, न कि प्रतिलिपि प्रस्तुत करने योग्यता। सटीक एक ही प्रयोग में समान कोड चलाना शायद ही स्वतंत्र है। विज्ञान को पुनरुत्पत्ति की आवश्यकता होती है, पुनरावृत्ति की नहीं।
मार्क रीटब्लाट

2
मैं ऐसे परिणामों के बारे में सोच रहा था जो इसके परिणामों के बजाय कोड के गुणों के बारे में बात करते हैं (जिस स्थिति में आप सही हैं, निश्चित रूप से)। कहते हैं, लेखक प्रस्तुत एल्गोरिथम के कुछ कार्यान्वयन पर प्रयोग करते हैं और ग्राफ़ की जांच करके रनटाइम की तुलना करते हैं (वे इसे "एल्गोरिथम इंजीनियरिंग" कहते हैं)। यहाँ, कोड प्रतिलिपि प्रस्तुत करने योग्यता प्रदान करता है।
राफेल

जवाबों:


17

यहाँ डेविड डोनोहो और जोनाथन बखित द्वारा एक अच्छी तरह से तर्क दिया गया लेख है कि मैं ग्रेड स्कूल में पढ़ता हूं जो तरंगिका शोधकर्ताओं के दृष्टिकोण से बिल्कुल इस विषय पर छूता है:

"वेवलाब एंड रिप्रोड्यूसबल रिसर्च"

उनका विचार और भी अधिक महत्वाकांक्षी था, एक सुविधाजनक मतलाब पैकेज में अपने कागजात में सभी आंकड़े पुन: प्रस्तुत करने के लिए कोड प्रदान करने के लिए।

मैं वास्तव में उनके विचार को पसंद करता हूं लेकिन मुझे लगता है कि मुद्दे स्पष्ट हैं।

(1) यह अतिरिक्त काम है (कोड को साफ करना, कम से कम अल्पविकसित उपयोगकर्ता इंटरफ़ेस बनाना, कुछ दस्तावेज लिखना, कुछ सहायता प्रदान करना जब लोग अनिवार्य रूप से समस्याओं में भाग लेते हैं)

(२) अधिकांश सम्मेलनों / समीक्षकों द्वारा इसकी वास्तव में आवश्यकता / अपेक्षा नहीं है

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


7
मुझे लगता है कि कम से कम वेबसाइटों पर उपलब्ध (ए) छद्मकोड या (बी) कोड की अपेक्षा, सीएस अनुसंधान समुदाय के लिए बहुत उपयोगी होगी। सभी शोध कोड में उच्च उपयोगिता नहीं है, और मुझे यकीन नहीं है कि बग्गी कोड उपलब्ध कराना अच्छी बात होगी या नहीं।
पीटर शोर

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

6
कोड को अच्छा, साफ, या पुन: प्रयोज्य होने की आवश्यकता नहीं है। लेकिन इसे 'विज्ञान' मानने के लिए प्रजनन योग्य होना चाहिए। निक बार्न्स (2010) द्वारा आपके कंप्यूटर कोड को प्रकाशित करना प्रकृति में एक अच्छा लेख था : यह इस बिंदु पर बहस करते हुए काफी अच्छा है
डेविड लेबॉउर

16

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


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

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

2
@ नील: क्या आपका मतलब है "ओएसआई-अनुमोदित, लेकिन जीपीएल नहीं "?
राडू ग्रिजोर

3
GPL आमतौर पर ठीक है - हम में से बहुत से Emacs का उपयोग करते हैं! :) हमें अफेरो जीपीएल सॉफ्टवेयर का उपयोग करने की अनुमति नहीं है, क्योंकि इसकी पारस्परिकता की स्थिति किसी के लिए भी है जो सॉफ्टवेयर के साथ बातचीत करता है (यानी, यह वेब सेवा की खामियों को बंद करता है), और एमएस इस संभावना को जोखिम में डालना नहीं चाहता कि कुछ आंतरिक सर्वर AGPL कोड चलाने से गलती से सार्वजनिक सामना किया जा सकता है। लेकिन यहां तक ​​कि एजीपीएल भी बिना किसी लाइसेंस के बेहतर है, क्योंकि लाइसेंस लेने से वास्तव में शेयरिंग की शर्तें अस्पष्ट हो जाती हैं।
नील कृष्णस्वामी

13

एक टिप्पणी से माइग्रेट और विस्तारित:

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

शेष कागजात में से, एक उचित राशि के साथ शुरू करने के लिए कोड कभी नहीं था। उन में से, शायद दो मुख्य कारण हैं। पहले वे कागजात होते हैं जिनकी मुख्य सामग्री प्रूफ ट्री होती है, संबंधित साउंडनेस प्रूफ और पसंद के साथ टाइपिंग नियम। उन में से, मैकेनाइज्ड मेटैथोरी में उन्नति ने कम से कम कुछ लेखकों को अपनी प्रमेय पसंद में कोड प्रदान करने के लिए प्रोत्साहित किया है (देखें POPLmark पर वेइरिच की स्लाइड: http://www.seas.upenn.edu/~sweirich.talks/cambridge-09। पीडीएफ)। दूसरे वे हैं जो बर्ड-मर्टेंस सामान (केला और सह) से उतारे गए हैं। ये आमतौर पर बहुत अधिक काम के बिना एक कार्यात्मक भाषा में अनुवाद योग्य हैं। हालाँकि, मुझे संदेह है कि दोनों में आम तौर पर व्यापकता का नुकसान होता है, और यह वाक्य रचना के ठोस मुद्दों से निपटता है और टाइपिंग अनावश्यक रूप से चीजों को जटिल बनाता है और समान तर्क का पालन करना कठिन बनाता है।

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


12

आप मानते हैं कि कोड प्रकाशित किया जाना चाहिए, लेकिन आप पूछते हैं कि कागजात में कोड क्यों शामिल नहीं है। ये दो अलग-अलग चीजें हैं।

अधिकांश समय, कोड की एक महत्वपूर्ण राशि प्रकाशित करने के लिए बस पर्याप्त जगह नहीं है। मेरे शोध क्षेत्र में (इमेज प्रोसेसिंग) छद्मकोड या वास्तुकला की जानकारी अक्सर अधिक मूल्यवान होती है और मैंने कभी किसी पेपर में कोड की कमी के कारण खुद को अटकते नहीं पाया। यह अक्सर पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है जिसने लेख को समझा।

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


8

यह कुछ समय पहले ही पूछा जा सकता है, हालांकि मैंने हमेशा इस बारे में दृढ़ता से महसूस किया है इसलिए मैं अपने दो सेंट दे दूंगा। मैंने सैट समुदाय के भीतर वर्षों (अब और नहीं) के लिए काम किया है। अधिकांश शोधकर्ता शायद ही कभी अपना कोड प्रकाशित करते हैं। पेपर को एल्गोरिथ्म के साथ प्रकाशित किया जाता है, लेकिन कागज के साथ प्रकाशित SAT सोलवर (MAXSAT सॉल्वर) आदि के वास्तविक कोड को देखना बहुत कम है।

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

इसके पीछे का कारण जानना कठिन है और यह शोधकर्ता से शोधकर्ता पर निर्भर हो सकता है लेकिन ज्यादातर यह दो गुना है।

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

  • दूसरे, कुछ कोड वास्तव में (सभी सॉफ़्टवेयर के साथ) एक भीड़ में लिखे गए हैं। आधी पक्की स्क्रिप्ट। इस कोड को प्रकाशित करने से अनचाहे फीचर्स इत्यादि शोधकर्ता को लगेगा कि वह खुद शर्मिंदा होगा और अपनी प्रतिष्ठा को नुकसान पहुंचाएगा।

मैं आपको ACM के इस हालिया संदर्भ के साथ छोड़ता हूं: http://cacm.acm.org/mag पत्रिकाओं/2011/5/ 107698- the-importance-of-reviewing-the-code/ fulltext


7

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

आज किसी भी तरह के लेख में कोड को शामिल नहीं करने का कोई अच्छा कारण नहीं है जो एक एल्गोरिथ्म का संदर्भ देता है।

यह पीडीएफ की तरह प्रिंट-ओरिएंटेड प्रारूपों को छोड़ने के लिए भी उपयोगी हो सकता है और अधिक अर्ध-रूप से अवगत स्वरूपों के पक्ष में पोस्टस्क्रिप्ट (MathML के साथ एचटीएमएल या शायद मैथेमेटिका का एक ओपनसोर्स रूपांतर)।


8
पहले दो पैराग्राफ के लिए +1, अंतिम पैराग्राफ के लिए -1। जब आप इसे मेरे ठंडे मृत हाथों से छुड़ाते हैं, तो आप मेरा लाटेक छीन सकते हैं।
जेफ

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