एक भाषा को स्क्रिप्टिंग भाषा कब माना जाता है? [बन्द है]


107

किसी भाषा को स्क्रिप्टिंग भाषा क्या बनाती है? मैंने सुना है कि कुछ लोग कहते हैं "जब संकलित के बजाय इसकी व्याख्या की जाती है"। यह स्क्रिप्टिंग भाषा को PHP (उदाहरण के लिए) बना देगा। क्या वह एकमात्र कसौटी है? या अन्य मापदंड हैं?

यह सभी देखें:


आप एक छोटे से सवाल पर विस्तार करना चाहते हो सकता है। मुझे लगता है कि यह लगभग एक द्वैध है। अन्य लोग भेद नहीं देख सकते हैं
केंट फ्रेड्रिक

एक दुसरे से कौन सा सवाल?
Sietse

2
stackoverflow.com/questions/98268/… बहुत सी आत्मीयता है। स्पष्ट रूप से समान नहीं है, लेकिन साझा संदर्भ / राय का एक बहुत।
केंट फ्रेड्रिक

7
... जब कोई भाषा एपीआई को तोड़ती है और हर छोटी-मोटी रिलीज़ को सिंटैक्स में बदल देती है, जब यह लगभग 100 गंदे अनमने बग्गी सी पुस्तकालयों का आवरण है, तो यह एक स्क्रिप्ट भाषा है। ;)
ivan_ivanovich_ivanoff

1
"संबंधित" साइडबार में आपको stackoverflow.com/questions/1514206/… मिलेगा , जिससे मैंने तब मौजूद डुप्लिकेट्स के ढेर को stackoverflow.com/questions/101055/… पर वापस जोड़ा ।
dmckee --- पूर्व-संचालक ने

जवाबों:


52

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


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

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

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

93

सरल। जब मैं इसका उपयोग करता हूं, यह एक आधुनिक गतिशील भाषा है, जब आप इसका उपयोग करते हैं, तो यह केवल एक स्क्रिप्टिंग भाषा है!


19
हाँ। "यह एक 'खिलौना भाषा' नहीं है, यह एक 'उच्च-स्तरीय भाषा' है:" P
रॉबर्टो बोनावलेट

6
यह बहुत ही चुलबुला और विषय से हटकर था, -1
adf88

1
यहां तक ​​कि - (1 + 1) के साथ यह एक चेकमार्क वाले की तुलना में 2x + 1s के बारे में हो जाता है। : D
अनातोली टेकटोनिक

श्रेष्ठ। उत्तर। EVAR!
आइकनोकॉस्ट

41

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

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

यह स्क्रिप्टिंग भाषाओं के बारे में विकिपीडिया लेख से है :

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

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


1
@ अमर: अच्छी तरह से इसे जावा स्क्रिप्ट
sepp2k

1
@ राम भात - यह भ्रामक है, क्योंकि भेद कृत्रिम है।
Oded

11
@ भारत: सभी आधुनिक जावास्क्रिप्ट कार्यान्वयन संकलित हैं। और सी। के लिए दुभाषिए हैं
जोर्ग डब्ल्यू मित्तग

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

5
@Andrey: चक्र (IE9), TraceMonkey / JägerMonkey (Firefox), Nitro (Safari), Carakan (Opera) सभी जावास्क्रिप्ट को bytecode के लिए संकलित करते हैं और फिर कुछ bytecode की व्याख्या की जाती है और कुछ को मूल कोड में संकलित किया जाता है। V8 (क्रोम) bytecode को छोड़ देता है और जावास्क्रिप्ट को मूल कोड में सीधे संकलित करता है। IronJS CIL बाइटकोड को जावास्क्रिप्ट संकलित करता है। राइनो जावास्क्रिप्ट को JVML बाईटेकोड के लिए संकलित करता है। BESEN (अब तक का एकमात्र ECMAScript 5 इंजन) जावास्क्रिप्ट को BESEN बाइटेकोड के लिए संकलित करता है, और वर्तमान में एक देशी संकलक जोड़ा जा रहा है। उपरोक्त में से कुछ भी देशी मशीन कोड के लिए नियमित अभिव्यक्ति संकलित करते हैं।
जोर्ग डब्ल्यू मित्तग

31

"एक स्क्रिप्ट वह है जो आप अभिनेताओं को देते हैं। एक कार्यक्रम वह है जो आप दर्शकों को देते हैं।" - लैरी वॉल

मुझे नहीं लगता कि किसी भी अधिक अंतर से बहुत अधिक है। तथाकथित "स्क्रिप्टिंग" भाषाओं को अक्सर संकलित किया जाता है - बस बहुत जल्दी, और रनटाइम पर। और कुछ "प्रोग्रामिंग" भाषाओं को रनटाइम पर भी संकलित किया जाता है (जेआईटी के बारे में सोचो) और "संकलन" का पहला चरण वाक्यविन्यास जाँच और संसाधन संकल्प है।

इस पर लटका मत करो, यह वास्तव में महत्वपूर्ण नहीं है।


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

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

25

मेरी परिभाषा एक ऐसी भाषा होगी जो आमतौर पर बाइनरी के बजाय स्रोत के रूप में वितरित की जाती है।


5
तो आपको लगता है कि php, python, आदि स्क्रिप्टिंग लैंग्वेज हैं?
Sietse

"स्क्रिप्टिंग" पायथन और पीएचपी के लिए एक सामान्य विवरण है।
S.Lott

22
php और python - बेशक वे भाषाओं की स्क्रिप्टिंग कर रहे हैं!
एंटनी कैरी

