प्रोग्रामिंग भाषा

प्रोग्रामिंग लैंग्वेज कंप्यूटर प्रोग्राम लिखने के लिए अंकन की प्रणाली है। अधिकांश प्रोग्रामिंग लैंग्वेज टेक्स्ट-आधारित औपचारिक लैंग्वेज हैं, परन्तु वे दृश्य प्रोग्रामिंग लैंग्वेज भी हो सकती हैं। ये प्रकार की कंप्यूटर लैंग्वेज हैं।

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

प्रोग्रामिंग लैंग्वेज सिद्धांत कंप्यूटर विज्ञान का उपक्षेत्र है जो प्रोग्रामिंग लैंग्वेजों के डिजाइन, कार्यान्वयन, विश्लेषण, लक्षण वर्णन और वर्गीकरण से संबंधित है।

परिभाषा
किसी प्रोग्रामिंग लैंग्वेज को परिभाषित करते समय कई बातों पर विचार किया जाता है।

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

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

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

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

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

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

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

कुछ समय बाद, मशीनी लैंग्वेज में प्रोग्राम लिखे जा सकते हैं, जहाँ प्रोग्रामर प्रत्येक निर्देश को संख्यात्मक रूप में लिखता है, हार्डवेयर प्रत्यक्षतः निष्पादित कर सकता है। उदाहरण के लिए, दो मेमोरी स्थानों में मान जोड़ने के निर्देश में 3 संख्या सम्मिलित हो सकते हैं: ओपोड जो ऐड ऑपरेशन का चयन करता है, और दो मेमोरी स्थान। प्रोग्राम, दशमलव या बाइनरी रूप में, छिद्रित कार्ड, पेपर टेप, चुंबकीय टेप डेटा भंडारण से पढ़े जाते थे या कंप्यूटर के फ्रंट पैनल पर स्विच पर टॉगल किए जाते थे। मशीन लैंग्वेजों को बाद में प्रथम पीढ़ी की प्रोग्रामिंग लैंग्वेज (1जीएल) कहा गया।

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

प्रथम उच्च-स्तरीय प्रोग्रामिंग लैंग्वेज, या तीसरी पीढ़ी की प्रोग्रामिंग लैंग्वेज (3जीएल), 1950 के दशक में लिखी गई थीं। 1943 और 1945 के बीच कोनराड ज़्यूस द्वारा जर्मन जेड3 (कंप्यूटर) के लिए विकसित कंप्यूटर के लिए डिज़ाइन की जाने वाली प्रारंभिक उच्च-स्तरीय प्रोग्रामिंग लैंग्वेज प्लैंककुल थी। यद्यपि, इसे 1998 और 2000 तक लागू नहीं किया गया था।

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

मैनचेस्टर विश्वविद्यालय में, एलिक ग्लेनी ने 1950 के दशक के प्रारंभ में ऑटोकोड विकसित किया। उच्च-स्तरीय प्रोग्रामिंग लैंग्वेज के रूप में, यह लैंग्वेज को स्वचालित रूप से मशीन कोड में बदलने के लिए कम्पाइलर का उपयोग करता था। प्रथम कोड और कंपाइलर 1952 में मैनचेस्टर विश्वविद्यालय में मैनचेस्टर मार्क 1 कंप्यूटर के लिए विकसित किया गया था और इसे प्रथम कंपाइलर उच्च स्तरीय प्रोग्रामिंग लैंग्वेज माना जाता है।

