किसी भी प्रकार की करतूत का उत्पादन करने के लिए, आपको सबसे पहले अपने आप से कुछ प्रश्न पूछने होंगे:
- क्या जिन वस्तुओं को मैं ठीक से परिभाषित कर रहा हूं, क्या वे वस्तुएं हैं जो मैं जा रहा हूं?
- यदि हां, तो क्या वे वास्तव में मौजूद हैं?
- क्या मैं वस्तुओं के बीच केवल एक विशिष्ट प्रकार के संबंधों के लिए खुद को सीमित कर रहा हूं, या केवल वैध संबंधों का उपयोग करने के लिए सिस्टम के लिए एक निर्धारित आवश्यकता है?
आमतौर पर, जब कोई आपके द्वारा पूछे गए प्रश्न को सुनता है, तो अपेक्षित उत्तर कई धारणाएं बनाता है। उदाहरण के लिए, यह मानना स्वाभाविक है कि चूंकि ये सभी भाषाएं हैं, इसलिए उन्हें भाषा की अधिक सामान्य अवधारणा के तहत एक पदानुक्रम बनाना होगा, या यह कि वे सभी भाषाओं के स्थान को विभाजित करते हैं, या कि वे एक दूसरे के सबसेट हैं।
प्रोग्रामिंग की भाषाएँ
दुर्भाग्य से, उपरोक्त में से कोई भी सच नहीं लगता है। शायद केवल प्रोग्रामिंग भाषाओं की एक परिभाषा सबसे अधिक सहमत है। प्रोग्रामिंग लैंग्वेज वे भाषाएं हैं जो प्रोग्राम्स को एनकोड करती हैं। एन्कोडिंग का अर्थ है कि भाषा में एक शब्द को एक कार्यक्रम (क्रियाओं का एक क्रम) के रूप में व्याख्या किया जा सकता है। कंप्यूटर प्रोग्रामिंग लैंग्वेज इनमें से एक सबसेट हैं। गैर-कंप्यूटर प्रोग्रामिंग भाषाओं के उदाहरण: एक किराने की सूची, एक सुपरमार्केट में एक खरीदार के लिए दिशा-निर्देशों के रूप में व्याख्या की गई, डीएनए की व्याख्या पेप्टाइड्स को टेप करके, एक एनालॉग संगीत रिकॉर्ड जो टेप रिकॉर्डर के लिए एक कार्यक्रम के रूप में सेवारत है।
कंप्यूटर प्रोग्रामिंग लैंग्वेज इस प्रकार होती हैं जो कंप्यूटर को प्रोग्राम करती हैं।
भाषाओं की स्क्रिप्टिंग
अच्छी तरह से परिभाषित नहीं हैं। यह व्याख्या के लिए खुला है कि इस शब्द का क्या अर्थ है। ऐतिहासिक रूप से, ऐसा लगता है कि प्रोग्रामिंग भाषाओं में मशीन कोड का उत्पादन करने के लिए संकलक नहीं था, इस तरह से बुलाया गया था। आज के मानकों के अनुसार यह हर लोकप्रिय प्रोग्रामिंग लैंग्वेज एसेंबलर्स को इस श्रेणी में डाल देगा। यहां तक कि सी जैसी तथाकथित निम्न-स्तरीय भाषाओं को पहले से मौजूद प्रक्रियाओं के साथ एक रनटाइम की आवश्यकता होती है, इस प्रकार सी प्रोग्राम को संकलित करके प्राप्त होने वाले बायनेरिज़ पूरी तरह से मशीन कोड नहीं होते हैं, लेकिन हर बार रनटाइम को कॉल करते हैं।
मार्कअप भाषाओं
अच्छी तरह से परिभाषित नहीं हैं। जब भी इस शब्द का उपयोग किया जाता है, तो ऐसा प्रतीत होता है कि प्रोग्रामिंग भाषा का वर्णन बहुत ही सीमित लेक्सिकॉन के साथ किया जाता है, जिसका उपयोग मुख्य रूप से दृश्य या श्रव्य छवि उत्पन्न करने के लिए किया जाता है। 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
...
निचला रेखा: आज के रूप में यह विभाजन, बहुत सार्थक नहीं लगता है, यह आपको केवल कुछ अंतर्ज्ञान दे सकता है कि आप किस तरह की भाषा का सामना कर रहे हैं, लेकिन यह आपको कठोर परिभाषा प्रदान नहीं करेगा।