शुरू से ही मेरी परिभाषा यही रही है

@ एंटोनी कैरी यह गलत है। पायथन आमतौर पर एक स्क्रिप्टिंग भाषा नहीं है, लेकिन यह किसी भी अन्य भाषा की तरह हो सकता है, जिसका उपयोग प्रोग्राम के भीतर किया जाता है (जैसे वर्ड (VB), ब्राउज़र (JS))
जोशुआ

16

इसके लिए बहुत सारे संभावित उत्तर हैं।

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

दूसरा: यह कहना मुश्किल है कि XYZ भाषा क्या है, क्या वह XYZ "स्क्रिप्टिंग", "कार्यात्मक प्रोग्रामिंग", "ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग" या आपके पास क्या है। "कार्यात्मक प्रोग्रामिंग" की परिभाषा बहुत स्पष्ट है, लेकिन कोई भी नहीं जानता है कि "कार्यात्मक प्रोग्रामिंग भाषा" क्या है।

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

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

तो, मेरे लिए, मुझे निम्नलिखित परिभाषा मिली है:

एक भाषा एक पटकथा भाषा (वस्तु-उन्मुख भाषा / कार्यात्मक भाषा) है अगर यह दोनों

  • सुविधा पटकथा (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग / कार्यात्मक प्रोग्रामिंग), यानी यह न केवल अनुमति देता है यह लेकिन यह बनाता है आसान और प्राकृतिक और जिसमें सुविधाओं मदद इसके साथ, और
  • आपको स्क्रिप्टिंग (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग / फ़ंक्शनल प्रोग्रामिंग) के लिए प्रोत्साहित और मार्गदर्शन करता है।

इसलिए, पाँच पैराग्राफ के बाद, मैं यहाँ आया हूँ: "एक स्क्रिप्टिंग भाषा स्क्रिप्टिंग के लिए एक भाषा है"। क्या शानदार परिभाषा है। नहीं।

जाहिर है, अब हमें "स्क्रिप्टिंग" की परिभाषा को देखने की जरूरत है।

शब्द "कार्यात्मक प्रोग्रामिंग" जबकि अच्छी तरह से परिभाषित किया गया है और यह केवल शब्द "कार्यात्मक प्रोग्रामिंग भाषा" है कि समस्याग्रस्त है, दुर्भाग्य से पटकथा के साथ, है: यह जहां तीसरी समस्या आता है दोनों शब्द "स्क्रिप्टिंग" और शब्द "पटकथा भाषा “अ-परिभाषित हैं।

खैर, सबसे पहले पटकथा है प्रोग्रामिंग। यह सिर्फ एक खास तरह की प्रोग्रामिंग है। IOW: हर स्क्रिप्ट एक प्रोग्राम है, लेकिन हर प्रोग्राम एक स्क्रिप्ट नहीं है; सभी स्क्रिप्ट का सेट सभी कार्यक्रमों के सेट का एक उचित उपसमूह है।

मेरी निजी राय में, वह चीज़ जो स्क्रिप्टिंग को स्क्रिप्टिंग बनाती है और इसे अन्य प्रकार की प्रोग्रामिंग से अलग करती है, वह है ...

लिपियों से मोटे तौर पर उन वस्तुओं का हेरफेर होता है जो

  • स्क्रिप्ट द्वारा नहीं बनाए गए थे,
  • जीवन भर स्क्रिप्ट से स्वतंत्र है और
  • स्क्रिप्ट के डोमेन के बाहर रहते हैं।

इसके अलावा, उपयोग किए गए डेटाटाइप्स और एल्गोरिदम आमतौर पर स्क्रिप्ट द्वारा नहीं बल्कि बाहरी वातावरण द्वारा परिभाषित किए जाते हैं।

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

संक्षेप में: एक स्क्रिप्ट अपने आप को एक बड़ी प्रणाली से जोड़ती है जो स्क्रिप्ट के स्वतंत्र रूप से मौजूद है, सिस्टम के कुछ छोटे हिस्से में हेरफेर करता है और फिर बाहर निकलता है।

एक शेल स्क्रिप्ट के मामले में वह बड़ी प्रणाली ऑपरेटिंग सिस्टम हो सकती है, ब्राउज़र स्क्रिप्ट के मामले में ब्राउज़र DOM, एक गेम (उदाहरण के लिए लूका के साथ Warcraft की दुनिया या लिंडेन स्क्रिप्टिंग भाषा के साथ दूसरा जीवन), एक आवेदन (जैसे AutoLisp) ऑटोकैड या एक्सेल / वर्ड / ऑफिस मैक्रोज़) के लिए भाषा, एक वेब सर्वर, रोबोट का एक पैकेट या कुछ और पूरी तरह से।

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

उदाहरण के लिए, मोंड्रियन एक संकलित कार्यान्वयन के साथ एक सख्ती से दृढ़ता से टाइप की हुई आलसी कार्यात्मक स्क्रिप्टिंग भाषा है।

हालांकि, इस सब के विवादास्पद है, जिस तरह से अवधि क्योंकि पटकथा भाषा है वास्तव में असली दुनिया में इस्तेमाल किया, ऊपर से किसी के साथ कोई संबंध नहीं है। यह अक्सर एक अपमान के रूप में उपयोग किया जाता है, और परिभाषा सरल है, यहां तक ​​कि सरल भी है:

  • वास्तविक प्रोग्रामिंग भाषा: मेरी प्रोग्रामिंग भाषा
  • स्क्रिप्टिंग भाषा: आपकी प्रोग्रामिंग भाषा