मार्क 1 के लिए दूसरा ऑटो कोड टोनी ब्रूकर द्वारा विकसित किया गया था। 1954 में ए. ब्रूकर और इसे मार्क 1 ऑटोकोड कहा जाता था। ब्रूकर ने मैनचेस्टर विश्वविद्यालय के साथ मिलकर 1950 के दशक में फेरांती मरकरी के लिए ऑटो कोड भी विकसित किया। एडसैक के लिए संस्करण डेविड हार्टले (कंप्यूटर वैज्ञानिक) द्वारा तैयार किया गया था। 1961 में कैम्ब्रिज गणितीय प्रयोगशाला विश्वविद्यालय के एफ. हार्टले. ईडीएसएसी 2 ऑटोकोड के रूप में जाना जाता है, यह स्थानीय परिस्थितियों के लिए अनुकूलित मर्करी ऑटोकोड से प्रत्यक्ष विकास था और इसके ऑब्जेक्ट कोड अनुकूलन और सोर्स-लैंग्वेज निदान के लिए विख्यात था जो उस समय के लिए उन्नत थे। मैनचेस्टर एटलस कंप्यूटर (मैनचेस्टर) मशीन विश्वविद्यालय के लिए विकास का समकालीन परन्तु अलग थ्रेड, एटलस ऑटोकोड विकसित किया गया था।

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

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

शोधन
उच्च-स्तरीय लैंग्वेजों के बढ़ते उपयोग ने निम्न-स्तरीय प्रोग्रामिंग लैंग्वेजों या सिस्टम प्रोग्रामिंग लैंग्वेजों की आवश्यकता को प्रस्तुत किया। ये लैंग्वेज, अलग-अलग डिग्री तक, असेम्बली लैंग्वेजों और उच्च-स्तरीय लैंग्वेजों के बीच सुविधाएँ प्रदान करती हैं। उनका उपयोग उन कार्यों को करने के लिए किया जा सकता है जिनके लिए हार्डवेयर सुविधाओं तक सीधी पहुंच की आवश्यकता होती है परन्तु फिर भी उच्च-स्तरीय नियंत्रण संरचना और त्रुटि-जांच प्रदान करते हैं। 1960 के दशक से 1970 के दशक के अंत तक की अवधि ने अब उपयोग में आने वाले प्रमुख लैंग्वेज प्रतिमानों का विकास किया था: इनमें से प्रत्येक लैंग्वेज ने वंशजों को जन्म दिया, और अधिकांश आधुनिक प्रोग्रामिंग लैंग्वेज उनमें से कम से कम को अपने वंश में गणनीय हैं।
 * एपीएल (प्रोग्रामिंग लैंग्वेज) ने सरणी प्रोग्रामिंग के प्रारंभ की और कार्यात्मक प्रोग्रामिंग को प्रभावित किया।
 * एल्गोल ने संरचित प्रक्रियात्मक प्रोग्रामिंग और प्रोग्रामिंग लैंग्वेज विनिर्देश के अनुशासन दोनों को परिष्कृत किया; एल्गोरिथम लैंग्वेज एल्गोल 60 पर संशोधित रिपोर्ट इस बात का मॉडल बन गई कि बाद में लैंग्वेज विनिर्देशों को कैसे लिखा गया।
 * लिस्प (प्रोग्रामिंग लैंग्वेज), 1958 में लागू की गई, प्रथम गतिशील रूप से टाइप की गई कार्यात्मक प्रोग्रामिंग लैंग्वेज थी।
 * 1960 के दशक में, सिमुला प्रथम लैंग्वेज थी जिसे ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का समर्थन करने के लिए डिज़ाइन किया गया था; 1970 के दशक के मध्य में, स्मॉलटाक ने प्रथम विशुद्ध रूप से ऑब्जेक्ट-ओरिएंटेड लैंग्वेज का अनुसरण किया।
 * C (प्रोग्रामिंग लैंग्वेज) को 1969 और 1973 के बीच यूनिक्स ऑपरेटिंग सिस्टम के लिए सिस्टम प्रोग्रामिंग लैंग्वेज के रूप में विकसित किया गया था और यह लोकप्रिय बना हुआ है।
 * 1972 में डिजाइन किया गया प्रोलॉग प्रथम तर्क प्रोग्रामिंग लैंग्वेज थी।
 * 1978 में, एमएल ने लिस्प के शीर्ष पर एक बहुरूपी प्रकार प्रणाली का निर्माण किया, जो सांख्यिकीय रूप से टाइप की जाने वाली कार्यात्मक प्रोग्रामिंग लैंग्वेजों में अग्रणी थी।

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

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

