प्रोग्रामिंग भाषा बनाम मार्कअप भाषा बनाम स्क्रिप्टिंग भाषा


38

अब तक मैं नहीं जानता कि प्रमुख इन तीन के बीच मतभेद। जब कोई मुझसे इस बारे में पूछता है, तो मैं उन्हें बताता हूं कि C # एक प्रोग्रामिंग भाषा है, HTML और XML मार्कअप लैंग्वेज हैं, और जावास्क्रिप्ट और VBScript भाषाएं हैं। लेकिन वे कौन से प्रमुख अंतर हैं जो उन्हें एक दूसरे से अलग करते हैं?


भाषाओं को क्वेरी करना न भूलें!
काइल डेलाने

जवाबों:


38

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

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

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

    उपयोगकर्ता सूची रूपक में वापस जा रहे हैं, एक स्क्रिप्टिंग भाषा में आप डेटाबेस से पूछते हैं "मुझे सभी उपयोगकर्ता नाम दें", फिर वेब सर्वर से पूछें "इस उपयोगकर्ता की सूची इस अनुरोधकर्ता को भेजें"।

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

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

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


7
स्क्रिप्टिंग भाषा औपचारिक रूप से प्रोग्रामिंग भाषाओं का एक उपवर्ग है। (मैंने C और Java जैसी भाषाओं को पूरी तरह से व्याख्यायित करते हुए देखा है, एक REPL के साथ; बाधा दोनों तरह से लीक है ...)
डोनल फैलो

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

1
@ डॉनल फेलो: मैंने स्पष्ट रूप से उल्लेख करने के लिए अपने उत्तर को संपादित किया है कि एक दूसरे का सबसेट है।
मई'14

1
मैं केवल एक (अब तक) होने के लिए इस उत्तर का समर्थन करता हूं जो दावा करता है कि मार्कअप भाषाएं ऐसी भाषाएं हैं जो डेटा की संरचना का वर्णन करती हैं।
इदं आर्य

3
@ JörgWMittag: मुझे पता था कि इसके अपवाद होंगे, इसलिए मैंने "कई अपवाद होंगे" के साथ शुरुआत की थी :), अन्यथा, मेरे जवाब में मैं कहां से आशय करता हूं कि एक स्क्रिप्टिंग भाषा संकलित नहीं है ? मैंने उस
नुकसान

11

एक मार्कअप भाषा एक भाषा है जिसका उपयोग संरचित डेटा का प्रतिनिधित्व करने के लिए किया जाता है। उदाहरण के लिए, HTML यह निर्दिष्ट करने में सक्षम करता है कि दस्तावेज़ का कुछ हिस्सा एक शीर्षक है या कुछ अन्य भाग एक सूची है, एक सपाट पाठ दस्तावेज़ की तुलना में।

मार्कअप भाषाओं को प्रोग्रामिंग भाषा नहीं माना जाता है।

प्रोग्रामिंग भाषाओं के साथ अंतर हमेशा स्पष्ट नहीं होता है। उदाहरण के लिए, XSLT एक ट्यूरिंग-पूर्ण भाषा है, लेकिन XML पर आधारित है जो एक मार्कअप भाषा है।

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

एक स्क्रिप्टिंग भाषा एक प्रोग्रामिंग भाषा है जिसे संकलित करने के बजाय व्याख्या की जाती है, जिसका अर्थ है कि स्क्रिप्टिंग भाषा सभी प्रोग्रामिंग भाषाओं के सबसेट का प्रतिनिधित्व करती है।

यह हमेशा स्पष्ट नहीं होता है कि क्या प्रोग्रामिंग भाषा एक स्क्रिप्टिंग भाषा है, जैसे यह हमेशा स्पष्ट नहीं होता है कि कोई भाषा संकलित है या व्याख्या की गई है। उदाहरण के लिए, PHP को bytecode then से मध्यवर्ती करने के लिए संकलित किया जा सकता है और फिर JIT संकलक द्वारा मशीन कोड में रैंसलेट किया जा सकता है, जबकि अभी भी स्क्रिप्टिंग भाषा के रूप में माना जाता है।