ऐसा लगता है कि यह शब्द सबसे अधिक बार उपयोग किया जाता है।


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

16

यह पोर्न की तरह है, आप इसे जानते हैं जब आप इसे देखते हैं। स्क्रिप्टिंग भाषा की एकमात्र संभावित परिभाषा है:

A language which is described as a scripting language.

एक बिट परिपत्र, है ना? (वैसे, मैं मजाक नहीं कर रहा हूं)।

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

मैं अपने पेपर में प्रमुख स्क्रिप्टिंग भाषाओं की विशेषताओं का वर्णन करता हूं :

 A Practical Solution for Scripting Language Compilers
 Paul Biggar, Edsko de Vries and David Gregg
 SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)

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

वे केवल शेष प्रश्न है कि आप कैसे बता सकते हैं कि एक नई भाषा एक पटकथा भाषा है। वैसे अगर इसे स्क्रिप्टिंग भाषा कहा जाए तो यह एक है। तो फैक्टर एक स्क्रिप्टिंग भाषा है (या कम से कम जब यह लिखा गया था), लेकिन, कहते हैं, जावा नहीं है।


1
यह एक बहुत अच्छी व्याख्या है, लेकिन मुझे यकीन है कि कुछ लोग इसे
बढ़ाते

कागज का लिंक टूट गया है।
क़ाज़ी इरफ़ान

5

"स्क्रिप्टिंग भाषा" उन फजी कॉन्सेप्ट्स में से एक है, जिसका मतलब कई चीजों से हो सकता है। आमतौर पर यह इस तथ्य को संदर्भित करता है कि एक कदम प्रक्रिया मौजूद है जो आपको स्रोत कोड से निष्पादन तक ले जाती है।

उदाहरण के लिए आप पर्ल में हैं: perl my_source.pl

उपरोक्त मानदंडों को देखते हुए PHP एक स्क्रिप्टिंग भाषा है (भले ही आपके पास स्रोत कोड को "सुरक्षित" करने के लिए Zend Encoder का उपयोग करते समय उदाहरण के लिए "संकलन" प्रक्रिया हो सकती है)।

पुनश्च। अक्सर (लेकिन हमेशा नहीं) स्क्रिप्टिंग भाषाओं की व्याख्या की जाती है। इसके अलावा अक्सर (लेकिन फिर से, हमेशा नहीं) स्क्रिप्टिंग भाषाएँ गतिशील रूप से टाइप की जाती हैं।


पर्ल चलने से पहले बाइट-कोड के लिए संकलित करता है।
ब्रैड गिल्बर्ट

2
जावा के बारे में क्या? आपको जावा प्रोग्राम चलाने के लिए एक jvm की आवश्यकता होती है, लेकिन मैं इसे स्क्रिप्टिंग भाषा नहीं कहूंगा
Eineki

5

सभी स्क्रिप्टिंग भाषाएं प्रोग्रामिंग लैंग्वेज हैं। इसलिए सख्ती से बोलना, कोई फर्क नहीं है।

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


4

मुझे लगता है कि मिस्टर रॉबर्टो इयरुसिलेम्सी के पास 'लुआंग में प्रोग्रामिंग' में बहुत अच्छा जवाब या सवाल है:

हालाँकि, व्याख्या की गई भाषाओं की विशिष्ट विशेषता यह नहीं है कि वे संकलित नहीं हैं, लेकिन यह है कि कोई भी संकलक भाषा रनटाइम का हिस्सा है और इसलिए, यह मक्खी पर उत्पन्न कोड निष्पादित करने के लिए (और आसान) संभव है।


यह बिल्कुल सवाल का जवाब नहीं है!
पॉल बिगगर

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

यह एक व्याख्या की गई भाषा है। यदि आप यह कहना चाह रहे हैं कि कोई भी व्याख्या की गई भाषा एक स्क्रिप्टिंग भाषा है, तो कहें।
पॉल बिगगर

वैसे, सभी भाषाओं का उपयोग स्क्रिप्टिंग के लिए किया जा सकता है, मेरे लिए प्रमुख आइटम यह है कि वे कितने उपयुक्त हैं। मेरे लिए विशिष्ट विशेषता यह है कि, हां, उनकी व्याख्या की जाती है।
रॉड्रिगो लोपेज

4
आम लिस्प वह नहीं है जो मैं आमतौर पर एक पटकथा भाषा के रूप में सोचता हूं, लेकिन इसमें एक पूर्ण शक्ति evalफ़ंक्शन होता है।
डेविड थॉर्नले

4

एक विभाग है

  • पटकथा = गतिशील रूप से व्याख्या की गई
  • सामान्य = संकलित

एक गतिशील रूप से व्याख्या की गई भाषा को रनटाइम पर व्याख्यायित किया जाता है जबकि एक संकलित भाषा को निष्पादन से पहले संकलित किया जाता है।

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

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

सामान्य रूप से सांख्यिकीय बनाम गतिशील रूप से टाइप की गई भाषाओं का विभाजन बेहतर परिभाषित है और भाषा की उपयोगिता पर इसके अधिक प्रभाव हैं।


उद्देश्य-सी के बारे में क्या?
मौविसील

1
यह डायनेमिक टाइपिंग का समर्थन करता है, लेकिन मैं इसे स्क्रिप्टिंग भाषा नहीं कहूंगा।
टिमो वेस्टकम्पेर

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

@ jorg-w-mittag, इसे और अधिक सही बनाने के लिए मेरे उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें। आपकी बातें मान्य हैं। आम तौर पर, यदि आप किसी भाषा के बारे में बात करते हैं, तो आप डिफ़ॉल्ट निष्पादन इंजन के बारे में भी बात करते हैं।
टिमो वेस्टकम्पेर