1980 के दशक के समय बड़े पैमाने की प्रणालियों की प्रोग्रामिंग के लिए लैंग्वेज डिजाइन में महत्वपूर्ण प्रवृत्ति कोड के मॉड्यूल या बड़े पैमाने की संगठनात्मक इकाइयों के उपयोग पर बढ़ा हुआ ध्यान था। मोड्यूला-2, एडा, और एम्एल सभी ने 1980 के दशक में उल्लेखनीय मॉड्यूल सिस्टम विकसित किए, जो प्रायः सामान्य प्रोग्रामिंग निर्माणों से जुड़े थे।

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

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

चौथी पीढ़ी की प्रोग्रामिंग लैंग्वेज (4जीएल) कंप्यूटर प्रोग्रामिंग लैंग्वेज हैं, जिनका उद्देश्य 3जीएल की तुलना में आंतरिक कंप्यूटर हार्डवेयर विवरण का उच्च स्तर प्रदान करना पांचवीं पीढ़ी की प्रोग्रामिंग लैंग्वेज लैंग्वेज (5जीएल) प्रोग्रामिंग लैंग्वेज हैं, जो प्रोग्रामर द्वारा लिखे गए एल्गोरिथम का उपयोग करने के अतिरिक्त प्रोग्राम को दी गई बाधाओं का उपयोग करके समस्याओं को हल करने पर आधारित हैं।

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

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

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

प्रोग्रामिंग लैंग्वेज सिंटैक्स को सामान्यतः नियमित अभिव्यक्ति (शाब्दिक विश्लेषण संरचना के लिए) और बैकस-नौर रूप (संदर्भ-मुक्त व्याकरण संरचना के लिए) के संयोजन का उपयोग करके परिभाषित किया जाता है। लिस्प (प्रोग्रामिंग लैंग्वेज) पर आधारित सरल व्याकरण नीचे दिया गया है: expression ::= atom | list atom ::= number | symbol number ::= [+-]?['0'-'9']+ symbol ::= ['A'-'Z '' a'-'z'].* list ::= '(' expression* ')' यह व्याकरण निम्नलिखित निर्दिष्ट करता है:
 * एक अभिव्यक्ति या तो परमाणु या सूची है;
 * एक परमाणु या तो संख्या या प्रतीक है;
 * एक संख्या या अधिक दशमलव अंकों का अखंड क्रम है, वैकल्पिक रूप से धन या ऋण प्रतीक से पहले;
 * एक प्रतीक अक्षर है जिसके बाद शून्य या अधिक वर्ण होते हैं (व्हाट्सएप को छोड़कर); तथा
 * एक सूची कोष्ठकों का मिलान युग्म है, इसके भीतर शून्य या अधिक भाव हैं।

इस व्याकरण में सुनिर्मित टोकन क्रम के उदाहरण निम्नलिखित हैं:,   तथा.

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

एक उदाहरण के रूप में प्राकृतिक लैंग्वेज का प्रयोग करना, व्याकरणिक रूप से उचित वाक्य को अर्थ देना संभव नहीं हो सकता है या वाक्य असत्य हो सकता है:
 * रंगहीन हरे विचार करुण सोई। व्याकरणिक रूप से ठीक रूप से निर्मित है परन्तु सामान्यतः स्वीकृत अर्थ नहीं है।
 * जॉन विवाहित अविवाहित है। व्याकरणिक रूप से सुव्यवस्थित है परन्तु अर्थ व्यक्त करता है जो सत्य नहीं हो सकता।

निम्नलिखित सी भाषा खंड वाक्यात्मक रूप से सही है, लेकिन ऐसे ऑपरेशन करता है जो शब्दार्थ रूप से परिभाषित नहीं हैं (ऑपरेशन  का जटिल प्रकार वाले मान के लिए कोई अर्थ नहीं है और   परिभाषित नहीं है क्योंकि   अशक्त सूचक है): complex *p = NULL; complex abs_p = sqrt(*p >> 4 + p->im); यदि पहली पंक्ति पर प्रकार की घोषणा छोड़ दी गई थी, तो प्रोग्राम संकलन के समय अपरिभाषित चर  पर एक त्रुटि ट्रिगर करेगा। यद्यपि, प्रोग्राम अभी भी वाक्य रचनात्मक रूप से उचित होगा क्योंकि प्रकार की घोषणाएं मात्र सिमेंटिक सूचना प्रदान करती हैं।

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

