मेरे प्रोग्रामिंग मित्र हमेशा मुझे बता रहे हैं कि HTML एक मार्कअप भाषा है और C ++ एक प्रोग्रामिंग भाषा है। जब मैंने उनसे पूछा कि क्या अंतर है, तो उन्होंने मुझे कभी उचित जवाब नहीं दिया।
C ++ को प्रोग्रामिंग भाषा, और HTML नहीं कह सकते हैं?
मेरे प्रोग्रामिंग मित्र हमेशा मुझे बता रहे हैं कि HTML एक मार्कअप भाषा है और C ++ एक प्रोग्रामिंग भाषा है। जब मैंने उनसे पूछा कि क्या अंतर है, तो उन्होंने मुझे कभी उचित जवाब नहीं दिया।
C ++ को प्रोग्रामिंग भाषा, और HTML नहीं कह सकते हैं?
जवाबों:
एक प्रोग्रामिंग भाषा एक मशीन को निर्देश पारित करने के लिए डिज़ाइन किया गया एक संकेतन है। उस परिभाषा के अनुसार, C ++ और HTML दोनों ही प्रोग्रामिंग लैंग्वेज हैं, जैसा कि 1801 में अपने लूम को प्रोग्राम करने के लिए जोसेफ मैरी जैक्वार्ड ने नोट किया था ।
हालाँकि, उन भाषाओं के प्रसार के साथ जिनका उपयोग संरचना और / या डेटा का वर्णन करने के लिए किया जाता है, एक प्रोग्रामिंग भाषा की परिभाषा को केवल उन्हीं भाषाओं को शामिल करने के लिए स्थानांतरित किया गया जो एल्गोरिदम को व्यक्त करने में सक्षम हैं। यह आज अधिक सामान्य परिभाषा है और यह HTML या XML जैसी भाषाओं को शामिल नहीं करती है।
वर्तमान परिभाषा के दिल में ट्यूरिंग संपूर्णता की अवधारणा है । अधिकांश प्रोग्रामिंग भाषाएं ट्यूरिंग पूर्ण हैं, और ट्यूरिंग संपूर्णता को अक्सर एक महत्वपूर्ण विशेषता के रूप में उद्धृत किया जाता है जो प्रोग्रामिंग भाषा को किसी अन्य कंप्यूटर भाषा से अलग करता है। यह अंगूठे के एक सामान्य नियम के रूप में काफी अच्छा है, लेकिन पूरी तरह से सही नहीं है:
संदर्भ के आधार पर, आप अपनी मनचाही परिभाषा चुन सकते हैं।
संपादित करें:
इसे आगे भी जाने दें, किसी भाषा का कार्यान्वयन स्वयं भाषा को विशेषताओं को प्रदान नहीं करता है, उदाहरण के लिए: एक भाषा की कल्पना एक ट्यूरिंग पूरी भाषा को परिभाषित कर सकती है, कोई इसे पूरी तरह से पूर्णता को छोड़ने के लिए लापरवाही से लागू कर सकता है। यह कार्यान्वयन गैर-ट्यूरिंग पूर्ण होने का अर्थ यह नहीं है कि भाषा स्वयं पूर्ण नहीं है (बल्कि इसका अर्थ है कि कार्यान्वयन गैर-अनुरूप है)। किसी भाषा के विवरण और किसी भाषा के किसी विशेष कार्यान्वयन के विवरण को अलग-अलग चीजों के रूप में मान्यता दी जाती है, यही कारण है कि किसी भाषा की व्याख्या या संकलित आदि को कॉल करना गलत है।
वाक्यांश "मुझे पता है जब मैं इसे देखता हूं" यह एक बोलचाल की अभिव्यक्ति है जिसके द्वारा एक वक्ता एक अवलोकन योग्य तथ्य या घटना को वर्गीकृत करने का प्रयास करता है, हालांकि श्रेणी व्यक्तिपरक है या स्पष्ट रूप से परिभाषित मापदंडों का अभाव है। यह शब्द संयुक्त राज्य अमेरिका के सुप्रीम कोर्ट के जस्टिस पॉटर स्टीवर्ट द्वारा जैकबेलिस बनाम ओहियो (1964) में अश्लीलता के लिए उनकी दहलीज परीक्षण का वर्णन करने के लिए प्रसिद्ध था ।
- "मुझे पता है जब मैं इसे देखता हूं" विकिपीडिया लेख
अश्लीलता की तरह, मुझे लगता है कि हम सभी एक प्रोग्रामिंग भाषा जानते हैं जब हम एक को देखते हैं। स्पष्ट रूप से ओपी करता है, क्योंकि आपने पहले ही C ++ को एक प्रोग्रामिंग भाषा, और HTML को एक नहीं होने के लिए आंका है।
तो वास्तव में औपचारिक परिभाषा को आगे बढ़ाने का लक्ष्य क्या है? यानिस ने पहले से ही एक शानदार तरीका बताया है कि क्यों सबसे लोकप्रिय परिभाषा, ट्यूरिंग पूर्णता त्रुटिपूर्ण है: यह श्रेणीकरण की ओर जाता है जो "मुझे पता है कि जब मैं इसे देखता हूं" परीक्षा को टाल देता है।
मैंने इसे आपके सामने रखा है कि आप जिस भी परिभाषा के साथ आ सकते हैं, उससे कुछ भाषाओं को बढ़ावा मिलेगा, जो हम सभी महसूस करते हैं कि "प्रोग्रामिंग" भाषाओं को ऐसा नहीं माना जाएगा; या कुछ भाषाओं में जो हम सभी महसूस करते हैं कि "प्रोग्रामिंग" भाषाओं को श्रेणीबद्ध किया जाएगा ताकि ऐसा न हो।
सिर्फ अपनी आंत के साथ क्यों नहीं ? मैं एक साधारण विधर्मी का उपयोग करता हूं: एक प्रोग्रामिंग भाषा एक भाषा है जिसका प्राथमिक उद्देश्य, मेरी राय में और मेरी टिप्पणियों के अनुसार, प्रोग्राम लिखना है। सामग्री को चिह्नित करने के लिए नहीं। एक्सएमएल को बदलने के लिए नहीं। सामान्य प्रयोजन कार्यक्रम लिखने के लिए। जब मैं इसे एक औपचारिक परिभाषा को खत्म करने की कोशिश कर रहा था, और मैं ऐसी कोई वास्तविक कीमत नहीं देख सकता जो इस तरह की परिभाषा के प्रयास से आ सकती है।
मार्कअप भाषा मुख्य रूप से यह बताती है कि जानकारी कैसे प्रदर्शित होती है और वे आम तौर पर चर, गणित, तुलना, निर्णय लेने (यदि ... तो), छोरों (के लिए, जबकि), आदि के प्रोग्रामिंग बुनियादी ढांचे में कमी करते हैं।
HTML अपने आप में स्थिर है; यह एक शब्द-प्रोसेसर की तरह है, यह जानकारी को प्रस्तुत करने के लिए है जैसा कि यह है। केवल कुछ प्रकार की प्रोग्रामिंग भाषाओं के अलावा (आमतौर पर जावास्क्रिप्ट, PHP, आदि जैसी भाषाओं की स्क्रिप्टिंग) HTML वेब पृष्ठों में "परिवर्तनशील" सामग्री हो सकती है। स्क्रिप्टिंग भाषाएं चर, गणित, तुलना, निर्णय लेने, छोरों आदि के साथ "प्रोग्रामिंग" संभावनाएं प्रदान करती हैं।
HTML एक घोषणात्मक भाषा है। यह अपने आप में बहुत कुछ नहीं करता है, यह सिर्फ एक दस्तावेज़ और उसकी सामग्री (टैग का उपयोग करके अर्थपूर्ण अर्थ है) का वर्णन करता है।
दूसरी ओर C ++ कुछ करता है। यह फ़ंक्शंस और क्लासेस को परिभाषित करता है, लेकिन यह भी वर्णन करता है कि इन फ़ंक्शंस को एक साथ कैसे काम करना चाहिए, कैसे उनके इनपुट और आउटपुट एक साथ सार्थक तरीके से बंधे हैं और एप्लिकेशन को समग्र रूप से कैसे चलना चाहिए।