3

एक स्क्रिप्टिंग भाषा आम तौर पर है :

  1. डायनामिक रूप से टाइप किया गया
  2. व्याख्या की गई है, जिसमें प्रदर्शन पर बहुत कम जोर दिया गया है, लेकिन अच्छी पोर्टेबिलिटी है
  3. बहुत कम बॉयलरप्लेट कोड की आवश्यकता होती है , जिससे बहुत तेजी से प्रोटोटाइप होता है
  4. छोटे कार्यों के लिए उपयोग किया जाता है, कुछ उपयोगी "स्क्रिप्ट" को चलाने के लिए एक एकल फ़ाइल लिखने के लिए उपयुक्त है।

हालांकि एक गैर-स्क्रिप्टिंग भाषा आमतौर पर है : 1. सांख्यिकीय रूप से टाइप किया गया 2. प्रदर्शन पर जोर देने के साथ संकलित 3. अधिक बॉयलरप्लेट कोड की आवश्यकता होती है, जिससे धीमी प्रोटोटाइप के लिए अग्रणी होता है लेकिन अधिक पठनीयता और दीर्घकालिक स्थिरता 4. बड़ी परियोजनाओं के लिए उपयोग किया जाता है, कई के लिए adapts डिजाइन पैटर्न्स

लेकिन यह आजकल एक ऐतिहासिक अंतर से अधिक है, मेरी राय में। जावास्क्रिप्ट और पर्ल को छोटी, सरल लिपियों को ध्यान में रखकर लिखा गया था, जबकि C ++ को जटिल अनुप्रयोगों को ध्यान में रखकर लिखा गया था; लेकिन दोनों तरह से इस्तेमाल किया जा सकता है। और कई प्रोग्रामिंग भाषाएं, आधुनिक और पुरानी समान हैं, वैसे भी लाइन को धुंधला करते हैं (और यह पहले स्थान पर फजी था!)।

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


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

@ जोर्ग: अच्छी बात है, मैं सहमत हूँ। लेकिन मैंने यह नहीं कहा कि इसे संकलित नहीं किया जा सकता है, सिर्फ इतना कहा गया है कि इस प्रकार की भाषाओं को आम तौर पर संकलित करने के बजाय आम उपयोग में लिया जाता है।
ओक

क्या वो? पायथन, पीएचपी, पर्ल और लुआ के सभी वर्तमान कार्यान्वयन संकलित हैं। एमआरआई के अपवाद के साथ, रूबी के सभी वर्तमान कार्यान्वयन संकलित हैं। (और वहाँ रहे हैं वास्तव में एक नहीं, बल्कि दो JScript के अपवाद के साथ एमआरआई के लिए JIT compilers।), सभी मौजूदा जावास्क्रिप्ट कार्यान्वयन संकलित कर रहे हैं। ध्यान दें कि JScript का उत्तराधिकारी, चक्र संकलित है। योजना के कई कार्यान्वयन संकलित हैं। संकलित है।
जोर्ज डब्ल्यू मित्तग

3

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

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

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

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

अद्यतन: विकिपीडिया पर सामान्य रूप से उपलब्ध पठन सामग्री ।


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

1
@ जोर्ग: बिलकुल नहीं। हालांकि डार्टमाउथ बेसिक के पहले परीक्षण कार्यान्वयन को संकलित किया गया था (कार्ड बेसिक कहा जाता है) वास्तविक कार्यान्वयन व्याख्याकार थे। वास्तव में, संभवतः BASIC की सबसे महत्वपूर्ण नई विशेषता यह थी कि यह इंटरैक्टिव था। स्रोत कोड को एक कार्ड में पंच करने और उन्हें संकलक को खिलाने की आवश्यकता नहीं है। उपयोगकर्ता सिर्फ टेलेटाइप पर बैठ सकता है, प्रोग्राम लिख सकता है और फिर उसे चला सकता है।
पॉलिएल

यह दिलचस्प है कि यह उत्तर एक 'कठिन' भाषा के विचार का परिचय देता है। क्या 'कठिन' को इस संदर्भ में परिभाषा की जरूरत है?
डीए विंसेंट

@DavidVincent: मुझे संभवतः "कठिन" होना चाहिए था। कोई औपचारिक परिभाषा आवश्यक नहीं है, सहज समझ को पर्याप्त होना चाहिए: रूबी या पायथन की तुलना में विधानसभा या सी में एक कार्यक्रम लिखना बहुत कठिन है, यह देखते हुए कि पूर्व उत्तरार्द्ध की तुलना में बहुत अधिक निम्न-स्तर और क्रिया है।
अमदन

3

पहला बिंदु, एक प्रोग्रामिंग भाषा "स्क्रिप्टिंग भाषा" या कुछ और नहीं है। यह एक "स्क्रिप्टिंग भाषा" और कुछ और हो सकता है।

दूसरा बिंदु, भाषा का कार्यान्वयनकर्ता आपको बताएगा कि क्या यह एक स्क्रिप्टिंग भाषा है।

आपके प्रश्न को "एक प्रोग्रामिंग भाषा को एक स्क्रिप्टिंग भाषा माना जाएगा?" के बीच नहीं है।

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


3

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

इस प्रकार मैं जावास्क्रिप्ट और PHP को स्क्रिप्टिंग भाषाओं के रूप में मानता हूं, जबकि एक्शनस्क्रिप्ट 3 / फ्लेक्स वास्तव में नहीं है।