शब्दार्थ
सिमेंटिक्स#कंप्यूटर विज्ञान शब्द का तात्पर्य लैंग्वेजों के अर्थ से है, जैसा कि उनके रूप (#सिंटेक्स) के विपरीत है।

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

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

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

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

टाइप की गई लैंग्वेजों का विशेष मामला एकल-टाइप की गई लैंग्वेज हैं। ये प्रायः स्क्रिप्टिंग या मार्कअप लैंग्वेज होती हैं, जैसे REXX या मानक सामान्यीकृत मार्कअप लैंग्वेज, और इनमें मात्र डेटा प्रकार होता है——सामान्यतः वर्ण तार जो प्रतीकात्मक और संख्यात्मक डेटा दोनों के लिए उपयोग किए जाते हैं।

इसके विपरीत, अनटाइप्ड लैंग्वेज, जैसे कि अधिकांश असेंबली लैंग्वेज, किसी भी डेटा पर किसी भी ऑपरेशन को करने की अनुमति देती है, सामान्यतः विभिन्न लंबाई के बिट्स का क्रम। उच्च-स्तरीय अनटाइप्ड लैंग्वेजों में BCPL, Tcl, और फोर्थ (प्रोग्रामिंग लैंग्वेज) की कुछ किस्में सम्मिलित हैं।

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

स्टेटिक विज़-ए-विज़ डायनामिक टाइपिंग
टाइप सिस्टम में, प्रोग्राम के निष्पादित होने से पहले, सामान्यतः कंपाइल-टाइम पर, सभी एक्सप्रेशंस के प्रकार निर्धारित किए जाते हैं। उदाहरण के लिए, 1 और (2+2) पूर्णांक व्यंजक हैं; उन्हें किसी ऐसे फ़ंक्शन में पास नहीं किया जा सकता है जो स्ट्रिंग की अपेक्षा करता है या वेरिएबल में संग्रहीत होता है जिसे दिनांक रखने के लिए परिभाषित किया जाता है।

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

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

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

सशक्त रूप से टाइप की गई प्रोग्रामिंग लैंग्वेज इन प्रोग्राम दोषों को रोकती है। असत्य प्रकार के मान पर कोई ऑपरेशन करने का प्रयास त्रुटि उत्पन्न करता है। बलदार टाइप की गई लैंग्वेजों को प्रायः टाइप-सेफ या प्रकार की सुरक्षा कहा जाता है।

कमबल रूप से टाइप की गई वैकल्पिक परिभाषा लैंग्वेजों को संदर्भित करती है, जैसे कि पर्ल और जावास्क्रिप्ट, जो बड़ी संख्या में निहित प्रकार के रूपांतरणों की अनुमति देती हैं। जावास्क्रिप्ट में, उदाहरण के लिए, अभिव्यक्ति  परोक्ष रूप से रूपांतरित करता है   संख्या के लिए, और यह रूपांतरण तब भी सफल होता है जब   है ,  ,  , या अक्षरों की स्ट्रिंग। ऐसे अंतर्निहित रूपांतरण प्रायः उपयोगी होते हैं, परन्तु वे प्रोग्रामिंग त्रुटियों को छिपा सकते हैं। मजबूत और स्थिर अब सामान्यतः ऑर्थोगोनल अवधारणाएं मानी जाती हैं, परन्तु साहित्य में उपयोग अलग है। कुछ शब्द दृढ़ता से टाइप किए गए शब्द का उपयोग दृढ़ता से, स्थिर रूप से टाइप किए गए, या इससे भी अधिक भ्रमित करने के लिए किया जाता है, जिसका अर्थ है कि मात्र स्थिर रूप से टाइप किया गया है। इस प्रकार C (प्रोग्रामिंग लैंग्वेज) को दृढ़ता से टाइप किया गया और कमबल रूप से टाइप किया गया, दोनों कहा गया है। कुछ पेशेवर प्रोग्रामरों को यह अजीब लग सकता है कि सी कमबल, वैधानिक रूप से टाइप किया जा सकता है। यद्यपि, ध्यान दें कि जेनेरिक पॉइंटर, शून्य * पॉइंटर का उपयोग, स्पष्ट कास्ट करने की आवश्यकता के बिना अन्य पॉइंटर्स को कास्टिंग पॉइंटर्स की अनुमति देता है। यह किसी स्पष्ट कास्ट का उपयोग किए बिना सी में किसी भी प्रकार के डेटाटाइप को बाइट्स की सरणी डालने के समान ही है  या.

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

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

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

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

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

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

