सोर्स कोड

From alpha
Jump to navigation Jump to search
सी-भाषा स्रोत कोड उदाहरण, एक प्रक्रियात्मक कार्यक्रम भाषा। परिणामी कार्यक्रम संगणक प्रणाली पर हैलो, वर्ल्ड प्रिंट करता है। यह पहली ज्ञात हैलो वर्ल्ड स्निपेट (कार्यक्रमिंग) मौलिक पुस्तक द सी कार्यक्रम भाषा (पुस्तक) से 1974 में बेल लैब्स में ब्रायन कर्निघन से उत्पन्न हुई थी।[1]

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

स्रोत कोड को आम तौर पर एक संयोजनकर्ता या संकलनकर्ता द्वारा बाइनरी मशीन कोड में बदल दिया जाता है जिसे कंप्यूटर द्वारा निष्पादित किया जा सकता है। मशीन कोड बाद में निष्पादन के लिए उपलब्ध होता है।

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

वैकल्पिक रूप से, उपयोग की जा रही तकनीक के आधार पर, स्रोत कोड की व्याख्या की जा सकती है और उसे सीधे निष्पादित किया जा सकता है।

परिभाषाएँ

रिचर्ड स्टॉलमैन की परिभाषा, उनके 1989 के सेमिनल लाइसेंस में तैयार की गई, प्रस्तावित स्रोत कोड जो भी रूप में सॉफ्टवेयर संशोधित किया गया है:

किसी कार्य के लिए "स्रोत कोड" का अर्थ है उसमें संशोधन करने के लिए कार्य का पसंदीदा रूप। [2]

कुछ शास्त्रीय स्रोत "स्रोत कोड" को कार्यक्रम भाषाओं के पाठ के रूप में परिभाषित करते हैं, उदाहरण के लिए:

स्रोत कोड (जिसे स्रोत या कोड के रूप में भी संदर्भित किया जाता है) सॉफ्टवेयर का संस्करण कहते है क्योंकि यह मूल रूप से एक मानव द्वारा सादे पाठ (यानी, मानव पठनीय अल्फ़ान्यूमेरिक वर्ण) में लिखा गया है (यानी, कंप्यूटर भाषा में लिखा गया है )। [3]

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

इस प्रकार स्टॉलमैन की परिभाषा जावा स्क्रिप्ट और एचटीएमएल के स्रोत-लक्ष्य की अस्पष्टता पर विचार करती है, साथ ही साथ भविष्य में सॉफ्टवेयर उत्पादन के संभावित रूपों पर विचार करती है, जैसे दृश्य कार्यक्रम भाषाएं, या मशीन लर्निंग में डेटासेट। [4] [5]

अन्य व्यापक व्याख्याएं, हालांकि, मशीन कोड को उत्पन्न करने वाली सभी उच्च स्तरीय भाषाओं के साथ स्रोत कोड को शामिल करने पर विचार करती हैं, यह परिभाषा कार्यक्रम अनुवाद में प्रत्येक चरण को स्रोत कोड मानने के द्वारा मूल मशीन/पाठ भेद को पूर्ववत करती है।

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

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

इतिहास

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

जब आईबीएम ने पहली बार अपनी यंत्र के साथ काम करने के लिए तंत्रांश की पेशकश की, तो स्रोत कोड बिना किसी अतिरिक्त शुल्क के प्रदान किया गया। उस समय,तंत्रांश के विकास और समर्थन की लागत में और हार्डवेयर की कीमत में पाया गया थी। दशकों तक, आईबीएम ने 1983 तक अपने सॉफ़्टवेयर उत्पाद लाइसेंस के साथ स्रोत कोड वितरित किया था।[2]

अधिकांश शुरुआती संगणक पत्रिकाओं ने स्रोत कोड को लिखित कार्यक्रम के रूप में प्रकाशित किया।

कभी-कभी एक बड़े कार्यक्रम के लिए संपूर्ण स्रोत कोड को हार्डबैक पुस्तक के रूप में प्रकाशित किया जाता है, जैसे संगणक और अक्षर-योजन बी वॉल्यूम, डोनाल्ड नुथ द्वारा कार्यक्रम, फिलिप ज़िमर्मन द्वारा पीजीपी स्रोत कोड और इंटर्नल, रैंडी थॉम्पसन द्वारा पीसी स्पीडस्क्रिप्ट, और μC/OS, जीन लैबरोस द्वारा जारी वास्तविक समय का कर्नेल है।

संगठन

स्रोत कोड जो एक संगणक कार्यक्रम का गठन करता है, आमतौर पर संगणक की हार्ड डिस्क पर संग्रहीत एक या एक से अधिक पाठ दस्तावेज़ में होता है; आमतौर पर, इन दस्तावेज़ को सावधानीपूर्वक एक निर्देशिका (दस्तवेज क्रम) में व्यवस्थित किया जाता है, जिसे स्रोत ट्री के रूप में जाना जाता है। स्रोत कोड को आंकड़ा आधार में भी संग्रहीत किया जा सकता है (जैसा कि संग्रहीत प्रक्रियाओं के लिए सामान्य है) या कहीं और होता है।

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

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