मैं पीटर के जवाब को अस्वीकार नहीं करना चाहता, लेकिन क्या हम राय से अधिक जोड़ सकते हैं?
डीए विंसेंट

3

मेरे मित्र और मेरे पास बस यह तर्क था: एक प्रोग्रामिंग भाषा और एक स्क्रिप्टिंग भाषा के बीच अंतर क्या है।

एक लोकप्रिय तर्क यह है कि प्रोग्रामिंग भाषाओं को संकलित किया जाता है और स्क्रिप्टिंग भाषाओं की व्याख्या की जाती है - हालांकि मेरा मानना ​​है कि यह तर्क पूरी तरह से गलत है ... क्यों?

  1. चक्र और V8 (Microsoft और Google के जावास्क्रिप्ट इंजन) निष्पादन से पहले कोड संकलित करते हैं
  2. QBasic की व्याख्या की गई है - क्या यह Qbasic को "स्क्रिप्टिंग" भाषा बनाता है?

उस आधार पर, यह एक प्रोग्रामिंग भाषा और एक स्क्रिप्टिंग भाषा के बीच अंतर के लिए मेरा तर्क है:

एक प्रोग्रामिंग भाषा मशीन के स्तर पर चलती है और मशीन (मेमोरी, ग्राफिक्स, साउंड आदि) तक पहुंच होती है।

एक स्क्रिप्टिंग भाषा रेत बॉक्सिंग है और केवल रेत बॉक्स के संपर्क में आने वाली वस्तुओं तक पहुंच है। अंतर्निहित मशीन तक इसकी कोई सीधी पहुंच नहीं है।


2

माय ओपिनियन में, मैं कहूंगा कि गतिशील रूप से व्याख्या की गई भाषाओं जैसे कि PHP, रूबी, आदि ... अभी भी "सामान्य" भाषाएं हैं। मैं कहूंगा कि "स्क्रिप्टिंग" भाषाओं के उदाहरण बैश (या ksh या tsh या जो भी हो) या sqlplus जैसी चीजें हैं। इन भाषाओं का उपयोग अक्सर एक सिस्टम पर मौजूदा कार्यक्रमों को सुसंगत और संबंधित आदेशों की एक श्रृंखला में करने के लिए किया जाता है, जैसे:

  1. A.txt को / tmp / वर्क / कॉपी करें
  2. डेटाबेस सर्वर पर नाइटली क्लीनअप प्रक्रिया चलाएं
  3. परिणामों को लॉग इन करें और उन्हें sysdamin पर भेजें

इसलिए मैं कहूंगा कि आप (मेरे लिए, वैसे भी) भाषा का उपयोग करने के तरीके में अंतर अधिक है । PHP, पर्ल, रूबी जैसी भाषाओं को "स्क्रिप्टिंग भाषाओं" के रूप में इस्तेमाल किया जा सकता है, लेकिन मैं आमतौर पर उन्हें "सामान्य भाषा" के रूप में इस्तेमाल करते हुए देखता हूं (पर्ल को छोड़कर जो दोनों तरीकों से जाता है।


धन्यवाद .. इससे चीजें थोड़ी स्पष्ट होती हैं। इसलिए पुनर्कथन करने के लिए, स्क्रिप्टिंग भाषाओं को एक क्रम में पहले से मौजूद कार्यक्रमों का उपयोग करने के लिए डिज़ाइन किया गया है। C जैसी BUT भाषाओं का उपयोग API के माध्यम से किया जा सकता है। इसलिए तकनीकी रूप से यह सब बोलना उपयोग पर निर्भर करता है
लाज़

नहीं, आप केवल एक कृत्रिम अंतर बना रहे हैं (जो ऐसा है)। यदि आप इसके साथ जल्दी से कुछ कोड़ा कर सकते हैं, तो एक भाषा को अक्सर स्क्रिप्टिंग भाषा कहा जाएगा, लेकिन यह एक सख्त परिभाषा या कुछ भी नहीं है। आमतौर पर व्याख्या की जाने वाली भाषाओं को अक्सर स्क्रिप्टिंग भाषा भी कहा जाता है।
wlangstroth

@Ill: कोई भी भेद कृत्रिम होगा। यह मेरी राय का भेद था। ;)
फ्रस्ट्रेटेडविथफॉर्म्सडिजेनर

हाँ, लेकिन इस मामले में "स्क्रिप्टिंग" एक अत्यधिक बोलचाल और अस्पष्ट उपयोग है। यह तय करना कि यह "पहले से ही एक कार्यक्रम में पहले से मौजूद कार्यक्रमों का उपयोग करना है" बहुत विशिष्ट है, और बिल्कुल सही नहीं है। यह एक शेल स्क्रिप्ट की तरह लगता है , हो सकता है, लेकिन पर्ल नहीं। फिर इसके विपरीत एपीआई (?) के साथ ... मैं सिर्फ इतना नहीं चाहता था कि आदमी बहुत दूर निकल जाए।
wlangstroth

2

मैं अभी आगे जाऊंगा और डुप्लिकेट प्रश्न से अपना उत्तर माइग्रेट करूंगा


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

उदाहरण के लिए, एक बार, HTML वेब पेज उबाऊ थे। वे हमेशा स्थिर थे। फिर एक दिन, नेटस्केप ने सोचा, "अरे, अगर हम ब्राउज़र को पढ़ने दें और पृष्ठ में कम आदेशों पर कार्य करें?" और इस तरह, जावास्क्रिप्ट का गठन किया गया था।