इसे भी देखें: स्टीवन लोट द्वारा विभाजित मेटा-हेयर्स


Not "XML एक प्रोग्रामिंग भाषा नहीं है"। XML को 10 बिंदुओं में देखें ।

Language "XSLT एक ट्यूरिंग-पूर्ण भाषा है" विकिपीडिया पर XSLT देखें

³ “HHVM हैक और PHP को एक मध्यवर्ती बायोटेक में संकलित करता है। इस बायोटेक को तब x64 मशीन कोड में डायनामिक रूप से रनटाइम पर एक जस्ट-इन-टाइम (JIT) कंपाइलर द्वारा अनुवादित किया जाता है। ” HHVM देखें ।

By विकिपीडिया पर प्रकार से प्रोग्रामिंग भाषाओं की सूची में भाषाओं की स्क्रिप्टिंग


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

@ JörgWMittag "हर भाषा को दुभाषिया द्वारा लागू किया जा सकता है, हर भाषा को एक संकलक द्वारा लागू किया जा सकता है" - 100% सच?
स्पार्टाकस

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

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

1
"स्क्रिप्टिंग भाषा" भाग पूरी तरह से गलत है जैसा कि "जॉर्ग डब्ल्यू मित्तग" पहले ही इंगित कर चुका है। और शीर्ष पर "प्रोग्रामिंग भाषा" का कोई स्पष्टीकरण नहीं है।
डेविड राब

2

किसी भी प्रकार की करतूत का उत्पादन करने के लिए, आपको सबसे पहले अपने आप से कुछ प्रश्न पूछने होंगे:

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

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

प्रोग्रामिंग की भाषाएँ

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

कंप्यूटर प्रोग्रामिंग लैंग्वेज इस प्रकार होती हैं जो कंप्यूटर को प्रोग्राम करती हैं।

भाषाओं की स्क्रिप्टिंग

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

मार्कअप भाषाओं

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

XML भाषा के लिए "प्रोग्रामिंग" व्याख्या देना भी संभव है, ऐसा कुछ जो इस तरह से हो सकता है:

< := put interpreter in the reading node mode
! := if reading node, start CData/Comment mode
     else if not in read text mode, signal error
-- := if in start CData/Comment mode, start comment
      else if in comment, put in end comment mode
      else if in end comment mode, signal error
...

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


1

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

एक मार्कअप भाषा वह भाषा है जो प्रतिनिधित्व है एक टेक्स्ट स्वरूप में डेटा संरचित , एचटीएमएल सबसे प्रसिद्ध है, लेकिन ग्राफिक्स के लिए एसवीजी जैसे विभिन्न प्रयोजनों के लिए कई प्रारूपों,, में resouce फ़ाइलों के लिए वेब सेवा इंटरफेस, resx वर्णन करने के लिए डबल्यूएसडीएल हैं। नेट वगैरह। अंगूठे का एक नियम यह है कि एक मार्कअप भाषा एक प्रक्रिया या एल्गोरिदम का वर्णन नहीं करती है (जैसे एक प्रोग्रामिंग भाषा करती है) लेकिन शुद्ध डेटा है। लेकिन यह एक बुनियादी सीएस अंतर्दृष्टि भी है कि वहाँ हैकोड और डेटा के बीच कोई मौलिक अंतर नहीं है। XSLT जैसी कुछ मार्कअप भाषाओं में "वास्तविक" प्रोग्रामिंग भाषा की तरह लूप और सशर्त हैं, और कुछ प्रोग्रामिंग भाषा जैसे Prolog कोड में निर्दिष्ट कोई प्रक्रिया नहीं है। और लिस्प लाइन को इतना धुंधला कर देता है कि यह एक संरचित डेटा प्रारूप के रूप में अपने स्वयं के कोड का इलाज करता है।

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


0

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

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

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

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


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

@ JörgWMittag यह सच है कि कोई भी भाषा स्वाभाविक रूप से संकलित या व्याख्यायित नहीं होती है। लेकिन अक्सर यह कहा जाता है कि आमतौर पर इसे कैसे निष्पादित किया जाता है, जो मुख्य रूप से मैं यहां बता रहा हूं।
पियरे एंडरसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.