फिर भी एक अन्य तरीका मुख्य कार्यक्रम को एक कार्यक्रम भाषा के लिए दुभाषिया बनाता है,[4] या तो विशेष रूप से प्रश्न या सामान्य प्रयोजन में आवेदन के लिए रूपरेखा किया गया है और फिर इस भाषा में मैक्रो (संगणक विज्ञान) या ऐड-इन्स के अन्य रूपों के रूप में वास्तविक उपयोगकर्ता कार्यक्षमता का बड़ा हिस्सा लिखता है, उदाहरण के लिए जीएनयू ईमेसश पाठ संपादक द्वारा लिया गया दृष्टिकोण है।

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

उद्देश्य

स्रोत कोड का उपयोग मुख्य रूप से उस प्रक्रिया के इनपुट के रूप में किया जाता है जो एक निष्पादन योग्य कार्यक्रम (यानी, यह संकलनकर्ता या इंटरप्रेटर (संगणक) है) का उत्पादन करता है। इसका उपयोग लोगों के बीच एल्गोरिदम को संप्रेषित करने की एक विधि के रूप में भी किया जाता है (उदाहरण के लिए, पुस्तकों में कोड स्निपेट्स)।[5]

कार्यक्रमिंग तकनीकों के बारे में जानने के लिए कार्यक्रमर को अक्सर मौजूदा स्रोत कोड की समीक्षा करने में मदद मिलती है।[5]डेवलपर्स के बीच स्रोत कोड साझा करने को अक्सर उनकेकार्यक्रम कौशल की परिपक्वता के लिए एक योगदान कारक के रूप में उद्धृत किया जाता है।[5]कुछ लोग स्रोत कोड को अभिव्यंजक मीडिया (कला) मानते हैं।[6]

सॉफ़्टवेयर को अन्य संगणक प्लेटफ़ॉर्म पर पोर्ट करना आमतौर पर स्रोत कोड के बिना निषेधात्मक रूप से कठिन होता है। सॉफ़्टवेयर के किसी विशेष भाग के स्रोत कोड के बिना, पोर्टेबिलिटी आमतौर पर कम्प्यूटेशनल रूप से महंगी होती है।[7] संभावित पोर्टिंग विकल्पों में बाइनरी ट्रांसलेशन और मूल प्लेटफॉर्म का अनुकरण पाए है।

एक निष्पादन योग्य कार्यक्रम के अपघटन का उपयोग असेंबली कोड में या उच्च-स्तरीयकार्यक्रम भाषा में स्रोत कोड उत्पन्न करने के लिए किया जा सकता है। उच्च-स्तरीय भाषा।

कार्यक्रमर अक्सर अन्य परियोजनाओं में उपयोग करने के लिए सॉफ़्टवेयर के एक टुकड़े से स्रोत कोड को अनुकूलित करते हैं, एक अवधारणा जिसे सॉफ़्टवेयर पुन: प्रयोज्यता के रूप में जाना जाता है।

कानूनी पहलू

स्थिति दुनिया भर में बदलती है, लेकिन संयुक्त राज्य अमेरिका में 1974 से पहले, तंत्रांश और इसका स्रोत कोड कॉपीराइट योग्य नहीं था और इसलिए हमेशा सार्वजनिक डोमेन तंत्रांश होता था।[8]

1974 में, कॉपीराइट वर्क्स के नए तकनीकी उपयोगों पर अमेरिकी आयोग ने निर्णय लिया कि संगणक कार्यक्रम को जिस हद तक वे लेखक की मूल रचना का प्रतीक हैं, कॉपीराइट की उचित विषय वस्तु हैं।[9][10][11]

1983 में संयुक्त राज्य अमेरिका के अदालती मामले में एप्पल बना फ्रैंकलिन ने फैसला सुनाया कि वही वस्तु कोड पर लागू होता है; और यह कि कॉपीराइट अधिनियम ने कंप्यूटर कार्यक्रमों को साहित्यिक कार्यों के कॉपीराइट का दर्जा दिया था।

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

लाइसेंसिंग

कॉपीराइट नोटिस का उदाहरण:[12]

कॉपीराइट [yyyy] [कॉपीराइट स्वामी का नाम]

अपाचे लाइसेंस के तहत लाइसेंस प्राप्त, संस्करण 2.0 ("लाइसेंस"); आप लाइसेंस के अनुपालन के अलावा इस फ़ाइल का उपयोग नहीं कर सकते। आप पर लाइसेंस की एक प्रति प्राप्त कर सकते हैं

http://www.apache.org/licenses/LICENSE-2.0

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


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

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

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