एक लैंग्वेज के डिजाइनरों और उपयोगकर्ताओं को प्रोग्रामिंग के अभ्यास को नियंत्रित करने और सक्षम करने वाली कई कलाकृतियों का निर्माण करना चाहिए। इन कलाकृतियों में सबसे महत्वपूर्ण लैंग्वेज विनिर्देश और कार्यान्वयन हैं।

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

एक प्रोग्रामिंग लैंग्वेज विनिर्देश निम्नलिखित सहित कई रूप ले सकता है:
 * लैंग्वेज के सिंटैक्स, स्थिर शब्दार्थ और निष्पादन शब्दार्थ की स्पष्ट परिभाषा। जबकि सिंटैक्स सामान्यतः औपचारिक व्याकरण का उपयोग करके निर्दिष्ट किया जाता है, सिमेंटिक परिभाषा प्राकृतिक लैंग्वेज में लिखी जा सकती हैं (जैसे, C (प्रोग्रामिंग लैंग्वेज) में), या प्रोग्रामिंग लैंग्वेजों का औपचारिक शब्दार्थ (जैसे, मानक एमएल में) और योजना (प्रोग्रामिंग लैंग्वेज) विशेष विवरण)।
 * लैंग्वेज के लिए कंपाइलर के व्यवहार का विवरण (उदाहरण के लिए, सी ++ और फोरट्रान विनिर्देश)। इस विवरण से लैंग्वेज के सिंटैक्स और शब्दार्थ का अनुमान लगाना पड़ता है, जो प्राकृतिक या औपचारिक लैंग्वेज में लिखा जा सकता है।
 * एक संदर्भ कार्यान्वयन, कभी-कभी मेटा-सर्कुलर मानांकनकर्ता (जैसे, प्रोलॉग या REXX ). संदर्भ कार्यान्वयन के व्यवहार में लैंग्वेज का सिंटैक्स और शब्दार्थ स्पष्ट है।

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

एक कंपाइलर का आउटपुट हार्डवेयर या दुभाषिया नामक प्रोग्राम द्वारा निष्पादित किया जा सकता है। दुभाषिया दृष्टिकोण का उपयोग करने वाले कुछ कार्यान्वयनों में, संकलन और व्याख्या के बीच कोई अलग सीमा नहीं है। उदाहरण के लिए, BASIC के कुछ कार्यान्वयन सोर्स को समय में पंक्ति में संकलित और निष्पादित करते हैं।

प्रोग्राम जो प्रत्यक्षतः हार्डवेयर पर निष्पादित होते हैं, सामान्यतः उन प्रोग्रामों की तुलना में बहुत तेजी से चलते हैं जिन्हें सॉफ्टवेयर में व्याख्या किया जाता है। व्याख्या किए गए प्रोग्रामों के निष्पादन में सुधार के लिए तकनीक समय-समय पर संकलन है। यहां आभासी मशीन, निष्पादन से ठीक पहले, हार्डवेयर पर प्रत्यक्षतः निष्पादन के लिए मशीन कोड के लिए उपयोग किए जाने वाले बाईटकोड के ब्लॉक का अनुवाद करती है।

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