एक साधारण जावास्क्रिप्ट कमांड एक alert()कमांड है, जो ब्राउज़र (एक सॉफ्टवेयर ऐप) को निर्देश / आदेश देता है जो एक अलर्ट प्रदर्शित करने के लिए वेबपेज पढ़ रहा है।

अब, alert()किसी भी तरह से, सी ++ या जो भी कोड भाषा ब्राउज़र वास्तव में अलर्ट प्रदर्शित करने के लिए उपयोग करता है, से संबंधित है? बिलकूल नही। कोई .html पेज पर "अलर्ट ()" लिखने वाला व्यक्ति यह नहीं समझ पाता है कि ब्राउज़र वास्तव में अलर्ट कैसे प्रदर्शित करता है। वह सिर्फ एक कमांड लिख रहा है जिसे ब्राउज़र व्याख्या करेगा।

आइए सरल जावास्क्रिप्ट कोड देखें

<script>
var x = 4
alert(x)
</script>

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

हम कमांड की अंतिम श्रृंखला को एक "स्क्रिप्ट" कहते हैं (यही कारण है कि यह <script>टैग में संलग्न है )। बस "स्क्रिप्ट" की परिभाषा से, पारंपरिक अर्थ में: अभिनेताओं को भेजे गए निर्देशों और आदेशों की एक श्रृंखला । हर कोई जानता है कि एक पटकथा (एक फिल्म स्क्रिप्ट), उदाहरण के लिए, एक स्क्रिप्ट है।

पटकथा (स्क्रिप्ट) है नहीं कलाकारों, या कैमरा, या विशेष प्रभाव। स्क्रीनप्ले ही उन्हें बताता है कि क्या करना है।

अब, एक स्क्रिप्टिंग भाषा क्या है , बिल्कुल?

बहुत सारी प्रोग्रामिंग भाषाएं हैं जो एक टूलबॉक्स में विभिन्न उपकरणों की तरह हैं; कुछ भाषाओं को विशेष रूप से स्क्रिप्ट के रूप में उपयोग करने के लिए डिज़ाइन किया गया था।

जावास्क्रिप्ट एक स्पष्ट उदाहरण है; जावास्क्रिप्ट के बहुत कम अनुप्रयोग हैं जो स्क्रिप्टिंग के दायरे में नहीं आते हैं।

एक्शनस्क्रिप्ट (फ्लैश एनिमेशन के लिए भाषा) और इसके व्युत्पन्न भाषाएं स्क्रिप्टिंग हैं, जिसमें वे बस फ्लैश प्लेयर / इंटरप्रेटर को कमांड जारी करते हैं। ज़रूर, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग जैसे सार हैं, लेकिन यह सब बस अंत तक एक साधन है: फ्लैश प्लेयर को कमांड भेजें।

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

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

यहां तक ​​कि पायथन और रूबी से बनाए गए GUI एप्लिकेशन, C ++ या C. में लिखी गई API पर भेजे गए स्क्रिप्ट हैं। यह C ऐप को बताता है कि क्या करना है।

अस्पष्टता की एक पंक्ति है, निश्चित रूप से। आप यह क्यों नहीं कह सकते कि मशीन लैंग्वेज / सी, स्क्रिप्टिंग लैंग्वेज हैं, क्योंकि वे ऐसी स्क्रिप्ट्स हैं जिनका उपयोग कंप्यूटर बेसिक मदरबोर्ड / ग्राफिक्स कार्ड्स / चिप्स के साथ इंटरफेस करने के लिए करता है?

कुछ रेखाएँ हैं जिन्हें हम स्पष्ट कर सकते हैं:

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

  2. स्क्रिप्टिंग भाषा का तात्पर्य एक जटिल सॉफ्टवेयर एप्लिकेशन को भेजे गए कमांड से है ; यही कारण है कि हम पहली बार स्क्रिप्ट लिखते हैं - इसलिए आपको यह जानने की आवश्यकता नहीं है कि सॉफ्टवेयर कैसे कमांड को भेजने के लिए काम करता है। इसलिए, स्क्रिप्टिंग भाषाओं में ऐसी भाषाएं होती हैं जो जटिल सॉफ़्टवेयर एप्लिकेशन को (अपेक्षाकृत) सरल कमांड भेजती हैं ... इस मामले में, मशीन भाषा और असेंबली कोड ने इसे काट दिया।


2

क्या मैं सुझाव दूंगा कि स्क्रिप्टिंग भाषा एक शब्द है, बहुत सारे लोग इससे दूर जा रहे हैं। मैं कहता हूँ कि यह आजकल संकलित भाषाओं और गतिशील भाषाओं को उबालता है।

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

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


यहां तक ​​कि जब मैं php में बहुत काम करता हूं, तो मैं कहूंगा कि जब तक यह स्क्रिप्ट-आधारित / वास्तविक / fcgi सर्वलेट मॉडल को सर्वर से दिए गए कार्यों को भेजने के आधार पर स्थानांतरित नहीं हो जाता, मैं व्यक्तिगत रूप से इसे एक अच्छा स्क्रिप्टिंग भाषा कहूंगा, जो एक आवेदन का भ्रम दे सकता है "
केंट फ्रेड्रिक

स्टैटिक / डायनामिक, गतिशील भाषाएं होती हैं जिन्हें संकलित किया जाता है।
ब्रैड गिल्बर्ट

मैं दोहराता हूं: मेरा मतलब है कि आप वास्तव में पाइथन की तरह कुछ नहीं कह सकते हैं, या रूबी इस दिन और उम्र में "स्क्रिप्टिंग" भाषाएं हैं (आपके पास सामान भी है जैसे कि आयरनपिथॉन snd JitYourFavoriteLanguage, अंतर और भी धुंधला हो गया है)।
रॉबर्ट गोल्ड

