किसी भाषा को स्क्रिप्टिंग भाषा क्या बनाती है? मैंने सुना है कि कुछ लोग कहते हैं "जब संकलित के बजाय इसकी व्याख्या की जाती है"। यह स्क्रिप्टिंग भाषा को PHP (उदाहरण के लिए) बना देगा। क्या वह एकमात्र कसौटी है? या अन्य मापदंड हैं?
किसी भाषा को स्क्रिप्टिंग भाषा क्या बनाती है? मैंने सुना है कि कुछ लोग कहते हैं "जब संकलित के बजाय इसकी व्याख्या की जाती है"। यह स्क्रिप्टिंग भाषा को PHP (उदाहरण के लिए) बना देगा। क्या वह एकमात्र कसौटी है? या अन्य मापदंड हैं?
जवाबों:
एक स्क्रिप्टिंग भाषा एक भाषा है जो सामान को करने के लिए "स्क्रिप्ट" अन्य चीजें हैं। प्राथमिक फ़ोकस मुख्य रूप से आपके स्वयं के ऐप्स का निर्माण नहीं कर रहा है, ताकि आप जिस तरह से चाहते हैं, उसके लिए मौजूदा ऐप प्राप्त कर सकें, जैसे कि ब्राउज़रों के लिए जावास्क्रिप्ट, एमएस ऑफिस के लिए VBA।
सरल। जब मैं इसका उपयोग करता हूं, यह एक आधुनिक गतिशील भाषा है, जब आप इसका उपयोग करते हैं, तो यह केवल एक स्क्रिप्टिंग भाषा है!
परंपरागत रूप से, जब स्क्रिप्टिंग बनाम प्रोग्रामिंग के बारे में अंतर के बारे में बात की जाती है, तो स्क्रिप्ट की व्याख्या की जाती है और कार्यक्रम संकलित किए जाते हैं। एक भाषा को विभिन्न तरीकों से निष्पादित किया जा सकता है - व्याख्या या संकलित (बायटेकोड या मशीन कोड के लिए)। इससे भाषा एक या दूसरे की नहीं बनती।
कुछ आँखों में, जिस तरह से आप एक भाषा का उपयोग करते हैं, वह इसे एक स्क्रिप्टिंग भाषा बनाता है (उदाहरण के लिए, गेम डेवलपर्स जो मुख्य रूप से C ++ में विकसित होते हैं, लुआ में वस्तुओं को स्क्रिप्ट करेंगे )। फिर से, लाइनों को धुंधला कर दिया जाता है - एक भाषा का उपयोग प्रोग्रामिंग के लिए एक व्यक्ति द्वारा किया जा सकता है और उसी भाषा का उपयोग किसी अन्य द्वारा स्क्रिप्टिंग भाषा के लिए किया जा सकता है।
यह स्क्रिप्टिंग भाषाओं के बारे में विकिपीडिया लेख से है :
एक स्क्रिप्टिंग भाषा, स्क्रिप्ट भाषा या विस्तार भाषा एक प्रोग्रामिंग भाषा है जो एक या एक से अधिक सॉफ़्टवेयर एप्लिकेशन को नियंत्रित करने की अनुमति देती है। "लिपियों" आवेदन के मूल कोड से अलग हैं, क्योंकि वे आमतौर पर एक अलग भाषा में लिखे जाते हैं और अक्सर अंत-उपयोगकर्ता द्वारा बनाए जाते हैं या कम से कम संशोधित होते हैं। लिपियों की व्याख्या अक्सर सोर्स कोड या बाईटेकोड से की जाती है, जबकि उनके द्वारा नियंत्रित किए जाने वाले एप्लिकेशन पारंपरिक मशीन कोड के लिए पारंपरिक रूप से संकलित होते हैं। स्क्रिप्टिंग भाषाएं लगभग हमेशा उन अनुप्रयोगों में अंतर्निहित होती हैं जिन्हें वे नियंत्रित करते हैं।
आप "आमतौर पर", "अक्सर", "पारंपरिक रूप से" और "लगभग हमेशा" के उपयोग पर ध्यान देंगे - ये सभी आपको बताते हैं कि विशिष्ट विशेषताओं का कोई सेट नहीं है जो एक विशिष्ट भाषा को "स्क्रिप्टिंग भाषा" बनाते हैं।
"एक स्क्रिप्ट वह है जो आप अभिनेताओं को देते हैं। एक कार्यक्रम वह है जो आप दर्शकों को देते हैं।" - लैरी वॉल
मुझे नहीं लगता कि किसी भी अधिक अंतर से बहुत अधिक है। तथाकथित "स्क्रिप्टिंग" भाषाओं को अक्सर संकलित किया जाता है - बस बहुत जल्दी, और रनटाइम पर। और कुछ "प्रोग्रामिंग" भाषाओं को रनटाइम पर भी संकलित किया जाता है (जेआईटी के बारे में सोचो) और "संकलन" का पहला चरण वाक्यविन्यास जाँच और संसाधन संकल्प है।
इस पर लटका मत करो, यह वास्तव में महत्वपूर्ण नहीं है।
मेरी परिभाषा एक ऐसी भाषा होगी जो आमतौर पर बाइनरी के बजाय स्रोत के रूप में वितरित की जाती है।
इसके लिए बहुत सारे संभावित उत्तर हैं।
पहली: यह वास्तव में नहीं के एक सवाल है अंतर एक पटकथा भाषा और एक प्रोग्रामिंग भाषा के बीच है, क्योंकि एक पटकथा भाषा है एक प्रोग्रामिंग भाषा। यह अधिक सवाल है कि क्या लक्षण कुछ प्रोग्रामिंग भाषा को एक स्क्रिप्टिंग भाषा बनाते हैं जबकि एक अन्य प्रोग्रामिंग भाषा एक स्क्रिप्टिंग भाषा नहीं है।
दूसरा: यह कहना मुश्किल है कि XYZ भाषा क्या है, क्या वह XYZ "स्क्रिप्टिंग", "कार्यात्मक प्रोग्रामिंग", "ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग" या आपके पास क्या है। "कार्यात्मक प्रोग्रामिंग" की परिभाषा बहुत स्पष्ट है, लेकिन कोई भी नहीं जानता है कि "कार्यात्मक प्रोग्रामिंग भाषा" क्या है।
कार्यात्मक प्रोग्रामिंग या ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रोग्रामिंग शैली हैं ; आप किसी भी भाषा में एक कार्यात्मक शैली या एक वस्तु-उन्मुख शैली में लिख सकते हैं। उदाहरण के लिए, लिनक्स वर्चुअल फाइल सिस्टम स्विच और लिनक्स चालक मॉडल सी में लिखे जाने के बावजूद भारी ऑब्जेक्ट-ओरिएंटेड हैं, जबकि आपके द्वारा वेब पर देखे जाने वाले बहुत सारे जावा या सी # कोड बहुत ही प्रक्रियात्मक हैं और ऑब्जेक्ट-ओरिएंटेड बिल्कुल नहीं हैं । OTOH, मैंने कुछ भारी कार्यात्मक जावा कोड देखे हैं।
इसलिए, यदि कार्यात्मक प्रोग्रामिंग और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग केवल शैलियाँ हैं जो किसी भी भाषा में की जा सकती हैं, तो आप "ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा" को कैसे परिभाषित करते हैं? आप कह सकते हैं कि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज एक ऐसी भाषा है, जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की अनुमति देती है। लेकिन यह बहुत अधिक परिभाषा नहीं है: सभी भाषाएँ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की अनुमति देती हैं, इसलिए सभी भाषाएँ ऑब्जेक्ट-ओरिएंटेड हैं? तो, आप कहते हैं, अच्छी तरह से एक भाषा वस्तु-उन्मुख है, अगर यह आपको ऑब्जेक्ट-ओरिएंटेड शैली में प्रोग्रामिंग के लिए मजबूर करती है। लेकिन यह बहुत अधिक परिभाषा नहीं है, या तो: सभी भाषाएं कार्यात्मक प्रोग्रामिंग की अनुमति देती हैं, इसलिए कोई भी भाषा वस्तु-उन्मुख नहीं है?
तो, मेरे लिए, मुझे निम्नलिखित परिभाषा मिली है:
एक भाषा एक पटकथा भाषा (वस्तु-उन्मुख भाषा / कार्यात्मक भाषा) है अगर यह दोनों
- सुविधा पटकथा (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग / कार्यात्मक प्रोग्रामिंग), यानी यह न केवल अनुमति देता है यह लेकिन यह बनाता है आसान और प्राकृतिक और जिसमें सुविधाओं मदद इसके साथ, और
- आपको स्क्रिप्टिंग (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग / फ़ंक्शनल प्रोग्रामिंग) के लिए प्रोत्साहित और मार्गदर्शन करता है।
इसलिए, पाँच पैराग्राफ के बाद, मैं यहाँ आया हूँ: "एक स्क्रिप्टिंग भाषा स्क्रिप्टिंग के लिए एक भाषा है"। क्या शानदार परिभाषा है। नहीं।
जाहिर है, अब हमें "स्क्रिप्टिंग" की परिभाषा को देखने की जरूरत है।
शब्द "कार्यात्मक प्रोग्रामिंग" जबकि अच्छी तरह से परिभाषित किया गया है और यह केवल शब्द "कार्यात्मक प्रोग्रामिंग भाषा" है कि समस्याग्रस्त है, दुर्भाग्य से पटकथा के साथ, है: यह जहां तीसरी समस्या आता है दोनों शब्द "स्क्रिप्टिंग" और शब्द "पटकथा भाषा “अ-परिभाषित हैं।
खैर, सबसे पहले पटकथा है प्रोग्रामिंग। यह सिर्फ एक खास तरह की प्रोग्रामिंग है। IOW: हर स्क्रिप्ट एक प्रोग्राम है, लेकिन हर प्रोग्राम एक स्क्रिप्ट नहीं है; सभी स्क्रिप्ट का सेट सभी कार्यक्रमों के सेट का एक उचित उपसमूह है।
मेरी निजी राय में, वह चीज़ जो स्क्रिप्टिंग को स्क्रिप्टिंग बनाती है और इसे अन्य प्रकार की प्रोग्रामिंग से अलग करती है, वह है ...
लिपियों से मोटे तौर पर उन वस्तुओं का हेरफेर होता है जो
- स्क्रिप्ट द्वारा नहीं बनाए गए थे,
- जीवन भर स्क्रिप्ट से स्वतंत्र है और
- स्क्रिप्ट के डोमेन के बाहर रहते हैं।
इसके अलावा, उपयोग किए गए डेटाटाइप्स और एल्गोरिदम आमतौर पर स्क्रिप्ट द्वारा नहीं बल्कि बाहरी वातावरण द्वारा परिभाषित किए जाते हैं।
शेल स्क्रिप्ट के बारे में सोचें: शेल स्क्रिप्ट आमतौर पर फाइलों, निर्देशिकाओं और प्रक्रियाओं में हेरफेर करती हैं। आपके सिस्टम पर मौजूद अधिकांश फाइलों, निर्देशिकाओं और प्रक्रियाओं को संभवतः वर्तमान में चल रही स्क्रिप्ट द्वारा नहीं बनाया गया था। और जब स्क्रिप्ट से बाहर निकलता है तो वे गायब नहीं होते हैं: उनका जीवनकाल पूरी तरह से स्क्रिप्ट से स्वतंत्र है। और वे वास्तव में स्क्रिप्ट का हिस्सा नहीं हैं, या तो, वे सिस्टम का एक हिस्सा हैं। आपने अपनी स्क्रिप्ट लेखन File
और Directory
कक्षाओं से शुरू नहीं की थी , उन डेटाटाइप्स से आपका कोई सरोकार नहीं है: आप बस मान लेते हैं कि वे वहीं हैं, और आपको पता भी नहीं है (न ही आपको यह जानने की जरूरत है) कि वे कैसे काम करते हैं। और आप अपने खुद के एल्गोरिदम को लागू नहीं करते हैं, या तो, निर्देशिका ट्रैवर्सल के लिए जो आप केवल find
अपनी खुद की चौड़ाई-पहले-खोज को लागू करने के बजाय उपयोग करते हैं।
संक्षेप में: एक स्क्रिप्ट अपने आप को एक बड़ी प्रणाली से जोड़ती है जो स्क्रिप्ट के स्वतंत्र रूप से मौजूद है, सिस्टम के कुछ छोटे हिस्से में हेरफेर करता है और फिर बाहर निकलता है।
एक शेल स्क्रिप्ट के मामले में वह बड़ी प्रणाली ऑपरेटिंग सिस्टम हो सकती है, ब्राउज़र स्क्रिप्ट के मामले में ब्राउज़र DOM, एक गेम (उदाहरण के लिए लूका के साथ Warcraft की दुनिया या लिंडेन स्क्रिप्टिंग भाषा के साथ दूसरा जीवन), एक आवेदन (जैसे AutoLisp) ऑटोकैड या एक्सेल / वर्ड / ऑफिस मैक्रोज़) के लिए भाषा, एक वेब सर्वर, रोबोट का एक पैकेट या कुछ और पूरी तरह से।
ध्यान दें कि स्क्रिप्टिंग पहलू प्रोग्रामिंग भाषाओं के अन्य सभी पहलुओं के लिए पूरी तरह से ऑर्थोगोनल है: एक स्क्रिप्टिंग भाषा को दृढ़ता से या कमजोर रूप से टाइप किया जा सकता है, सख्ती से या शिथिल टाइप, स्टेटिक या डायनामिक टाइप, नॉमिनी, स्ट्रक्चरल या डक टाइप किया गया हो, हेक यह भी अनपेड किया जा सकता है । यह अनिवार्य या कार्यात्मक, वस्तु-उन्मुख, प्रक्रियात्मक या कार्यात्मक, सख्त या आलसी हो सकता है। इसके कार्यान्वयन की व्याख्या, संकलन या मिश्रित किया जा सकता है।
उदाहरण के लिए, मोंड्रियन एक संकलित कार्यान्वयन के साथ एक सख्ती से दृढ़ता से टाइप की हुई आलसी कार्यात्मक स्क्रिप्टिंग भाषा है।
हालांकि, इस सब के विवादास्पद है, जिस तरह से अवधि क्योंकि पटकथा भाषा है वास्तव में असली दुनिया में इस्तेमाल किया, ऊपर से किसी के साथ कोई संबंध नहीं है। यह अक्सर एक अपमान के रूप में उपयोग किया जाता है, और परिभाषा सरल है, यहां तक कि सरल भी है:
- वास्तविक प्रोग्रामिंग भाषा: मेरी प्रोग्रामिंग भाषा
- स्क्रिप्टिंग भाषा: आपकी प्रोग्रामिंग भाषा
ऐसा लगता है कि यह शब्द सबसे अधिक बार उपयोग किया जाता है।
यह पोर्न की तरह है, आप इसे जानते हैं जब आप इसे देखते हैं। स्क्रिप्टिंग भाषा की एकमात्र संभावित परिभाषा है:
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 हो जाता है, लेकिन इससे भाषा की "प्रकृति" नहीं बदल जाती है।
वे केवल शेष प्रश्न है कि आप कैसे बता सकते हैं कि एक नई भाषा एक पटकथा भाषा है। वैसे अगर इसे स्क्रिप्टिंग भाषा कहा जाए तो यह एक है। तो फैक्टर एक स्क्रिप्टिंग भाषा है (या कम से कम जब यह लिखा गया था), लेकिन, कहते हैं, जावा नहीं है।
"स्क्रिप्टिंग भाषा" उन फजी कॉन्सेप्ट्स में से एक है, जिसका मतलब कई चीजों से हो सकता है। आमतौर पर यह इस तथ्य को संदर्भित करता है कि एक कदम प्रक्रिया मौजूद है जो आपको स्रोत कोड से निष्पादन तक ले जाती है।
उदाहरण के लिए आप पर्ल में हैं: perl my_source.pl
उपरोक्त मानदंडों को देखते हुए PHP एक स्क्रिप्टिंग भाषा है (भले ही आपके पास स्रोत कोड को "सुरक्षित" करने के लिए Zend Encoder का उपयोग करते समय उदाहरण के लिए "संकलन" प्रक्रिया हो सकती है)।
पुनश्च। अक्सर (लेकिन हमेशा नहीं) स्क्रिप्टिंग भाषाओं की व्याख्या की जाती है। इसके अलावा अक्सर (लेकिन फिर से, हमेशा नहीं) स्क्रिप्टिंग भाषाएँ गतिशील रूप से टाइप की जाती हैं।
सभी स्क्रिप्टिंग भाषाएं प्रोग्रामिंग लैंग्वेज हैं। इसलिए सख्ती से बोलना, कोई फर्क नहीं है।
यह शब्द भाषा के किसी भी मौलिक गुण को संदर्भित नहीं करता है, यह भाषा के विशिष्ट उपयोग को दर्शाता है । यदि सामान्य उपयोग उन छोटे कार्यक्रमों को लिखने के लिए है जो मुख्य रूप से पहले से मौजूद कोड को कॉल करते हैं, और परिणामों पर कुछ सरल प्रसंस्करण करते हैं, (यानी, यदि विशिष्ट उपयोग स्क्रिप्ट लिखने के लिए है ) तो यह एक स्क्रिप्टिंग भाषा है।
मुझे लगता है कि मिस्टर रॉबर्टो इयरुसिलेम्सी के पास 'लुआंग में प्रोग्रामिंग' में बहुत अच्छा जवाब या सवाल है:
हालाँकि, व्याख्या की गई भाषाओं की विशिष्ट विशेषता यह नहीं है कि वे संकलित नहीं हैं, लेकिन यह है कि कोई भी संकलक भाषा रनटाइम का हिस्सा है और इसलिए, यह मक्खी पर उत्पन्न कोड निष्पादित करने के लिए (और आसान) संभव है।
eval
फ़ंक्शन होता है।
एक विभाग है
एक गतिशील रूप से व्याख्या की गई भाषा को रनटाइम पर व्याख्यायित किया जाता है जबकि एक संकलित भाषा को निष्पादन से पहले संकलित किया जाता है।
मुझे यह जोड़ना चाहिए कि जैसा कि जर्ग ने बताया है, व्याख्या / संकलित भेद भाषा की विशेषता नहीं है, बल्कि निष्पादन इंजन की है।
आपको टाइप सिस्टम के इस स्पष्टीकरण में भी रुचि हो सकती है , जो संबंधित है और निष्पादन इंजन के बजाय, भाषा के पहलू पर अधिक ध्यान केंद्रित करता है। अधिकांश स्क्रिप्टिंग भाषाएँ गतिशील रूप से टाइप की जाती हैं, जबकि "सामान्य" भाषाएं अधिकतर सांख्यिकीय रूप से टाइप की जाती हैं।
सामान्य रूप से सांख्यिकीय बनाम गतिशील रूप से टाइप की गई भाषाओं का विभाजन बेहतर परिभाषित है और भाषा की उपयोगिता पर इसके अधिक प्रभाव हैं।
एक स्क्रिप्टिंग भाषा आम तौर पर है :
हालांकि एक गैर-स्क्रिप्टिंग भाषा आमतौर पर है : 1. सांख्यिकीय रूप से टाइप किया गया 2. प्रदर्शन पर जोर देने के साथ संकलित 3. अधिक बॉयलरप्लेट कोड की आवश्यकता होती है, जिससे धीमी प्रोटोटाइप के लिए अग्रणी होता है लेकिन अधिक पठनीयता और दीर्घकालिक स्थिरता 4. बड़ी परियोजनाओं के लिए उपयोग किया जाता है, कई के लिए adapts डिजाइन पैटर्न्स
लेकिन यह आजकल एक ऐतिहासिक अंतर से अधिक है, मेरी राय में। जावास्क्रिप्ट और पर्ल को छोटी, सरल लिपियों को ध्यान में रखकर लिखा गया था, जबकि C ++ को जटिल अनुप्रयोगों को ध्यान में रखकर लिखा गया था; लेकिन दोनों तरह से इस्तेमाल किया जा सकता है। और कई प्रोग्रामिंग भाषाएं, आधुनिक और पुरानी समान हैं, वैसे भी लाइन को धुंधला करते हैं (और यह पहले स्थान पर फजी था!)।
दुखद बात यह है कि, मैंने कुछ डेवलपर्स को जाना है जो घृणा करते हैं कि उन्हें "स्क्रिप्टिंग भाषाओं" के रूप में क्या माना जाता है, यह सोचकर कि वे सरल और शक्तिशाली नहीं हैं। मेरी राय है कि पुराने क्लिच - नौकरी के लिए सही उपकरण का उपयोग करें।
स्क्रिप्टिंग भाषाओं को मूल रूप से एक कठिन प्रोग्रामिंग भाषा में लिखे गए अनुप्रयोगों के लिए एक नियंत्रण तंत्र के रूप में सोचा गया था। संकलित कार्यक्रमों को रनटाइम पर संशोधित नहीं किया जा सकता था, इसलिए स्क्रिप्टिंग ने लोगों को लचीलापन दिया।
सबसे विशेष रूप से, शेल स्क्रिप्ट ओएस कर्नेल (पारंपरिक रूप से, मैक पर AppleScript) में प्रक्रियाओं को स्वचालित कर रहा था; एक भूमिका जो अधिक से अधिक पर्ल के हाथों में गुजरी, और फिर उसमें से पायथन में आ गई। मैंने स्कीम (विशेष रूप से इसके गाइल कार्यान्वयन में) देखी है, जिसका उपयोग किरणों को दृश्य घोषित करने के लिए किया जाता है; और हाल ही में, लुआ प्रोग्रामिंग लैंग्वेज के रूप में स्क्रिप्ट गेम्स के लिए बहुत लोकप्रिय है - इस बात के लिए कि कई नए गेम्स में एकमात्र हार्ड-कोडेड चीज़ ग्राफिक्स / भौतिकी इंजन है, जबकि पूरे गेम लॉजिक को लुआ में एन्कोड किया गया है। उसी तरह, जावास्क्रिप्ट को एक वेब ब्राउज़र के व्यवहार को स्क्रिप्ट करने के लिए सोचा गया था।
भाषाओं से मुक्ति मिली; अब कोई भी OS के बारे में एक एप्लिकेशन के रूप में नहीं सोचता (या इसके बारे में बहुत सोचता है), और कई पूर्व स्क्रिप्टिंग भाषाओं का उपयोग अपने स्वयं के पूर्ण अनुप्रयोगों को लिखने के लिए किया जाने लगा। नाम ही निरर्थक हो गया, और आज उपयोग में आने वाली कई व्याख्या भाषाओं में फैल गया, भले ही वे किसी अन्य प्रणाली के भीतर से व्याख्या किए जाने के लिए डिज़ाइन किए गए हों या नहीं।
हालाँकि, "स्क्रिप्टिंग लैंग्वेज" निश्चित रूप से "व्याख्या की गई भाषाओं" का पर्याय नहीं है - उदाहरण के लिए, बेसिक की व्याख्या उसके जीवन के अधिकांश हिस्सों के लिए की गई थी (यानी इससे पहले कि वह अपनी संक्षिप्तता खो गई और विज़ुअल बेसिक बन गई), फिर भी कोई भी वास्तव में इसके बारे में नहीं सोचता है पटकथा।
अद्यतन: विकिपीडिया पर सामान्य रूप से उपलब्ध पठन सामग्री ।
पहला बिंदु, एक प्रोग्रामिंग भाषा "स्क्रिप्टिंग भाषा" या कुछ और नहीं है। यह एक "स्क्रिप्टिंग भाषा" और कुछ और हो सकता है।
दूसरा बिंदु, भाषा का कार्यान्वयनकर्ता आपको बताएगा कि क्या यह एक स्क्रिप्टिंग भाषा है।
आपके प्रश्न को "एक प्रोग्रामिंग भाषा को एक स्क्रिप्टिंग भाषा माना जाएगा?" के बीच नहीं है।
फिर भी, मैं एक भाषा को एक स्क्रिप्टिंग भाषा मानूंगा यदि इसका उपयोग किसी प्रकार के मध्य वेयर प्रदान करने के लिए किया जाता है। उदाहरण के लिए, मैं जावास्क्रिप्ट के अधिकांश कार्यान्वयन को एक स्क्रिप्टिंग भाषा मानूंगा। यदि जावास्क्रिप्ट को ओएस में चलाया जाता है, न कि ब्राउज़र में, तो यह एक स्क्रिप्टिंग भाषा नहीं होगी। यदि PHP Apache के अंदर चलता है, तो यह एक स्क्रिप्टिंग भाषा है। यदि यह कमांड लाइन से चलाया जाता है, तो यह नहीं है।
मुझे एक स्क्रिप्टिंग भाषा दिखाई देती है, जिसके लिए किसी भारी-भरकम वजन वाले 'कंपाइल' स्टेप की जरूरत नहीं है। एक प्रोग्रामर के दृष्टिकोण से मुख्य विशेषता यह है: आप कोड को संपादित करते हैं और इसे तुरंत चलाते हैं।
इस प्रकार मैं जावास्क्रिप्ट और PHP को स्क्रिप्टिंग भाषाओं के रूप में मानता हूं, जबकि एक्शनस्क्रिप्ट 3 / फ्लेक्स वास्तव में नहीं है।
मेरे मित्र और मेरे पास बस यह तर्क था: एक प्रोग्रामिंग भाषा और एक स्क्रिप्टिंग भाषा के बीच अंतर क्या है।
एक लोकप्रिय तर्क यह है कि प्रोग्रामिंग भाषाओं को संकलित किया जाता है और स्क्रिप्टिंग भाषाओं की व्याख्या की जाती है - हालांकि मेरा मानना है कि यह तर्क पूरी तरह से गलत है ... क्यों?
उस आधार पर, यह एक प्रोग्रामिंग भाषा और एक स्क्रिप्टिंग भाषा के बीच अंतर के लिए मेरा तर्क है:
एक प्रोग्रामिंग भाषा मशीन के स्तर पर चलती है और मशीन (मेमोरी, ग्राफिक्स, साउंड आदि) तक पहुंच होती है।
एक स्क्रिप्टिंग भाषा रेत बॉक्सिंग है और केवल रेत बॉक्स के संपर्क में आने वाली वस्तुओं तक पहुंच है। अंतर्निहित मशीन तक इसकी कोई सीधी पहुंच नहीं है।
माय ओपिनियन में, मैं कहूंगा कि गतिशील रूप से व्याख्या की गई भाषाओं जैसे कि PHP, रूबी, आदि ... अभी भी "सामान्य" भाषाएं हैं। मैं कहूंगा कि "स्क्रिप्टिंग" भाषाओं के उदाहरण बैश (या ksh या tsh या जो भी हो) या sqlplus जैसी चीजें हैं। इन भाषाओं का उपयोग अक्सर एक सिस्टम पर मौजूदा कार्यक्रमों को सुसंगत और संबंधित आदेशों की एक श्रृंखला में करने के लिए किया जाता है, जैसे:
इसलिए मैं कहूंगा कि आप (मेरे लिए, वैसे भी) भाषा का उपयोग करने के तरीके में अंतर अधिक है । PHP, पर्ल, रूबी जैसी भाषाओं को "स्क्रिप्टिंग भाषाओं" के रूप में इस्तेमाल किया जा सकता है, लेकिन मैं आमतौर पर उन्हें "सामान्य भाषा" के रूप में इस्तेमाल करते हुए देखता हूं (पर्ल को छोड़कर जो दोनों तरीकों से जाता है।
मैं अभी आगे जाऊंगा और डुप्लिकेट प्रश्न से अपना उत्तर माइग्रेट करूंगा
"स्क्रिप्टिंग भाषा" नाम बहुत विशिष्ट भूमिका पर लागू होता है: वह भाषा जिसे आप मौजूदा सॉफ़्टवेयर एप्लिकेशन को भेजने के लिए कमांड लिखते हैं। (एक पारंपरिक टीवी या फिल्म "स्क्रिप्ट" की तरह)
उदाहरण के लिए, एक बार, HTML वेब पेज उबाऊ थे। वे हमेशा स्थिर थे। फिर एक दिन, नेटस्केप ने सोचा, "अरे, अगर हम ब्राउज़र को पढ़ने दें और पृष्ठ में कम आदेशों पर कार्य करें?" और इस तरह, जावास्क्रिप्ट का गठन किया गया था।
एक साधारण जावास्क्रिप्ट कमांड एक alert()
कमांड है, जो ब्राउज़र (एक सॉफ्टवेयर ऐप) को निर्देश / आदेश देता है जो एक अलर्ट प्रदर्शित करने के लिए वेबपेज पढ़ रहा है।
अब, alert()
किसी भी तरह से, सी ++ या जो भी कोड भाषा ब्राउज़र वास्तव में अलर्ट प्रदर्शित करने के लिए उपयोग करता है, से संबंधित है? बिलकूल नही। कोई .html पेज पर "अलर्ट ()" लिखने वाला व्यक्ति यह नहीं समझ पाता है कि ब्राउज़र वास्तव में अलर्ट कैसे प्रदर्शित करता है। वह सिर्फ एक कमांड लिख रहा है जिसे ब्राउज़र व्याख्या करेगा।
आइए सरल जावास्क्रिप्ट कोड देखें
<script>
var x = 4
alert(x)
</script>
ये ऐसे निर्देश हैं जो ब्राउज़र को भेजे जाते हैं, ब्राउज़र को स्वयं में व्याख्या करने के लिए। प्रोग्रामिंग भाषा जो ब्राउज़र के माध्यम से वास्तव में 4 के लिए एक चर सेट करती है, और एक चेतावनी में डालती है ... यह जावास्क्रिप्ट के लिए पूरी तरह से असंबंधित है।
हम कमांड की अंतिम श्रृंखला को एक "स्क्रिप्ट" कहते हैं (यही कारण है कि यह <script>
टैग में संलग्न है )। बस "स्क्रिप्ट" की परिभाषा से, पारंपरिक अर्थ में: अभिनेताओं को भेजे गए निर्देशों और आदेशों की एक श्रृंखला । हर कोई जानता है कि एक पटकथा (एक फिल्म स्क्रिप्ट), उदाहरण के लिए, एक स्क्रिप्ट है।
पटकथा (स्क्रिप्ट) है नहीं कलाकारों, या कैमरा, या विशेष प्रभाव। स्क्रीनप्ले ही उन्हें बताता है कि क्या करना है।
अब, एक स्क्रिप्टिंग भाषा क्या है , बिल्कुल?
बहुत सारी प्रोग्रामिंग भाषाएं हैं जो एक टूलबॉक्स में विभिन्न उपकरणों की तरह हैं; कुछ भाषाओं को विशेष रूप से स्क्रिप्ट के रूप में उपयोग करने के लिए डिज़ाइन किया गया था।
जावास्क्रिप्ट एक स्पष्ट उदाहरण है; जावास्क्रिप्ट के बहुत कम अनुप्रयोग हैं जो स्क्रिप्टिंग के दायरे में नहीं आते हैं।
एक्शनस्क्रिप्ट (फ्लैश एनिमेशन के लिए भाषा) और इसके व्युत्पन्न भाषाएं स्क्रिप्टिंग हैं, जिसमें वे बस फ्लैश प्लेयर / इंटरप्रेटर को कमांड जारी करते हैं। ज़रूर, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग जैसे सार हैं, लेकिन यह सब बस अंत तक एक साधन है: फ्लैश प्लेयर को कमांड भेजें।
पायथन और रूबी को आमतौर पर स्क्रिप्टिंग भाषाओं के रूप में भी उपयोग किया जाता है। उदाहरण के लिए, मैंने एक बार एक कंपनी के लिए काम किया था, जिसने रूबी को स्क्रिप्ट कमांड्स का उपयोग किया था, जो एक ब्राउज़र को भेजने के लिए था, जो कि "इस साइट पर जाएं, इस लिंक पर क्लिक करें ..." कुछ बुनियादी स्वचालित परीक्षण करने के लिए। मैं उस काम में किसी भी तरह से "सॉफ़्टवेयर डेवलपर" नहीं था । मैंने अभी स्क्रिप्ट लिखी है जो कंप्यूटर को ब्राउज़र पर कमांड भेजने के लिए कमांड भेजती है।
उनके स्वभाव के कारण, स्क्रिप्टिंग भाषाओं को शायद ही कभी 'संकलित' किया जाता है - अर्थात, मशीन कोड में अनुवाद किया जाता है, और सीधे कंप्यूटर द्वारा पढ़ा जाता है।
यहां तक कि पायथन और रूबी से बनाए गए GUI एप्लिकेशन, C ++ या C. में लिखी गई API पर भेजे गए स्क्रिप्ट हैं। यह C ऐप को बताता है कि क्या करना है।
अस्पष्टता की एक पंक्ति है, निश्चित रूप से। आप यह क्यों नहीं कह सकते कि मशीन लैंग्वेज / सी, स्क्रिप्टिंग लैंग्वेज हैं, क्योंकि वे ऐसी स्क्रिप्ट्स हैं जिनका उपयोग कंप्यूटर बेसिक मदरबोर्ड / ग्राफिक्स कार्ड्स / चिप्स के साथ इंटरफेस करने के लिए करता है?
कुछ रेखाएँ हैं जिन्हें हम स्पष्ट कर सकते हैं:
जब आप एक स्क्रिप्टिंग भाषा लिख सकते हैं और इसे "संकलन" के बिना चला सकते हैं, तो यह एक प्रत्यक्ष-स्क्रिप्ट प्रकार की बात है। उदाहरण के लिए, आपको स्क्रीनप्ले के साथ कुछ भी करने की आवश्यकता नहीं है ताकि अभिनेताओं को यह बताया जा सके कि इसके साथ क्या करना है। यह पहले से ही है, इस्तेमाल किया, के रूप में है। इस कारण से, हम संकलित भाषाओं को स्क्रिप्टिंग भाषा कहे जाने से बाहर कर देंगे , भले ही उनका उपयोग कुछ अवसरों में स्क्रिप्टिंग उद्देश्यों के लिए किया जा सकता है।
स्क्रिप्टिंग भाषा का तात्पर्य एक जटिल सॉफ्टवेयर एप्लिकेशन को भेजे गए कमांड से है ; यही कारण है कि हम पहली बार स्क्रिप्ट लिखते हैं - इसलिए आपको यह जानने की आवश्यकता नहीं है कि सॉफ्टवेयर कैसे कमांड को भेजने के लिए काम करता है। इसलिए, स्क्रिप्टिंग भाषाओं में ऐसी भाषाएं होती हैं जो जटिल सॉफ़्टवेयर एप्लिकेशन को (अपेक्षाकृत) सरल कमांड भेजती हैं ... इस मामले में, मशीन भाषा और असेंबली कोड ने इसे काट दिया।
क्या मैं सुझाव दूंगा कि स्क्रिप्टिंग भाषा एक शब्द है, बहुत सारे लोग इससे दूर जा रहे हैं। मैं कहता हूँ कि यह आजकल संकलित भाषाओं और गतिशील भाषाओं को उबालता है।
मेरा मतलब है कि आप वास्तव में पाइथन की तरह कुछ नहीं कह सकते हैं, या रूबी इस दिन और उम्र में "स्क्रिप्टिंग" भाषाएं हैं (आपके पास आयरनपीथॉन और जेआईटी-आपकी पसंदीदा-भाषा जैसी चीजें भी हैं , अंतर और भी धुंधला हो गया है)।
ईमानदार होने के लिए, व्यक्तिगत रूप से मुझे नहीं लगता कि PHP अब कोई स्क्रिप्टिंग भाषा है। मुझे उम्मीद नहीं होगी कि लोग PHP को उनके फिर से शुरू होने पर जावा से अलग तरह से वर्गीकृत करना पसंद करेंगे।
स्क्रिप्टिंग भाषा एक स्क्रिप्टिंग इंजन के भीतर चलती है जो एक बड़े अनुप्रयोग का हिस्सा है। उदाहरण के लिए, जावास्क्रिप्ट आपके ब्राउज़र स्क्रिप्टिंग इंजन के अंदर चलता है।
एक स्क्रिप्टिंग भाषा एक ऐसी भाषा है जिसकी व्याख्या हर बार स्क्रिप्ट के चलने के बाद की जाती है, इसका मतलब है कि एक दुभाषिया है और अधिकांश बहुत मानवीय पठनीय हैं, उपयोगी होने के लिए एक स्क्रिप्टिंग भाषा सीखना और उपयोग करना आसान है।
प्रत्येक संकलित भाषा को एक स्क्रिप्ट भाषा में बनाया जा सकता है और इसके विपरीत यह सब एक दुभाषिया या एक संकलक को लागू करने पर निर्भर करता है, उदाहरण के लिए C ++ में एक दुभाषिया है इसलिए इसे स्क्रिप्ट भाषा कहा जा सकता है यदि उपयोग किया जाता है (सामान्य रूप से C ++ के रूप में बहुत व्यावहारिक नहीं है एक बहुत ही जटिल भाषा है), वर्तमान में सबसे उपयोगी लिपि भाषाओं में से एक पायथन है ...
तो आपके प्रश्न का उत्तर देने के लिए परिभाषा एक त्वरित और आसान पटकथा कार्यक्रमों को चलाने के लिए दुभाषिया के उपयोग पर है, सरल कार्यों या प्रोटोटाइप अनुप्रयोगों को संबोधित करने के लिए सबसे शक्तिशाली उपयोग जो स्क्रिप्ट भाषाओं का बना सकता है वह है कि हर उपयोग के विस्तार की संभावना को शामिल करना। संकलित आवेदन।
मैं पसंद करता हूं कि लोग "स्क्रिप्टिंग भाषा" शब्द का उपयोग न करें क्योंकि मुझे लगता है कि यह प्रयास को कम कर देता है। पर्ल जैसी भाषा लें, जिसे अक्सर "स्क्रिप्टिंग भाषा" कहा जाता है।
हमें जावा जैसी भाषा के बीच भी अंतर करने की आवश्यकता क्यों है जो संकलित है और रूबी है कि नहीं? लेबलिंग में क्या मूल्य है?
इस पर अधिक जानकारी के लिए, http://xoa.petdance.com/Stop_saying_script देखें ।
एक महत्वपूर्ण अंतर मजबूत टाइपिंग (बनाम कमजोर टाइपिंग ) है। स्क्रिप्टिंग भाषाओं को अक्सर कमजोर टाइप किया जाता है , जिससे छोटे कार्यक्रमों को अधिक तेजी से लिखना संभव हो जाता है। बड़े कार्यक्रमों के लिए यह एक नुकसान है, क्योंकि यह संकलक / दुभाषिया को स्वायत्त रूप से कुछ कीड़े खोजने के लिए रोकता है, जिससे इसे रिफैक्टर कोड में बहुत मुश्किल हो जाता है।
स्क्रिप्टिंग लैंग्वेज प्रोग्रामिंग लैंग्वेज हैं, जहां प्रोग्राम को आमतौर पर यूजर्स को पठनीय टेक्स्टुअल फॉर्म में डिलीवर किया जाता है और जहां एक प्रोग्राम होता है, जो जाहिर तौर पर उस प्रोग्राम को सीधे निष्पादित कर सकता है । (कार्यक्रम आंतरिक रूप से स्क्रिप्ट को अच्छी तरह से संकलित कर सकता है; यह यहां प्रासंगिक नहीं है क्योंकि यह उपयोगकर्ता को दिखाई नहीं देता है।)
स्क्रिप्टिंग भाषाओं के लिए यह अपेक्षाकृत आम है कि एक इंटरैक्टिव सत्र का समर्थन करने में सक्षम होना चाहिए जहां उपयोगकर्ता अपने कार्यक्रम में बस टाइप कर सकते हैं और इसे तुरंत निष्पादित कर सकते हैं। ऐसा इसलिए है क्योंकि यह पहले पैराग्राफ से आवश्यक आवश्यकता का एक तुच्छ विस्तार है; मुख्य अतिरिक्त आवश्यकता यह पता लगाने के लिए एक तंत्र के अतिरिक्त है जब एक टाइप-इन स्टेटमेंट पूरा हो जाता है ताकि इसे निष्पादन इंजन में भेजा जा सके।
सवाल पर थोड़ा अलग है। एक स्क्रिप्टिंग भाषा एक प्रोग्रामिंग भाषा है लेकिन एक प्रोग्रामिंग भाषा जरूरी नहीं कि एक स्क्रिप्टिंग भाषा हो। किसी सिस्टम को नियंत्रित या स्क्रिप्ट करने के लिए एक स्क्रिप्टिंग भाषा का उपयोग किया जाता है। यह प्रणाली एक ऑपरेटिंग सिस्टम हो सकती है जहां स्क्रिप्टिंग भाषा बैश होगी। सिस्टम PHP स्क्रिप्टिंग भाषा के साथ एक वेब सर्वर हो सकता है। स्क्रिप्टिंग भाषाओं को एक विशिष्ट आला भरने के लिए डिज़ाइन किया गया है; वे डोमेन विशिष्ट भाषाएं हैं। इंटरएक्टिव सिस्टम ने स्क्रिप्टिंग भाषाओं की व्याख्या की है जो इस धारणा को जन्म देती है कि स्क्रिप्टिंग भाषाओं की व्याख्या की जाती है; हालाँकि, यह प्रणाली का एक परिणाम है और स्क्रिप्टिंग भाषा नहीं है।
एक स्क्रिप्टिंग भाषा एक भाषा है जो किसी मौजूदा प्रोग्राम को कॉन्फ़िगर या विस्तारित करती है।
एक स्क्रिप्टिंग भाषा एक प्रोग्रामिंग भाषा है।
"स्क्रिप्टिंग भाषा" की परिभाषा बहुत ही अस्पष्ट है। मैं इसे निम्नलिखित बातों पर आधारित करूँगा:
स्क्रिप्टिंग भाषाओं में आमतौर पर उपयोगकर्ता-दृश्य संकलन चरण नहीं होते हैं। आमतौर पर उपयोगकर्ता केवल एक आसान कमांड में प्रोग्राम चला सकता है।
स्क्रिप्टिंग भाषाओं के कार्यक्रम आम तौर पर स्रोत रूप में चारों ओर से गुजरते हैं।
स्क्रिप्टिंग भाषाओं में आमतौर पर रनटाइम्स होते हैं जो बड़ी संख्या में सिस्टम पर मौजूद होते हैं, और अधिकांश सिस्टम पर रनटाइम आसानी से इंस्टॉल किए जा सकते हैं।
स्क्रिप्टिंग भाषाओं में क्रॉस-प्लेटफ़ॉर्म होता है न कि मशीन-विशिष्ट।
स्क्रिप्टिंग भाषाओं से ऑपरेटिंग सिस्टम के साथ अन्य कार्यक्रमों और इंटरफ़ेस को कॉल करना आसान हो जाता है।
स्क्रिप्टिंग भाषाओं को आमतौर पर अधिक परंपरागत प्रोग्रामिंग भाषाओं में लिखे गए बड़े सिस्टम में आसानी से एम्बेड किया जा सकता है।
स्क्रिप्टिंग भाषा आम तौर पर प्रोग्रामिंग की आसानी के लिए डिज़ाइन की जाती है, और निष्पादन की गति के लिए बहुत कम संबंध है। (यदि आप तेजी से निष्पादन चाहते हैं, तो सामान्य सलाह यह है कि समय लेने वाले भागों को C जैसी किसी चीज़ में कोड करें, और या तो भाषा को C में एम्बेड करें या C बिट्स को भाषा से कॉल करें।)
जिन विशेषताओं को मैंने ऊपर सूचीबद्ध किया है उनमें से कुछ कार्यान्वयन के सही हैं, जिस स्थिति में मैं अधिक सामान्य कार्यान्वयन की बात कर रहा हूं। वहाँ सी दुभाषियों, (AFAIK) के साथ कोई स्पष्ट संकलन कदम है, लेकिन यह ज्यादातर सी कार्यान्वयन के सच नहीं है। आप निश्चित रूप से एक पर्ल प्रोग्राम को देशी कोड में संकलित कर सकते हैं, लेकिन यह नहीं है कि यह सामान्य रूप से कैसे उपयोग किया जाता है। कुछ अन्य विशेषताएं प्रकृति में सामाजिक हैं। उपरोक्त मानदंडों में से कुछ कुछ हद तक ओवरलैप करते हैं। जैसा कि मैंने कहा, परिभाषा फ़र्ज़ी है।
मैं कहूंगा कि स्क्रिप्टिंग भाषा एक भारी हेरफेर करने वाली संस्था है जो खुद को परिभाषित नहीं करती है। उदाहरण के लिए, जावास्क्रिप्ट ब्राउज़र द्वारा प्रदान की गई डोम ऑब्जेक्ट्स में हेरफेर करता है, PHP सी-आधारित कार्यों के विशाल पुस्तकालय को संचालित करता है, और इसी तरह। बेशक एक सटीक परिभाषा नहीं है, अगर यह सोचने का एक तरीका है।
यदि यह CPU पर नहीं चलता / नहीं चलता, तो यह मेरे लिए एक स्क्रिप्ट है। यदि एक दुभाषिया को प्रोग्राम के नीचे सीपीयू पर चलना है, तो यह एक स्क्रिप्ट और एक स्क्रिप्टिंग भाषा है।
इससे ज्यादा जटिल बनाने का कोई कारण नहीं?
बेशक, अधिकांश (99%) मामलों में, यह स्पष्ट है कि क्या कोई भाषा एक स्क्रिप्टिंग भाषा है। लेकिन विचार करें कि एक वीएम उदाहरण के लिए x86 इंस्ट्रक्शन सेट का अनुकरण कर सकता है। क्या यह एक VM पर चलने पर x86 बायोटेक को स्क्रिप्टिंग भाषा नहीं बना देगा? क्या होगा यदि कोई एक कंपाइलर लिखना था जो पर्ल कोड को एक देशी निष्पादन योग्य में बदल देगा? इस मामले में, मुझे नहीं पता कि भाषा को अब और क्या कहा जाए। यह वह आउटपुट होगा जो मायने रखेगा, भाषा नहीं।
तो फिर, मुझे इस तरह की किसी भी चीज़ के बारे में पता नहीं है, इसलिए अब तक मैं भाषाओं की स्क्रिप्टिंग भाषाओं की व्याख्या करने में सहज हूं।
एक स्क्रिप्ट अपेक्षाकृत छोटा कार्यक्रम है। एक प्रणाली एक अपेक्षाकृत बड़ा कार्यक्रम है, या अपेक्षाकृत बड़े कार्यक्रमों का एक संग्रह है।
कुछ प्रोग्रामिंग भाषाओं को उन विशेषताओं के साथ डिज़ाइन किया गया है जो अपेक्षाकृत छोटे कार्यक्रम लिखते समय भाषा डिजाइनर और प्रोग्रामिंग समुदाय उपयोगी मानते हैं। इन प्रोग्रामिंग भाषाओं को स्क्रिप्टिंग भाषाओं , जैसे PHP के रूप में जाना जाता है ।
इसी तरह, अन्य प्रोग्रामिंग भाषाओं को उन विशेषताओं के साथ डिज़ाइन किया गया है जो अपेक्षाकृत बड़े कार्यक्रमों को लिखते समय भाषा डिजाइनर और प्रोग्रामिंग समुदाय उपयोगी मानते हैं। इन प्रोग्रामिंग लैंग्वेज को सिस्टम लैंग्वेज , उदाहरण के लिए जावा के रूप में जाना जाता है ।
अब, छोटे और बड़े कार्यक्रम किसी भी भाषा में लिखे जा सकते हैं। एक छोटा जावा प्रोग्राम एक स्क्रिप्ट है। उदाहरण के लिए, एक जावा "हैलो वर्ल्ड" कार्यक्रम एक स्क्रिप्ट है, एक प्रणाली नहीं है। PHP में लिखा गया एक बड़ा कार्यक्रम या कार्यक्रमों का संग्रह एक प्रणाली है। उदाहरण के लिए, PHP में लिखा गया फेसबुक एक सिस्टम है, स्क्रिप्ट नहीं।
किसी भी भाषा की विशेषता को "लिटमस टेस्ट" के रूप में देखते हुए यह तय करना कि भाषा स्क्रिप्टिंग के लिए सबसे उपयुक्त है या सिस्टम प्रोग्रामिंग संदिग्ध है। उदाहरण के लिए, लिपियों को बाइट कोड या मशीन कोड के लिए संकलित किया जा सकता है, या उन्हें सीधे अमूर्त सिंटैक्स ट्री (एएसटी) व्याख्या द्वारा निष्पादित किया जा सकता है।
इसलिए, एक भाषा एक स्क्रिप्टिंग भाषा है यदि यह आमतौर पर स्क्रिप्ट लिखने के लिए उपयोग की जाती है । एक स्क्रिप्टिंग भाषा का उपयोग सिस्टम लिखने के लिए किया जा सकता है, लेकिन इस तरह के अनुप्रयोगों को संदिग्ध माना जाता है।