कुछ प्रोग्रामिंग लैंग्वेज मालिकाना और खुले के बीच की सीमा पर स्थित हैं; उदाहरण के लिए, Oracle कार्पोरेशन जावा प्रोग्रामिंग लैंग्वेज के कुछ पहलुओं पर मालिकाना हक का दावा करता है, और माइक्रोसॉफ्ट की सी शार्प (प्रोग्रामिंग लैंग्वेज)|सी# प्रोग्रामिंग लैंग्वेज, जिसमें सिस्टम के अधिकांश हिस्सों का खुला कार्यान्वयन है, बंद वातावरण के रूप में सामान्य लैंग्वेज रनटाइम (सीएलआर) भी है। कई स्वामित्व वाली लैंग्वेजों का व्यापक रूप से उपयोग किया जाता है, उनकी मालिकाना प्रकृति के अतिरिक्त; उदाहरणों में MATLAB, VBScript और वोल्फ्राम लैंग्वेज सम्मिलित हैं। कुछ लैंग्वेज बंद से खुले में परिवर्तन कर सकती हैं; उदाहरण के लिए, Erlang (प्रोग्रामिंग लैंग्वेज) मूल रूप से Ericsson की आंतरिक प्रोग्रामिंग लैंग्वेज थी।

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

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

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

लैंग्वेज के प्रयोग का मापन
यह निर्धारित करना कि सबसे व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग लैंग्वेज कौन सी है, क्योंकि उपयोग की परिभाषा संदर्भ के अनुसार भिन्न होती है। लैंग्वेज अधिक संख्या में प्रोग्रामर घंटों पर कब्जा कर सकती है, अलग में कोड की अधिक पंक्तियां होती हैं, और तीसरी सबसे अधिक CPU समय का उपभोग कर सकती है। कुछ लैंग्वेज विशेष प्रकार के अनुप्रयोगों के लिए बहुत लोकप्रिय हैं। उदाहरण के लिए, कोबोल कॉर्पोरेट डेटा सेंटर में अभी भी मजबूत है, प्रायः बड़े मेनफ़्रेम कंप्यूटर पर; फोरट्रान वैज्ञानिक और इंजीनियरिंग अनुप्रयोगों में; एयरोस्पेस, परिवहन, सैन्य, वास्तविक समय और एम्बेडेड अनुप्रयोगों में एडा (प्रोग्रामिंग लैंग्वेज); और सी (प्रोग्रामिंग लैंग्वेज) एम्बेडेड अनुप्रयोगों और ऑपरेटिंग सिस्टम में। कई अलग-अलग प्रकार के अनुप्रयोगों को लिखने के लिए नियमित रूप से अन्य लैंग्वेजों का उपयोग किया जाता है।

लैंग्वेज की लोकप्रियता को मापने के विभिन्न विधि, जो मापा जाता है उस पर अलग पूर्वाग्रह के लिए प्रत्येक विषय प्रस्तावित किया गया है:
 * लैंग्वेज का उल्लेख करने वाले नौकरी विज्ञापनों की संख्या की गणनीय करना
 * बेची गई किताबों की संख्या जो लैंग्वेज सिखाती या उसका वर्णन करती हैं
 * लैंग्वेज में लिखे गए कोड की वर्तमान पंक्तियों की संख्या का अनुमान – जो प्रायः सार्वजनिक खोजों में नहीं मिलने वाली लैंग्वेजों को कम आंकते हैं
 * वेब सर्च इंजन का उपयोग करते हुए पाए गए लैंग्वेज संदर्भों की संख्या (अर्थात, लैंग्वेज के नाम के लिए)।

विभिन्न इंटरनेट साइटों से सूचना का संयोजन और औसत, stackify.com ने दस सबसे लोकप्रिय प्रोग्रामिंग लैंग्वेजों (समग्र लोकप्रियता के अवरोही क्रम में) की सूचना दी: जावा (प्रोग्रामिंग लैंग्वेज), सी (प्रोग्रामिंग लैंग्वेज), सी ++, पायथन (प्रोग्रामिंग लैंग्वेज), सी शार्प (प्रोग्रामिंग लैंग्वेज)|सी#, जावास्क्रिप्ट, विज़ुअल बेसिक .NET|VB .NET, R (प्रोग्रामिंग लैंग्वेज), PHP, और MATLAB।

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