1

स्क्रिप्टिंग भाषा एक स्क्रिप्टिंग इंजन के भीतर चलती है जो एक बड़े अनुप्रयोग का हिस्सा है। उदाहरण के लिए, जावास्क्रिप्ट आपके ब्राउज़र स्क्रिप्टिंग इंजन के अंदर चलता है।


उल्लसित जवाब है कि स्वीकृत उत्तर में दो डाउनवोट हैं।
राबर्ट एस।

1
उसके लिए किसी प्रकार का बिल्ला होना चाहिए। कैसे के बारे में "सच्चाई को संभाल नहीं सकते हैं।" नाह, थोड़ी बहुत चिंता। ;-)
जोसेफ फेरिस

3
पर्ल, पायथन, रूबी, Tcl / Tk - नाम के लिए लेकिन चार स्क्रिप्टिंग भाषाएं - मुख्य रूप से एक बड़े अनुप्रयोग में नहीं बनाई गई हैं।
जोनाथन लेफ्लर

3
एर्गो - वे स्क्रिप्टिंग भाषा नहीं हैं।
मिलन ए। राडदेव

3
उह, यह अच्छा होगा अगर यह किसी भी तरह सही के रूप में चिह्नित किया जा सकता है।
दोपहर रेशम रेशम

1

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

प्रत्येक संकलित भाषा को एक स्क्रिप्ट भाषा में बनाया जा सकता है और इसके विपरीत यह सब एक दुभाषिया या एक संकलक को लागू करने पर निर्भर करता है, उदाहरण के लिए C ++ में एक दुभाषिया है इसलिए इसे स्क्रिप्ट भाषा कहा जा सकता है यदि उपयोग किया जाता है (सामान्य रूप से C ++ के रूप में बहुत व्यावहारिक नहीं है एक बहुत ही जटिल भाषा है), वर्तमान में सबसे उपयोगी लिपि भाषाओं में से एक पायथन है ...

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


1

मैं पसंद करता हूं कि लोग "स्क्रिप्टिंग भाषा" शब्द का उपयोग न करें क्योंकि मुझे लगता है कि यह प्रयास को कम कर देता है। पर्ल जैसी भाषा लें, जिसे अक्सर "स्क्रिप्टिंग भाषा" कहा जाता है।

  • पर्ल एक प्रोग्रामिंग भाषा है!
  • पर्ल जावा और C ++ की तरह संकलित है। यह सिर्फ एक बहुत तेजी से संकलित है!
  • पर्ल में ऑब्जेक्ट्स और नेमस्पेस और क्लोजर हैं।
  • पर्ल के पास आईडीई और डिबगर्स और प्रोफाइलर हैं।
  • पर्ल के पास प्रशिक्षण और समर्थन और समुदाय है।
  • पर्ल सिर्फ वेब नहीं है। Perl सिर्फ sysadmin नहीं है। पर्ल सिर्फ इंटरनेट का डक्ट टेप नहीं है।

हमें जावा जैसी भाषा के बीच भी अंतर करने की आवश्यकता क्यों है जो संकलित है और रूबी है कि नहीं? लेबलिंग में क्या मूल्य है?

इस पर अधिक जानकारी के लिए, http://xoa.petdance.com/Stop_saying_script देखें ।


कोई भी कंप्यूटर मूल रूप से पर्ल या रूबी (या किसी भी रूप में उन्हें संकलित नहीं किया जा सकता) को चला सकता है। इसलिए पर्ल और रूबी एक पार्सर या वीएम द्वारा व्याख्या की जाने वाली भाषाएं हैं।
अनोन ६४३

@psoul: हाँ। तो जावा है
स्टेफानो बोरीनी

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

1

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


1

स्क्रिप्टिंग लैंग्वेज प्रोग्रामिंग लैंग्वेज हैं, जहां प्रोग्राम को आमतौर पर यूजर्स को पठनीय टेक्स्टुअल फॉर्म में डिलीवर किया जाता है और जहां एक प्रोग्राम होता है, जो जाहिर तौर पर उस प्रोग्राम को सीधे निष्पादित कर सकता है । (कार्यक्रम आंतरिक रूप से स्क्रिप्ट को अच्छी तरह से संकलित कर सकता है; यह यहां प्रासंगिक नहीं है क्योंकि यह उपयोगकर्ता को दिखाई नहीं देता है।)

स्क्रिप्टिंग भाषाओं के लिए यह अपेक्षाकृत आम है कि एक इंटरैक्टिव सत्र का समर्थन करने में सक्षम होना चाहिए जहां उपयोगकर्ता अपने कार्यक्रम में बस टाइप कर सकते हैं और इसे तुरंत निष्पादित कर सकते हैं। ऐसा इसलिए है क्योंकि यह पहले पैराग्राफ से आवश्यक आवश्यकता का एक तुच्छ विस्तार है; मुख्य अतिरिक्त आवश्यकता यह पता लगाने के लिए एक तंत्र के अतिरिक्त है जब एक टाइप-इन स्टेटमेंट पूरा हो जाता है ताकि इसे निष्पादन इंजन में भेजा जा सके।


1

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


1

एक स्क्रिप्टिंग भाषा एक भाषा है जो किसी मौजूदा प्रोग्राम को कॉन्फ़िगर या विस्तारित करती है।
एक स्क्रिप्टिंग भाषा एक प्रोग्रामिंग भाषा है।


1

