programming languages एक भाषा कब एक स्क्रिप्टिंग भाषा माना जाता है?




स्क्रिप्टिंग लैंग्वेज इन हिंदी (24)

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

यह भी देखें:


If it doesn't/ wouldn't run on the CPU, it's a script to me. If an interpreter needs to run on the CPU below the program, then it's a script and a scripting language.

No reason to make it any more complicated than this?

Of course, in most (99%) of cases, it's clear whether a language is a scripting language. But consider that a VM can emulate the x86 instruction set, for example. Wouldn't this make the x86 bytecode a scripting language when run on a VM? What if someone was to write a compiler that would turn perl code into a native executable? In this case, I wouldn't know what to call the language itself anymore. It'd be the output that would matter, not the language.

Then again, I'm not aware of anything like this having been done, so for now I'm still comfortable calling interpreted languages scripting languages.


I would say scripting language is the one heavily manipulating entities it doesn't itself define. For instance, JavaScript manipulates DOM objects provided by the browser, PHP operates enormous library of C-based functions, and so on. Of course not a precise definition, more a way to think if it.


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

एक लोकप्रिय तर्क यह है कि प्रोग्रामिंग भाषाओं को संकलित किया जाता है और भाषाओं को पटकथाओं का अर्थ दिया जाता है - हालांकि मुझे लगता है कि यह तर्क पूरी तरह गलत है ... क्यों?

  1. चक्र और वी 8 (माइक्रोसॉफ्ट और Google के जावास्क्रिप्ट इंजन) निष्पादन से पहले कोड संकलित करते हैं
  2. क्यूबासिक का अर्थ है - क्या यह कबासिक को "स्क्रिप्टिंग" भाषा बनाता है?

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

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

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


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

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

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

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

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

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

एक भाषा एक स्क्रिप्टिंग भाषा (ऑब्जेक्ट उन्मुख भाषा / कार्यात्मक भाषा) है यदि यह दोनों

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

तो, पांच पैराग्राफ के बाद, मैं यहां पहुंचा हूं: "एक पटकथा भाषा स्क्रिप्टिंग के लिए एक भाषा है"। क्या एक महान परिभाषा है। नहीं।

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

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

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

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

लिपियों ने बड़े पैमाने पर वस्तुओं का उपयोग किया है

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

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

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

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

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

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

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

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

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

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


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

A language which is described as a scripting language.

थोड़ा परिपत्र, है ना? (वैसे, मैं मजाक नहीं कर रहा हूँ)।

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

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

 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)

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

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


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

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

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

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

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


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


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

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

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

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

अद्यतन: wikipedia सामान्य रूप से उपलब्ध सामग्री को पढ़ना।


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


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


मैं बस आगे बढ़ूंगा और डुप्लिकेट प्रश्न से अपना उत्तर माइग्रेट कर दूंगा

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

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

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

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

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

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

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

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

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

अब, एक पटकथा भाषा क्या है, बिल्कुल?

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

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

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

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

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

पाइथन और रूबी से बनाए गए जीयूआई अनुप्रयोग भी सी ++ या सी में लिखे गए एपीआई को भेजे गए स्क्रिप्ट हैं। यह सी ऐप को क्या करना है, बताता है।

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

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

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

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


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

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

आपके प्रश्न को पढ़ना चाहिए "प्रोग्रामिंग भाषा को एक स्क्रिप्टिंग भाषा माना जाएगा?", नहीं, "एक स्क्रिप्टिंग भाषा और प्रोग्रामिंग भाषा के बीच क्या अंतर है?"। बीच में कोई नहीं है।

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


एक पटकथा भाषा आमतौर पर है :

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

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

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

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


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

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

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

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


A scripting language is a programming language designed for integrating and communicating with other programming languages. You can also say it instructs others to do stuff


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

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

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


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

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

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


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


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

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

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

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


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

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

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


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

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

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

  3. Scripting languages normally have runtimes that are present on a large number of systems, and the runtimes can be installed easily on most systems.

  4. Scripting languages tend to be cross-platform and not machine-specific.

  5. Scripting languages make it easy to call other programs and interface with the operating system.

  6. Scripting languages are usually easily embeddable into larger systems written in more conventional programming languages.

  7. Scripting languages are normally designed for ease of programming, and with much less regard for execution speed. (If you want fast execution, the usual advice is to code the time-consuming parts in something like C, and either embed the language into C or call C bits from the language.)

Some of the characteristics I listed above are true of implementations, in which case I'm referring to the more common implementations. There have been C interpreters, with (AFAIK) no obvious compile step, but that's not true of most C implementations. You could certainly compile a Perl program to native code, but that's not how it's normally used. Some other characteristics are social in nature. Some of the above criteria overlap somewhat. As I said, the definition is fuzzy.


सभी स्क्रिप्टिंग भाषा प्रोग्रामिंग भाषाएं हैं। तो कड़ाई से बोलते हुए, कोई फर्क नहीं पड़ता।

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


स्क्रिप्टिंग भाषाएं प्रोग्रामिंग भाषाएं होती हैं जहां प्रोग्राम आम तौर पर एक पठनीय पाठक रूप में अंतिम उपयोगकर्ताओं को वितरित किए जाते हैं और जहां एक ऐसा प्रोग्राम होता है जो स्पष्ट रूप से उस प्रोग्राम को निष्पादित कर सकता है। (प्रोग्राम आंतरिक रूप से स्क्रिप्ट को संकलित कर सकता है; यह यहां प्रासंगिक नहीं है क्योंकि यह उपयोगकर्ता के लिए दृश्यमान नहीं है।)

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


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

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

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