वर्गीकरण
प्रोग्रामिंग लैंग्वेजों के लिए कोई व्यापक वर्गीकरण योजना नहीं है। किसी दी गई प्रोग्रामिंग लैंग्वेज में सामान्यतः पूर्वज लैंग्वेज नहीं होती है। उस समय संचलन में नवीन विचारों के साथ कई पूर्ववर्ती लैंग्वेजों के अवयवों के संयोजन से सामान्यतः लैंग्वेज उत्पन्न होती हैं। लैंग्वेज में उत्पन्न होने वाले विचार संबंधित लैंग्वेजों के वर्ग में फैलेंगे, और फिर पूर्ण रूप से अलग वर्ग में प्रकट होने के लिए पारिवारिक अंतराल में अचानक छलांग लगा देंगे।

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

यह भी देखें

 * प्रोग्रामिंग भाषाओं की तुलना (मूल निर्देश)
 * प्रोग्रामिंग भाषाओं की तुलना
 * कंप्यूटर प्रोग्रामिंग
 * कंप्यूटर विज्ञान और कंप्यूटर विज्ञान की रूपरेखा
 * डोमेन-विशिष्ट भाषा
 * डोमेन-विशिष्ट मॉडलिंग
 * शैक्षिक प्रोग्रामिंग भाषा
 * गूढ़ प्रोग्रामिंग भाषा
 * एक्स्टेंसिबल प्रोग्रामिंग
 * : श्रेणी: एक्स्टेंसिबल सिंटैक्स प्रोग्रामिंग लैंग्वेज
 * अपरिवर्तनीय आधारित प्रोग्रामिंग
 * बुनियादी बोलियों की सूची
 * प्रोग्रामिंग भाषाओं की सूची
 * प्रोग्रामिंग भाषा शोधकर्ताओं की सूची
 * अधिकांश लोकप्रिय वेबसाइटों में उपयोग की जाने वाली प्रोग्रामिंग भाषाएं
 * भाषा उन्मुख प्रोग्रामिंग
 * तर्क प्रोग्रामिंग
 * साक्षर प्रोग्रामिंग
 * मेटाप्रोग्रामिंग
 * मॉडलिंग भाषा
 * प्रोग्रामिंग भाषा सिद्धांत
 * स्यूडोकोड
 * प्रतिबिंब (कंप्यूटर विज्ञान)
 * वैज्ञानिक प्रोग्रामिंग भाषा
 * भाषा का अंकन
 * सॉफ्टवेयर इंजीनियरिंग और सॉफ्टवेयर इंजीनियरिंग विषयों की सूची
 * भाषा का अंकन
 * सॉफ्टवेयर इंजीनियरिंग और सॉफ्टवेयर इंजीनियरिंग विषयों की सूची