"स्क्रिप्टिंग भाषा" की परिभाषा बहुत ही अस्पष्ट है। मैं इसे निम्नलिखित बातों पर आधारित करूँगा:

  1. स्क्रिप्टिंग भाषाओं में आमतौर पर उपयोगकर्ता-दृश्य संकलन चरण नहीं होते हैं। आमतौर पर उपयोगकर्ता केवल एक आसान कमांड में प्रोग्राम चला सकता है।

  2. स्क्रिप्टिंग भाषाओं के कार्यक्रम आम तौर पर स्रोत रूप में चारों ओर से गुजरते हैं।

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

  4. स्क्रिप्टिंग भाषाओं में क्रॉस-प्लेटफ़ॉर्म होता है न कि मशीन-विशिष्ट।

  5. स्क्रिप्टिंग भाषाओं से ऑपरेटिंग सिस्टम के साथ अन्य कार्यक्रमों और इंटरफ़ेस को कॉल करना आसान हो जाता है।

  6. स्क्रिप्टिंग भाषाओं को आमतौर पर अधिक परंपरागत प्रोग्रामिंग भाषाओं में लिखे गए बड़े सिस्टम में आसानी से एम्बेड किया जा सकता है।

  7. स्क्रिप्टिंग भाषा आम तौर पर प्रोग्रामिंग की आसानी के लिए डिज़ाइन की जाती है, और निष्पादन की गति के लिए बहुत कम संबंध है। (यदि आप तेजी से निष्पादन चाहते हैं, तो सामान्य सलाह यह है कि समय लेने वाले भागों को C जैसी किसी चीज़ में कोड करें, और या तो भाषा को C में एम्बेड करें या C बिट्स को भाषा से कॉल करें।)

जिन विशेषताओं को मैंने ऊपर सूचीबद्ध किया है उनमें से कुछ कार्यान्वयन के सही हैं, जिस स्थिति में मैं अधिक सामान्य कार्यान्वयन की बात कर रहा हूं। वहाँ सी दुभाषियों, (AFAIK) के साथ कोई स्पष्ट संकलन कदम है, लेकिन यह ज्यादातर सी कार्यान्वयन के सच नहीं है। आप निश्चित रूप से एक पर्ल प्रोग्राम को देशी कोड में संकलित कर सकते हैं, लेकिन यह नहीं है कि यह सामान्य रूप से कैसे उपयोग किया जाता है। कुछ अन्य विशेषताएं प्रकृति में सामाजिक हैं। उपरोक्त मानदंडों में से कुछ कुछ हद तक ओवरलैप करते हैं। जैसा कि मैंने कहा, परिभाषा फ़र्ज़ी है।


0

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


मम्म, PHP अंतर्निहित सी लाइब्रेरी का उपयोग करता है, लेकिन यह जावा (निम्नतम स्तर पर) सहित अधिकांश भाषाओं के लिए मामला है। और यह इन कार्यों में हेरफेर नहीं करता है ...
फियालो

0

यदि यह CPU पर नहीं चलता / नहीं चलता, तो यह मेरे लिए एक स्क्रिप्ट है। यदि एक दुभाषिया को प्रोग्राम के नीचे सीपीयू पर चलना है, तो यह एक स्क्रिप्ट और एक स्क्रिप्टिंग भाषा है।

इससे ज्यादा जटिल बनाने का कोई कारण नहीं?

बेशक, अधिकांश (99%) मामलों में, यह स्पष्ट है कि क्या कोई भाषा एक स्क्रिप्टिंग भाषा है। लेकिन विचार करें कि एक वीएम उदाहरण के लिए x86 इंस्ट्रक्शन सेट का अनुकरण कर सकता है। क्या यह एक VM पर चलने पर x86 बायोटेक को स्क्रिप्टिंग भाषा नहीं बना देगा? क्या होगा यदि कोई एक कंपाइलर लिखना था जो पर्ल कोड को एक देशी निष्पादन योग्य में बदल देगा? इस मामले में, मुझे नहीं पता कि भाषा को अब और क्या कहा जाए। यह वह आउटपुट होगा जो मायने रखेगा, भाषा नहीं।

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


1
आप बहुत सारी भाषाओं को बुला रहे हैं सिवाय उन लोगों के जो स्क्रिप्टिंग भाषाओं के लिए देशी बाइनरी में संकलित हैं? यकीन है कि जावा-डेवलपर्स स्क्रिप्टर्स कहलाने के लिए खुश होंगे;)
ट्रूप्पो 22

1
वो हैं। स्क्रिप्टर्स, वह है।
अनोन ६४३

0

एक स्क्रिप्ट अपेक्षाकृत छोटा कार्यक्रम है। एक प्रणाली एक अपेक्षाकृत बड़ा कार्यक्रम है, या अपेक्षाकृत बड़े कार्यक्रमों का एक संग्रह है।

कुछ प्रोग्रामिंग भाषाओं को उन विशेषताओं के साथ डिज़ाइन किया गया है जो अपेक्षाकृत छोटे कार्यक्रम लिखते समय भाषा डिजाइनर और प्रोग्रामिंग समुदाय उपयोगी मानते हैं। इन प्रोग्रामिंग भाषाओं को स्क्रिप्टिंग भाषाओं , जैसे PHP के रूप में जाना जाता है ।

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

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

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

इसलिए, एक भाषा एक स्क्रिप्टिंग भाषा है यदि यह आमतौर पर स्क्रिप्ट लिखने के लिए उपयोग की जाती है । एक स्क्रिप्टिंग भाषा का उपयोग सिस्टम लिखने के लिए किया जा सकता है, लेकिन इस तरह के अनुप्रयोगों को संदिग्ध माना जाता है।

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