गुणवत्ता

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

संदर्भ

  1. "सी में प्रोग्रामिंग: एक ट्यूटोरियल" (PDF). Archived from the original (PDF) on 23 February 2015.
  2. Martin Goetz (8 February 1988). "ऑब्जेक्ट-कोड केवल: क्या आईबीएम निष्पक्ष खेल रहा है?". Computerworld. Vol. 22, no. 6. p. 59. 1983 में आईबीएम ने अपने सॉफ्टवेयर उत्पाद लाइसेंस के साथ स्रोत कोड वितरित करने की अपनी 20 वर्षीय नीति को उलट दिया।
  3. "पायथन इंटरप्रेटर का विस्तार और एम्बेडिंग". docs.python.org. Archived from the original on 3 October 2012. Retrieved 17 August 2014.
  4. "दुभाषिया विधि - टेकोपेडिया". Techopedia.com. Retrieved 4 August 2022.
  5. 5.0 5.1 5.2 Spinellis, D: Code Reading: The Open Source Perspective. Addison-Wesley Professional, 2003. ISBN 0-201-79940-5
  6. "Art and Computer Programming" ONLamp.com Archived 20 February 2018 at the Wayback Machine, (2005)
  7. "सॉफ्टवेयर पोर्टेबिलिटी - कोडप्रोजेक्ट". www.codeproject.com. Retrieved 4 August 2022.
  8. P., Liu, Joseph; L., Dogan, Stacey (2005). "कॉपीराइट कानून और विषय वस्तु विशिष्टता: कंप्यूटर सॉफ्टवेयर का मामला". New York University Annual Survey of American Law. 61 (2).
  9. Apple Computer, Inc. v. Franklin Computer Corporation Puts the Byte Back into Copyright Protection for Computer Programs Archived 7 May 2017 at the Wayback Machine in Golden Gate University Law Review Volume 14, Issue 2, Article 3 by Jan L. Nussbaum (January 1984)
  10. लेमली, मेनेल, मर्ज और सैमुएलसन। सॉफ्टवेयर और इंटरनेट कानून, पी। 34.</रेफरी> 1983 में संयुक्त राज्य अमेरिका के अदालती मामले में Apple बनाम फ्रैंकलिन ने फैसला सुनाया कि वही ऑब्जेक्ट कोड पर लागू होता है; और यह कि कॉपीराइट अधिनियम ने कंप्यूटर प्रोग्रामों को साहित्यिक कार्यों के कॉपीराइट का दर्जा दिया। 1999 में, संयुक्त राज्य अमेरिका की अदालत में बर्नस्टीन बनाम संयुक्त राज्य अमेरिका में यह फैसला सुनाया गया कि स्रोत कोड को अभिव्यक्ति की स्वतंत्रता का संवैधानिक रूप से संरक्षित रूप माना जा सकता है। मुक्त भाषण के समर्थकों ने तर्क दिया कि क्योंकि स्रोत कोड प्रोग्रामर को जानकारी देता है, एक भाषा में लिखा जाता है, और हास्य और अन्य कलात्मक गतिविधियों को साझा करने के लिए इस्तेमाल किया जा सकता है, यह संचार का एक संरक्षित रूप है। रेफरी>"जानकारी" (PDF). cr.yp.to. Archived (PDF) from the original on 7 June 2011. Retrieved 27 December 2019.</रेफरी><ref>Bernstein v. US Department of Justice Archived 4 April 2018 at the Wayback Machine on eff.org
  11. EFF at 25: Remembering the Case that established Code as Speech Archived 5 January 2018 at the Wayback Machine on EFF.org by Alison Dame-Boyle (16 April 2015)
  12. {{साइट वेब |url=https://www.apache.org/licenses/LICENSE-2.0 |title=License |publisher=www.apache.org |access-date=2019-12- 27 |archive-date=23 सितंबर 2015 |archive-url=https://web.archive.org/web/20150923172828/http://www.apache.org/licenses/LICENSE-2.0 |url-status=live } }
  13. Hancock, Terry (29 August 2008). "क्या होगा यदि कॉपीराइट बाइनरी एक्जीक्यूटेबल्स पर लागू नहीं होता है?". Free Software Magazine. Archived from the original on 25 January 2016. Retrieved 25 January 2016.



स्रोत

  • (VEW04) रियल-वर्ल्ड स्रोत रिकवरी के लिए डिसंकलनकर्ता का उपयोग, एम. वैन एमेरिक और टी. वाडिंगटन, रिवर्स इंजीनियरिंग पर कार्य सम्मेलन, डेल्फ़्ट, नीदरलैंड, 9-12 नवंबर 2004। /web/200601081 53

532/http://www.itee.uq.edu.au/~emmerik/experience_long.pdf पेपर का विस्तारित संस्करण


इस पेज में लापता आंतरिक लिंक की सूची

बाहरी संबंध