अग्रिम पठन

 * Raphael Finkel: Advanced Programming Language Design, Addison Wesley 1995.
 * Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes: Essentials of Programming Languages, The MIT Press 2001.
 * Maurizio Gabbrielli and Simone Martini: "Programming Languages: Principles and Paradigms", Springer, 2010.
 * David Gelernter, Suresh Jagannathan: Programming Linguistics, The MIT Press 1990.
 * Ellis Horowitz (ed.): Programming Languages, a Grand Tour (3rd ed.), 1987.
 * Ellis Horowitz: Fundamentals of Programming Languages, 1989.
 * Shriram Krishnamurthi: Programming Languages: Application and Interpretation, online publication.
 * Bruce J. MacLennan: Principles of Programming Languages: Design, Evaluation, and Implementation, Oxford University Press 1999.
 * John C. Mitchell: Concepts in Programming Languages, Cambridge University Press 2002.
 * Benjamin C. Pierce: Types and Programming Languages, The MIT Press 2002.
 * Terrence W. Pratt and Marvin Victor Zelkowitz: Programming Languages: Design and Implementation (4th ed.), Prentice Hall 2000.
 * Peter H. Salus. Handbook of Programming Languages (4 vols.). Macmillan 1998.
 * Ravi Sethi: Programming Languages: Concepts and Constructs, 2nd ed., Addison-Wesley 1996.
 * Michael L. Scott: Programming Language Pragmatics, Morgan Kaufmann Publishers 2005.
 * Robert W. Sebesta: Concepts of Programming Languages, 9th ed., Addison Wesley 2009.
 * Franklyn Turbak and David Gifford with Mark Sheldon: Design Concepts in Programming Languages, The MIT Press 2009.
 * Peter Van Roy and Seif Haridi. Concepts, Techniques, and Models of Computer Programming, The MIT Press 2004.
 * David A. Watt. Programming Language Concepts and Paradigms. Prentice Hall 1990.
 * David A. Watt and Muffy Thomas. Programming Language Syntax and Semantics. Prentice Hall 1991.
 * David A. Watt. Programming Language Processors. Prentice Hall 1993.
 * David A. Watt. Programming Language Design Concepts. John Wiley & Sons 2004.
 * David A. Watt. Programming Language Design Concepts. John Wiley & Sons 2004.

इस पेज में लापता आंतरिक लिंक की सूची

 * सोर्स कोड
 * सिंटेक्स (प्रोग्रामिंग लैंग्वेज)
 * शब्दार्थ (कंप्यूटर विज्ञान)
 * संदर्भ कार्यान्वयन
 * अंतरराष्ट्रीय मानकीकरण संगठन
 * गणना का सिद्धांत
 * मार्कअप लैंग्वेज
 * बहाव को काबू करें
 * अमूर्त (कंप्यूटर विज्ञान)
 * निर्देश समूह वास्तुकला
 * उच्च स्तरीय प्रोग्रामिंग लैंग्वेज
 * सभा की लैंग्वेज
 * लघु कोड (कंप्यूटर लैंग्वेज)
 * उच्च स्तरीय लैंग्वेज
 * उच्च निष्पादन कंप्यूटिंग
 * शीर्ष 500
 * छोटी बात
 * ऑब्जेक्ट ओरिएंटेड कार्यकर्म
 * टाइप सिस्टम
 * एसीएम का संचार
 * प्रतिनिधिमंडल (प्रोग्रामिंग)
 * चौथी पीढ़ी की प्रोग्रामिंग लैंग्वेज
 * एस्पेक्ट आधारित प्रोग्रामिंग
 * पायथन (प्रोग्रामिंग लैंग्वेज)
 * संदर्भ मुक्त व्याकरण
 * अच्छे प्रकार से निर्मित
 * रंगहीन हरे विचार सो जाते हैं
 * नल पॉइंटर
 * बयान (कंप्यूटर विज्ञान)
 * एक्सेप्शन हेंडलिंग
 * शाब्दिक स्ट्रिंग
 * घोषणा (कंप्यूटर विज्ञान)
 * रन टाइम (प्रोग्राम जीवनचक्र चरण)
 * दृढ़ता से टाइप की गई प्रोग्रामिंग लैंग्वेज
 * अनाम समारोह
 * लैंग्वेज का अंकन
 * ओरेकल कॉर्पोरेशन
 * सत्र (कंप्यूटर विज्ञान)
 * आर (प्रोग्रामिंग लैंग्वेज)
 * डेटा विनिमय लैंग्वेज
 * बुनियादी बोलियों की सूची
 * थ्रेड (कंप्यूटर विज्ञान)
 * सामान्य प्रयोजन प्रोग्रामिंग लैंग्वेज
 * लैंग्वेज-ओरिएंटेड प्रोग्रामिंग
 * अधिकांश लोकप्रिय वेबसाइटों में उपयोग की जाने वाली प्रोग्रामिंग लैंग्वेज
 * प्रोग्रामिंग लैंग्वेजों की तुलना (मूल निर्देश)