पास्कल (प्रोग्रामिंग भाषा)

From Vigyanwiki
Pascal
LagrangePAS.png
Paradigm
परिवारWirth Pascal
द्वारा डिज़ाइन किया गयाNiklaus Wirth
पहली प्रस्तुति1970; 55 years ago (1970)
टाइपिंग अनुशासन
स्कोपLexical
फ़ाइल नाम एक्सटेंशनएस.pp, .pas, .inc
Major implementations
Dialects
Influenced by
Influenced

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

पास्कल को ऐल्गॉल 60 भाषा की तर्ज पर विकसित किया गया था। विर्थ ऐल्गॉल एक्स प्रयासों के भाग के रूप में भाषा को सुधारने की प्रक्रिया में सम्मिलित था और उसने ऐल्गॉल डब्लू नाम का एक संस्करण प्रस्तावित किया। जिसे स्वीकार नहीं किया गया, और ऐल्गॉल एक्स प्रक्रिया को रोकना पड़ा था। 1968 में, विर्थ ने ऐल्गॉल एक्स प्रक्रिया को छोड़ने और ऐल्गॉल डब्लू को और अधिक उत्तम बनाने का निर्णय लिया, जिसे 1970 में पास्कल के रूप में प्रस्तुत किया गया था।

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

1970 के दशक में पास्कल विशेष रूप से बढ़ते मिनीकंप्यूटर बाजार में बहुत सफल हो गया। 1970 के दशक के अंत में क्षेत्र के उभरने के साथ ही कई माइक्रो कंप्यूटरों के लिए संकलक भी उपलब्ध थे। यह 1980 के दशक में विश्वविद्यालय स्तर के प्रोग्रामिंग पाठ्यक्रमों में एक शिक्षण भाषा के रूप में विस्तृत रूप से उपयोग किया गया था और उसी अवधि के समय व्यावसायिक सॉफ्टवेयर लिखने के लिए उत्पादन सेटिंग्स में भी इसका उपयोग किया गया था। 1980 के दशक के अंत और 1990 के दशक के प्रारंभ में इसे C (प्रोग्रामिंग भाषा) द्वारा विस्थापित कर दिया गया क्योंकि यूनिक्स- आधारित प्रणाली, विशेष रूप से C ++ की रिलीज़ के साथ लोकप्रिय हो गये थे।

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

इतिहास

पहले के प्रयास

1960 के दशक के समय कंप्यूटर भाषा डिजाइन के अधिकांश इतिहास को ऐल्गॉल 60 भाषा में खोजा जा सकता है। ऐल्गॉल को 1950 के दशक के समय स्पष्ट रूप से एल्गोरिदम का वर्णन करने में सक्षम होने के स्पष्ट लक्ष्य के साथ विकसित किया गया था। इसमें संरचित प्रोग्रामिंग के लिए कई विशेषताएं सम्मिलित थीं जो आज तक भाषाओं में सामान्य हैं।

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

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

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

पास्कल

पास्कल ऐल्गॉल डब्लू के प्रयासों से प्रभावित था, जिसमें संरचित विधियों से प्रोग्रामिंग सिखाने और प्रणाली सॉफ्टवेयर के विकास के स्पष्ट लक्ष्य थे।[4] छात्रों की पीढ़ी ने स्नातक पाठ्यक्रमों में पास्कल को परिचयात्मक भाषा के रूप में उपयोग किया।

भाषा के लिए प्रारंभिक सफलताओं में से एक यूसीएसडी पास्कल का परिचय था, ऐसा संस्करण जो कस्टम ऑपरेटिंग प्रणाली पर चलता था जिसे विभिन्न प्लेटफार्मों पर पोर्ट किया जा सकता था। एक प्रमुख मंच एप्पल II था, जहाँ इसने एप्पल पास्कल के रूप में विस्तृत उपयोग देखा। इसके कारण पास्कल प्राथमिक उच्च-स्तरीय भाषा बन गया जिसका उपयोग एप्पल लिसा और बाद में मैकिटोश में विकास के लिए किया गया। पास्कल स्रोत कोड से मूल पारंपरिक मैक ओएस के कुछ भागों को मोटोरोला 68000 असेंबली भाषा में हाथ से अनुवादित किया गया था।[5]

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

पास्कल के वेरिएंट का उपयोग अनुसंधान परियोजनाओं से लेकर पीसी गेम और अंतः स्थापित प्रणाली तक सब कुछ के लिए किया गया है। नए पास्कल अनुभाषक उपस्थित हैं जिनका विस्तृत रूप से उपयोग किया जाता है।[8]


वस्तु पास्कल

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

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

कार्यान्वयन

अर्ली पास्कल अनुभाषक्स

पहला पास्कल अनुभाषक ज्यूरिख में सीडीसी 6000 श्रृंखला मेनफ़्रेम कंप्यूटर परिवार के लिए डिजाइन किया गया था। निक्लॉस विर्थ की रिपोर्ट है कि 1969 में फोरट्रान 66 में इसे प्रायुक्त करने का पहला प्रयास जटिल डेटा संरचनाओं को व्यक्त करने में फोरट्रान 66 की अपर्याप्तता के कारण असफल रहा था। दूसरा प्रयास सी-जैसी भाषा (मैक्स एंगेली द्वारा स्कैलप) में प्रायुक्त किया गया था और फिर बूट-स्ट्रैपिंग के लिए हाथ से (आर. शिल्ड द्वारा) पास्कल में अनुवादित किया गया था।[10] यह 1970 के मध्य तक चालू था। तब से कई पास्कल संकलनकर्ता समान रूप से सेल्फ-होस्टिंग (अनुभाषक) रहे हैं, अर्थात् अनुभाषक स्वयं पास्कल में लिखा जाता है, और अनुभाषक सामान्यतः स्वयं को फिर से कंपाइल करने में सक्षम होता है जब नई सुविधाओं को भाषा में जोड़ा जाता है या जब कंपाइलर को नए वातावरण में पोर्ट किया जाता है। जीएनयू पास्कल पास्कल कंपाइलर सी में लिखा जा रहा एक उल्लेखनीय अपवाद है।

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

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

उत्तरी अमेरिका में लिखा गया पहला पास्कल कंपाइलर पीडीपी-11 के लिए डोनाल्ड बी. गिल्लीज के अनुसार इलिनोइस विश्वविद्यालय में बनाया गया था और देशी यंत्र कोड उत्पन्न किया गया था।

पास्कल-पी प्रणाली

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

पास्कल-पी4 अनुभाषक-इंटरप्रेटर को अभी भी मूल पास्कल के साथ संगत प्रणाली पर चलाया और संकलित किया जा सकता है। चूँकि, यह केवल पास्कल भाषा के सबसेट को स्वीकार करता है।

ज़्यूरिख समूह के बाहर बनाया गया पास्कल-पी5, पूर्ण पास्कल भाषा को स्वीकार करता है और इसमें आईएसओ 7185 अनुकूलता सम्मिलित है।

यूसीएसडी पास्कल पास्कल-पी2 से अलग हो गया, जहां केनेथ बाउल्स ने दुभाषिया (कंप्यूटिंग) यूसीएसडी पी-प्रणाली बनाने के लिए इसका उपयोग किया। यह मूल आईबीएम पर्सनल कंप्यूटर के लॉन्च के समय उपलब्ध तीन ऑपरेटिंग प्रणालीों में से था।[11] यूसीएसडी पास्कल ने बाइट वैल्यू के आधार पर इंटरमीडिएट कोड का उपयोग किया, और इस प्रकार सबसे प्रारंभिक बाईटकोड अनुभाषक्स में से था। एप्पल पास्कल को 1979 में एप्पल 2 और एप्पल 3 कंप्यूटर प्रणाली के लिए जारी किया गया था। यह यूसीएसडी पास्कल का कार्यान्वयन, या अधिक सीमा तक आधारित था। पास्कल-पी1 से पास्कल-पी4 नहीं था, किन्तु सीडीसी 6600 60-बिट शब्द लंबाई पर आधारित था।

पास्कल-पी5 अनुभाषक पर आधारित अनुभाषक, जिसने नेटिव बाइनरी ओएस/360 ऑब्जेक्ट फाइल फॉर्मेट बनाया, आईबीएम प्रणाली/370 मेनफ्रेम कंप्यूटर के लिए ऑस्ट्रेलियाई परमाणु ऊर्जा आयोग द्वारा जारी किया गया; आयोग के नाम के संक्षिप्त नाम के बाद इसका नाम एएईसी पास्कल 8000 अनुभाषक रखा गया।[12]


ऑब्जेक्ट पास्कल और टर्बो पास्कल

एप्पल कंप्यूटर ने 1982 में लिसा वर्कशॉप के लिए अपना लिसा पास्कल बनाया, और 1985 में एप्पल मैकिटोश और मैकिटोश प्रोग्रामर वर्कशॉप में अनुभाषक को पोर्ट किया। 1985 में लैरी टेस्लर ने निकलॉस विर्थ के परामर्श से ऑब्जेक्ट पास्कल को परिभाषित किया और इन एक्सटेंशन को दोनों में सम्मिलित किया गया। लिसा पास्कल और मैक पास्कल अनुभाषक।

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

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

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

टर्बो पास्कल और यूनिट या मॉड्यूल संरचनाओं के साथ अन्य डेरिवेटिव मॉड्यूलर प्रोग्रामिंग भाषा हैं। चूंकि, यह स्थिर मॉड्यूल अवधारणा या विशिष्ट प्रतीकों के योग्य आयात और निर्यात प्रदान नहीं करता है।

अन्य प्रकार

सुपर पास्कल वैरिएंट है जो गैर-संख्यात्मक लेबल, रिटर्न कथन और अभिव्यक्तियों को प्रकारों के नाम के रूप में जोड़ता है।

टीएमटी पास्कल 32-बिट डॉस संरक्षित मोड, ओएस/2 और विन32 ऑपरेटिंग प्रणाली के लिए पहला बोरलैंड-संगत अनुभाषक था। टीएमटी पास्कल भाषा पहली ऐसी भाषा थी जिसने फंक्शन और ऑपरेटर ओवरलोडिंग की अनुमति दी थी।

विस्कॉन्सिन-मैडिसन, ज़्यूरिख, कार्लज़ूए और वुपर्टल के विश्वविद्यालयों ने पास्कल-एससी[15][16] और Pascal-XSC[17][18][19] और पास्कल-एक्सएससी (वैज्ञानिक संगणना के लिए विस्तार) संकलक विकसित किए, जिनका उद्देश्य संख्यात्मक संगणनाओं की प्रोग्रामिंग करना था। पास्कल-एससी के लिए विकास आईएसओ 7185 पास्कल स्तर 0 का समर्थन करते हुए 1978 में प्रारंभ हुआ, किन्तु बाद के स्तर पर स्तर 2 समर्थन जोड़ा गया हैं।[20] पास्कल-एससी ने मूल रूप से जेड80 प्रोसेसर को लक्षित किया था, लेकिन बाद में इसे डॉस (x86) और 68000 के लिए फिर से लिखा गया। पास्कल-एक्सएससी को कई बार यूनिक्स (लिनक्स, सनओएस, एचपी-यूएक्स, एआईक्स) और माइक्रोसॉफ्ट/में पोर्ट किया गया है। IBM (DOS with EMX (प्रोग्रामिंग वातावरण), OS/2, Windows) ऑपरेटिंग सिस्टम। यह इंटरमीडिएट सी स्रोत कोड उत्पन्न करके संचालित होता है जिसे बाद में मूल निष्पादन योग्य में संकलित किया जाता है। पास्कल-एससी भाषा के कुछ एक्सटेंशन जीएनयू पास्कल द्वारा अपनाए गए हैं।

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

आईपी ​​पास्कल माइक्रोपोलिस (कंपनी) डॉस का उपयोग करते हुए पास्कल प्रोग्रामिंग भाषा का कार्यान्वयन था, लेकिन Z80 पर चल रहे सीपी/एम-80 में तेजी से स्थानांतरित किया गया था। 1994 में इसे 80386 मशीन प्रकारों में स्थानांतरित कर दिया गया था, और आज यह विंडोज़/एक्सपी और लिनक्स कार्यान्वयन के रूप में मौजूद है। 2008 में, सिस्टम को एक नए स्तर पर लाया गया और परिणामी भाषा को पास्कलिन (पास्कल के कैलकुलेटर के बाद) कहा गया। इसमें ऑब्जेक्ट्स, नेमस्पेस कंट्रोल, गतिशील सरणी और कई अन्य एक्सटेंशन शामिल हैं, और आम तौर पर सी शार्प (प्रोग्रामिंग लैंग्वेज) | सी # के समान कार्यक्षमता और टाइप सुरक्षा की सुविधा है। यह एकमात्र ऐसा कार्यान्वयन है जो मूल पास्कल कार्यान्वयन के साथ भी संगत है, जिसे आईएसओ 7185 के रूप में मानकीकृत किया गया है।







भाषा निर्माण

पास्कल, अपने मूल रूप में, एक विशुद्ध रूप से प्रक्रियात्मक भाषा है और इसमें ALGOL जैसी नियंत्रण संरचनाओं की पारंपरिक सरणी शामिल है जैसे कि आरक्षित शब्द if, then, else, while, for, और case, एक बयान या एक पर लेकर begin-end बयान ब्लॉक। पास्कल में डेटा स्ट्रक्चरिंग कंस्ट्रक्शन भी हैं जो मूल ALGOL 60 टाइप सिस्टम में शामिल नहीं हैं, जैसे रिकॉर्ड (कंप्यूटर साइंस), वेरिएंट, पॉइंटर (कंप्यूटर प्रोग्रामिंग), प्रगणित प्रकार और सेट (कंप्यूटर साइंस) और प्रोसीजर पॉइंटर्स। इस तरह के निर्माण सिमुला 67, ALGOL 68, निकलॉस विर्थ के अपने ALGOL W और C. A. R. होरे के सुझावों से आंशिक रूप से विरासत में मिले या प्रेरित थे।

पास्कल प्रोग्राम के साथ शुरू होते हैं program कीवर्ड (कंप्यूटर प्रोग्रामिंग) मापदंडों के रूप में बाहरी फाइल डिस्क्रिप्टर की सूची के साथ [23] (टर्बो पास्कल आदि में आवश्यक नहीं); इसके बाद मुख्य खंड (प्रोग्रामिंग) begin और end खोजशब्द को ब्रैकेट में रखा जाता है। अर्धविराम अलग वक्तव्य (प्रोग्रामिंग), और पूर्ण विराम (अर्थात्, अवधि) पूरे प्रोग्राम (या इकाई) को समाप्त करता है। पास्कल स्रोत में पत्र का स्थिति को अनदेखा किया जाता है।

यहाँ एक बहुत ही सरल "हैलो, वर्ल्ड!" के लिए उपयोग किए जाने वाले स्रोत कोड का एक उदाहरण है। प्रोग्राम:

program HelloWorld(output);
begin
    Write('Hello, World!')
    {No ";" is required after the last statement of a block -
        adding one adds a "null statement" to the program, which is ignored by the compiler.}
end.







डेटा प्रकार

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

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

मूल प्रकार (बूलियन को छोड़कर) के लिए अनुमत मानों की श्रेणी कार्यान्वयन परिभाषित है। कुछ डेटा रूपांतरणों के लिए कार्य प्रदान किए जाते हैं। के रूपांतरण के लिए real को integer, निम्नलिखित कार्य उपलब्ध हैं: round (जो बैंकर की राउंडिंग का उपयोग करके पूर्णांक को गोल करता है) और trunc (शून्य की ओर गोल)।

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

type
    byte        = 0..255;
    signed_byte = -128..127;
    string      = packed array[1..255] of char;

बाइट और स्ट्रिंग जैसे अधिकांश उपयोग किए जाने वाले प्रकार पहले से ही कई कार्यान्वयनों में परिभाषित किए गए हैं।

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

packed कीवर्ड कंपाइलर को प्रत्येक तत्व के लिए एक शब्द का उपयोग करने के अतिरिक्त संरचित डेटा प्रकारों के लिए भंडारण की सबसे कुशल विधि का उपयोग करने के लिए सरणियों और रिकॉर्ड का उपयोग करने के लिए कहता है। पैकिंग उन यंत्रों तक पहुँच को धीमा कर सकती है जो किसी शब्द के भागों तक आसान पहुँच प्रदान नहीं करती हैं।

उपश्रेणियाँ प्रकार

किसी भी क्रमिक डेटा प्रकार (वास्तविक को छोड़कर कोई भी सरल प्रकार) की उपश्रेणियाँ भी बनाई जा सकती हैं:

var
    x : 1..10;
    y : 'a'..'z';

सेट प्रकार

अपने समय की अन्य प्रोग्रामिंग भाषाओं के विपरीत, पास्कल सेट प्रकार का समर्थन करता है:[24]

var
    Set1 : set of 1..10;
    Set2 : set of 'a'..'z';

सेट आधुनिक गणित के लिए मौलिक अवधारणा है, और उनका उपयोग कई एल्गोरिदम में किया जा सकता है। ऐसी सुविधा उपयोगी है और किसी ऐसी भाषा में समतुल्य निर्माण से तेज हो सकती है जो सेट का समर्थन नहीं करती है। उदाहरण के लिए, कई पास्कल अनुभाषक्स के लिए:

if i in [5..10] then ...

की तुलना में तेजी से निष्पादित करता है:

if (i > 4) and (i < 11) then ...

प्रदर्शन और पठनीयता दोनों के संदर्भ में गैर-सन्निहित मूल्यों के सेट विशेष रूप से उपयोगी हो सकते हैं:

if i in [0..3, 7, 9, 12..15] then ...

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

संयोजन प्रकार

Page 'यूनियन प्रकार' not found

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

इस उदाहरण के प्रयोजनों के लिए, निम्नलिखित सभी पूर्णांक प्रकार हैं: एक बाइट 8-बिट्स है, एक शब्द 16-बिट्स है, और एक पूर्णांक 32-बिट्स है।

निम्न उदाहरण गैर-मानक निरपेक्ष रूप दिखाता है:

VAR
    A: Integer;
    B: Array[1..4] of Byte absolute A;
    C: Integer absolute 0;

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

TYPE
     Shape = (Circle, Square, Triangle);
     Dimensions = record
        case Figure: Shape of 
           Circle: (Diameter: real);
           Square: (Width: real);
           Triangle: (Side: real; Angle1, Angle2: 0..360)
        end;

प्रकार की घोषणा

प्रकार की घोषणाओं का उपयोग करके प्रकारों को अन्य प्रकारों से परिभाषित किया जा सकता है:

type
    x = integer;
    y = x;
...

इसके अतिरिक्त, जटिल प्रकारों का निर्माण सरल प्रकारों से किया जा सकता है:

type
    a = array[1..10] of integer;
    b = record
        x : integer;
        y : char  {extra semicolon not strictly required}
    end;
    c = file of a;

फ़ाइल प्रकार

जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है, पास्कल कम्प्यूटर फाइल घटकों का क्रम है। हर फाइल में बफर वेरिएबल होता है जिसे f^ द्वारा दर्शाया जाता है। प्रक्रियाएं (पढ़ने के लिए) प्राप्त करती हैं और (लिखने के लिए) बफर चर को अगले तत्व में ले जाती हैं। पढ़ें इस प्रकार प्रस्तुत किया जाता है कि पढ़ें (एफ, एक्स) एक्स के समान है: = f ^; get(f); लिखना इस प्रकार प्रस्तुत किया गया है कि लिखना (f, x) f ^: = x के समान है; पुट (f); प्ररूप text चार की फ़ाइल के रूप में पूर्वनिर्धारित है। चूँकि बफ़र चर का उपयोग अगले वर्ण के निरीक्षण के लिए किया जा सकता है (पूर्णांक पढ़ने से पहले अंक की जाँच करें), इससे प्रारंभिक कार्यान्वयन में इंटरैक्टिव प्रोग्रामों के साथ गंभीर समस्याएं होती हैं, किन्तु बाद में आलसी I/O अवधारणा के साथ समाधान किया गया था।

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

सूचक प्रकार

पास्कल सूचक (कंप्यूटर प्रोग्रामिंग) के उपयोग का समर्थन करता है:

type
    pNode = ^Node;
    Node  = record
        a : integer;
        b : char;
        c : pNode  
    end;
var
    NodePtr : pNode;
    IntPtr  : ^integer;

यहाँ चर नोडपीटीआर डेटा प्रकार नोड, रिकॉर्ड के लिए सूचक है। घोषित होने से पहले पॉइंटर्स का उपयोग किया जा सकता है। यह आगे की घोषणा है, इस नियम का अपवाद है कि चीजों को उपयोग करने से पहले घोषित किया जाना चाहिए। नया रिकॉर्ड बनाने के लिए और रिकॉर्ड में फ़ील्ड a और b को मान 10 और वर्ण A असाइन करने के लिए, और पॉइंटर c को नल पॉइंटर (पास्कल में निल) पर हस्ताक्षर करने के लिए, कथन होंगे:

New(NodePtr);
...
NodePtr^.a := 10;
NodePtr^.b := 'A';
NodePtr^.c := NIL;
...

यह निम्न के with कथन का उपयोग करके भी किया जा सकता है:

New(NodePtr);
...
with NodePtr^ do
begin
    a := 10;
    b := 'A';
    c := NIL
end;
...

with कथन के दायरे के अंदर, a और b रिकॉर्ड पॉइंटर नोडपीटीआर के सबफ़ील्ड को संदर्भित करते हैं न कि रिकॉर्ड नोड या पॉइंटर प्रकार पीनोड को संदर्भित करते हैं।

लिंक्ड सूचियाँ, स्टैक (सार डेटा प्रकार) और कतार (सार डेटा प्रकार) रिकॉर्ड में सूचक प्रकार फ़ील्ड (c) को सम्मिलित करके बनाया जा सकता है।

पॉइंटर्स की विशेषता वाली कई भाषाओं के विपरीत, पास्कल केवल पॉइंटर्स को गतिशील रूप से बनाए गए वेरिएबल्स को संदर्भित करने की अनुमति देता है जो अज्ञात हैं, और उन्हें मानक स्थिर या स्थानीय चरों को संदर्भित करने की अनुमति नहीं देता है। पॉइंटर्स के पास संबंधित प्रकार भी होना चाहिए, और प्रकार के लिए सूचक किसी अन्य प्रकार के सूचक के साथ संगत नहीं है (उदाहरण के लिए सूचक सूचक के साथ पूर्णांक के साथ संगत नहीं है)। यह अन्य सूचक कार्यान्वयनों के साथ अंतर्निहित प्रकार के सुरक्षा मुद्दों को समाप्त करने में सहायता करता है, विशेष रूप से जो PL/I या C (प्रोग्रामिंग भाषा) के लिए उपयोग किए जाते हैं। यह लटकने वाले संकेतक के कारण होने वाले कुछ जोखिमों को भी हटा देता है, किन्तु डिस्पोजल फ़ंक्शन का उपयोग करके संदर्भित स्थान को गतिशील रूप से हटाने की क्षमता (जिसका सी (प्रोग्रामिंग भाषा) में पाए जाने वाले मुफ्त लाइब्रेरी फ़ंक्शन के समान प्रभाव होता है) का अर्थ है कि पॉइंटर्स के लटकने का जोखिम है समाप्त नहीं किया गया[25] जैसा कि जावा और सी # जैसी भाषाओं में है, जो कचरा संग्रह (कंप्यूटर विज्ञान) प्रदान करते हैं (किन्तु जो मेमोरी लीक की संबंधित समस्या को समाप्त नहीं करते हैं)।

इनमें से कुछ प्रतिबंध नई बोलियों में हटाए जा सकते हैं।

नियंत्रण संरचना

पास्कल एक संरचित प्रोग्रामिंग भाषा है जिसका अर्थ है कि नियंत्रण के प्रवाह को मानक कथनों में सामान्यतः गोटो (कमांड) के बिना संरचित किया जाता है।

while a <> b do  WriteLn('Waiting');

if a > b then WriteLn('Condition met')   {no semicolon allowed before else}
    else WriteLn('Condition not met');

for i := 1 to 10 do  {no semicolon here as it would detach the next statement}
    WriteLn('Iteration: ', i);

repeat
    a := a + 1
until a = 10;

case i of
    0 : Write('zero');
    1 : Write('one');
    2 : Write('two');
    3,4,5,6,7,8,9,10: Write('?')
end;

प्रक्रियाएं और कार्य

पास्कल प्रोग्राम को प्रक्रियाओं और कार्यों में स्ट्रक्चर करता है। सामान्यतः, इसके साइड इफेक्ट के लिए प्रक्रिया का उपयोग किया जाता है, चूँकि इसके रिटर्न वैल्यू के लिए फ़ंक्शन का उपयोग किया जाता है।

program Printing;

var i : integer;

procedure PrintAnInteger(j : integer);
begin
    ...
end;

function triple(const x: integer): integer;
begin
	triple := x * 3
end;

begin { main program }
    ...
    PrintAnInteger(i);
    PrintAnInteger(triple(i))
end.

प्रक्रियाओं और कार्यों को किसी भी गहराई तक नेस्ट किया जा सकता है, और 'प्रोग्राम' का निर्माण तार्किक बाहरीतम खंड है।

डिफ़ॉल्ट रूप से, पैरामीटर मान द्वारा पारित किए जाते हैं। यदि 'var' पैरामीटर के नाम से पहले है, तो इसे संदर्भ द्वारा पारित किया जाता है।

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

कथन विभाजक के रूप में अर्धविराम

पास्कल ने ALGOL भाषा से कई भाषा सिंटैक्स सुविधाओं को अपनाया, जिसमें अर्धविराम का उपयोग एक कथन विभाजक के रूप में किया गया। यह अन्य भाषाओं, जैसे कि PL/I और C, के विपरीत है, जो अर्धविराम को एक कथन टर्मिनेटर के रूप में उपयोग करते हैं। किसी रिकॉर्ड प्रकार की घोषणा के end कीवर्ड, किसी खंड, या किसी केस कथन से पहले until रिपीट कथन के कीवर्ड तक और if कथन के else कीवर्ड से पहले किसी अर्धविराम की आवश्यकता नहीं होती है।

पास्कल के प्रारंभिक संस्करणों में एक अतिरिक्त अर्धविराम की उपस्थिति की अनुमति नहीं थी। चूँकि, 1973 की संशोधित रिपोर्ट में ALGOL जैसे खाली बयानों को जोड़ना और बाद में आईएसओ 7185:1983 में भाषा में परिवर्तन अब इनमें से अधिकांश स्थितियों में वैकल्पिक अर्धविरामों की अनुमति देता है। if कथन में else कीवर्ड से ठीक पहले एक अर्धविराम की अनुमति अभी भी नहीं है क्योंकि else एक कथन अनुक्रम का पालन नहीं करता है। स्थिर ifs के स्थितियों में लटकने वाली और समस्या से बचने के लिए एक अर्धविराम का उपयोग नहीं किया जा सकता है (जहां आंतरिक if के पास और नहीं है, किन्तु बाहरी यदि है) तो नेस्टेड if को अर्धविराम से समाप्त करके इसके अतिरिक्त दोनों if क्लॉज को समाप्त कर देता है। इसके अतिरिक्त एक स्पष्ट begin...end खंड का उपयोग किया जाना चाहिए।[26]


संसाधन

संकलक और दुभाषिया

सामान्य उपयोग के लिए कई पास्कल संकलक और दुभाषिए उपलब्ध हैं:

  • डेल्फी (सॉफ्टवेयर) एम्बरकाडेरो (पूर्व में बोरलैंड/कोडगियर) का प्रमुख त्वरित अनुप्रयोग विकास (आरएडी) उत्पाद है। यहमाइक्रोसॉफ्ट विंडोज, मैकओएस, आईओएस और एंड्रॉयड (ऑपरेटिंग प्रणाली) के लिए एप्लिकेशन बनाने के लिए पास्कल से निकली ऑब्जेक्ट पास्कल भाषा (बोरलैंड द्वारा 'डेल्फी' कहा जाता है) का उपयोग करता है। डी8 से डी2005, डी2006, और डी2007 तक उपस्थित डॉट नेट समर्थन को समाप्त कर दिया गया है, और नई भाषा (प्रिज्म, जो ऑक्सीजन की रीब्रांडेड है, नीचे देखें) द्वारा प्रतिस्थापित किया गया है जो पूरी प्रकार से पिछड़े संगत नहीं है। हाल के वर्षों में यूनिकोड समर्थन और सामान्य प्रोग्रामिंग (D2009, D2010, डेल्फी XE) को जोड़ा गया हैं।
  • फ्री पास्कल क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर है। क्रॉस-प्लेटफॉर्म अनुभाषक ऑब्जेक्ट पास्कल में लिखा गया है (और सेल्फ-होस्टिंग (अनुभाषक) है। सेल्फ-होस्टिंग)। इसका उद्देश्य सुविधाजनक और शक्तिशाली संकलक प्रदान करना है, जो पुराने अनुप्रयोगों को संकलित करने और नए विकसित करने का साधन बनने में सक्षम है। यह जीएनयू जनरल पब्लिक लाइसेंस (जीएनयू जीपीएल) के अनुसार वितरित किया जाता है, चूँकि पैकेज और रनटाइम पुस्तकालय (कम्प्यूटिंग) संशोधित जीएनयू लेसर जनरल पब्लिक लाइसेंस (जीएनयू एलजीपीएल) के अनुसार आते हैं। टर्बो पास्कल, डेल्फी और मैक पास्कल के लिए अनुकूलता मोड के अतिरिक्त, इसके पास ऑपरेटर ओवरलोडिंग जैसी विस्तारित सुविधाओं के समर्थन के साथ अपने स्वयं के प्रक्रियात्मक और वस्तु अभिमुखित सिंटैक्स मोड हैं। यह कई प्लेटफॉर्म और ऑपरेटिंग प्रणाली को सपोर्ट करता है। वर्तमान संस्करणों में आईएसओ मोड भी है।
  • टर्बो51 माइक्रोकंट्रोलर्स के इंटेल 8051 परिवार के लिए टर्बो पास्कल 7 सिंटैक्स के साथ मुफ़्त पास्कल अनुभाषक है।
  • ऑक्सीजन (प्रोग्रामिंग भाषा) (पूर्व नाम क्रोम) डॉटनेट रूपरेखा और मोनो (सॉफ्टवेयर) प्लेटफॉर्म के लिए ऑब्जेक्ट पास्कल अनुभाषक है। यह बनाया गया था और रेमऑब्जेक्ट्स सॉफ़्टवेयर द्वारा बेचा जाता है, और कुछ समय के लिए एम्बरकाडेरो द्वारा डेल्फी प्रिज्म के बैकएंड अनुभाषक के रूप में बेचा जाता है।
  • काइलिक्स (सॉफ्टवेयर) डेल्फी (सॉफ्टवेयर) का वंशज था, जिसमें लिनक्स ऑपरेटिंग प्रणाली और उत्तम ऑब्जेक्ट लाइब्रेरी का समर्थन था। यह अब समर्थित नहीं है। अनुभाषक और आईडीई अब गैर-व्यावसायिक उपयोग के लिए उपलब्ध हैं।
  • जीएनयू पास्कल अनुभाषक (जीपीसी) जीएनयू संकलक संग्रह (जीसीसी) का पास्कल अनुभाषक है। अनुभाषक सी में लिखा गया है, रनटाइम लाइब्रेरी अधिकांशतः पास्कल में है। जीएनयू जनरल पब्लिक लाइसेंस के अनुसार वितरित, यह कई प्लेटफॉर्म और ऑपरेटिंग प्रणाली पर चलता है। यह एएनएसआई/आईएसओ मानक भाषाओं का समर्थन करता है और इसमें आंशिक टर्बो पास्कल बोली समर्थन है। अधिक उल्लेखनीय चूक में से पूरी प्रकार से टर्बो पास्कल-संगत (लघु) स्ट्रिंग प्रकार की अनुपस्थिति है। बोर्लैंड डेल्फी और अन्य भाषा रूपों के लिए समर्थन अधिक सीमित है। चूँकि, मैक-पास्कल के लिए कुछ समर्थन है।
  • वर्चुअल पास्कल विटाली मिरानोव द्वारा 1995 में बोरलैंड पास्कल सिंटैक्स के साथ संगत देशी ओएस/2 संकलक के रूप में बनाया गया था। फिर, यह व्यावसायिक रूप से एफप्रिंट द्वारा विकसित किया गया था, जिसमें विन32 समर्थन जोड़ा गया था, और 2000 में यह फ्रीवेयर बन गया। आज यह विन32, ओएस/2, और Linux के लिए संकलन कर सकता है, और अधिकांशतः बोरलैंड पास्कल और डेल्फी के साथ संगत है। विकास 4 अप्रैल, 2005 को रद्द कर दिया गया था।
  • पी4 संकलक, बाद के कई पास्कल-कार्यान्वित-में-पास्कल संकलक के लिए आधार। यह पूर्ण पास्कल का सबसेट प्रायुक्त करता है।
  • पी5 संकलक पी4 का आईएसओ 7185 (पूर्ण पास्कल) रूपांतरण है।
  • स्मार्ट मोबाइल स्टूडियो एचटीएमएल5/जावास्क्रिप्ट अनुभाषक का पास्कल है
  • टर्बो पास्कल 1980 और 1990 के दशक के समय पीसी के लिए प्रमुख पास्कल अनुभाषक था, जो अपने शक्तिशाली एक्सटेंशन और अधिक कम संकलन समय दोनों के कारण लोकप्रिय था। टर्बो पास्कल कॉम्पैक्ट रूप से लिखा गया था और डिस्क तक पहुंच के बिना मेमोरी से संकलित, चला और डिबग कर सकता था। धीमी फ़्लॉपी डिस्क ड्राइव उस समय प्रोग्रामरों के लिए सामान्य थी, जो टर्बो पास्कल की गति के लाभ को और बढ़ा देती थी। वर्तमान में, टर्बो पास्कल (5.5 तक) के पुराने संस्करण बोरलैंड की साइट से मुफ्त डाउनलोड के लिए उपलब्ध हैं।
  • आईपी पास्कल भाषा पास्कलिन (पास्कल के कैलकुलेटर के नाम पर) को प्रायुक्त करता है, जो अत्यधिक विस्तारित पास्कल कॉम्पिटिटर हैआईएसओ 7185 के अनुसार मूल पास्कल के साथ योग्य। इसमें नेमस्पेस नियंत्रण के साथ मॉड्यूल सम्मिलित हैं, जिसमें सेमाफोर, ऑब्जेक्ट्स, रनटाइम, ओवरलोड, ओवरराइड्स और कई अन्य एक्सटेंशन पर आवंटित किसी भी आयाम के गतिशील सरणी के साथ समांतर टास्किंग मॉड्यूल सम्मिलित हैं। आईपी ​​पास्कल में अंतर्निहित पोर्टेबिलिटी लाइब्रेरी है जो पास्कल भाषा के अनुरूप कस्टम है। उदाहरण के लिए, 1970 के मूल पास्कल से मानक टेक्स्ट आउटपुट एप्लिकेशन को विंडो में काम करने के लिए फिर से संकलित किया जा सकता है और इसमें ग्राफिकल निर्माण भी जोड़ा जा सकता है।
  • पास्कल-एक्सटी को सीमेंस ने अपने मेनफ्रेम कंप्यूटर ऑपरेटिंग प्रणाली बीएस2000 और सिनिक्स के लिए बनाया था।
  • पॉकेटस्टूडियो पाम ओएस और एमसी68एक्सएक्सएक्स प्रोसेसर के लिए पास्कल सबसेट अनुभाषक और रेड टूल है, जिसके कुछ एक्सटेंशन पाम ओएस एपीआई के साथ इंटरफेसिंग में सहायता करते हैं। यह दृश्य रूप डिजाइनर, वस्तु निरीक्षक और स्रोत कोड संपादक के साथ डेल्फी और लाजर जैसा दिखता है।
  • मिडलेट पास्कल - पास्कल अनुभाषक और आईडीई जो विशेष रूप से मोबाइल के लिए सॉफ्टवेयर बनाने के लिए डिज़ाइन किए गए छोटे और तेज़ जावा बाइटकोड उत्पन्न करता है।
  • वेक्टर पास्कल सिमड इंस्ट्रक्शन सेट जैसे एमएमएक्स और एएमडी 3d Now के लिए भाषा है, जो सभी इंटेल और एएमडी प्रोसेसर और Sony के प्लेस्टेशन 2 इमोशन इंजन को सपोर्ट करती है।
  • मॉर्फिक पास्कल पूरी प्रकार से ऑब्जेक्ट पास्कल (सर्वर और ब्राउज़र दोनों तरफ) में लिखे गए वेब एप्लिकेशन के विकास की अनुमति देता है।
  • डब्ल्यूडीसिबीएल - विन32 और ओएस/2 के लिए विज़ुअल डेवलपमेंट एनवायरनमेंट और पास्कल अनुभाषक।
  • पीपी अनुभाषक, पाम ओएस के लिए अनुभाषक जो सीधे हैंडहेल्ड कंप्यूटर पर चलता है।
  • सीडीसी 6000 पास्कल अनुभाषक पहले (सीडीसी 6000) पास्कल अनुभाषक का स्रोत कोड है।
  • पास्कल-एस[27]
  • अमिगापास्कल, अमिगा कंप्यूटर के लिए मुफ़्त पास्कल अनुभाषक है।
  • ओपनवीएमएस के लिए वीएसआई पास्कल (ओपनवीएमएस के लिए पूर्व में एचपी पास्कल, कॉम्पैक पास्कल, डेक पास्कल, वीएएक्स पास्कल और मूल रूप से वीएएक्स-11 पास्कल[28]) पास्कल अनुभाषक है जो ओपनवीएमएस प्रणाली पर चलता है।[29]यह Tru64 के अनुसार भी समर्थित था।[30][31] ओपनवीएमएस के लिए वीएसआई पास्कल आईएसओ/आईईसी 7185:1990 पास्कल के साथ-साथ कुछ आईएसओ/आईईसी 10206:1990 विस्तारित पास्कल के साथ संगत है, और इसके अपने एक्सटेंशन भी सम्मिलित हैं।[29] अनुभाषक अनुभाषक फ्रंट एंड परम आनंद में प्रायुक्त किया गया है।[32]
  • स्टोनी ब्रुक पास्कल+ डॉस और ओएस/2 के लिए 16-बिट (बाद में 32-बिट) ऑप्टिमाइज़िंग अनुभाषक था, जिसे टर्बो पास्कल के सीधे प्रतिस्थापन के रूप में विपणन किया गया था, किन्तु उत्पादन कोड जो कम से कम दो बार तेजी से निष्पादित हुआ।

आईडीई

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

पुस्तकालय

  • फ्री पास्कल अनुभाषक के साथ जीयूआई एप्लिकेशन बनाने के लिए डब्ल्यूओएल लाइब्रेरी।

मानक

आईएसओ/आईईसी 7185:1990 पास्कल

1983 में, भाषा को अंतर्राष्ट्रीय मानक आईईसी/आईएसओ 7185 में मानकीकृत किया गया था[33] और अमेरिकी ANSI/IEEE770X3.97-1983, और आईएसओ 7185:1983 सहित कई स्थानीय देश-विशिष्ट मानक। ये दो मानक केवल इसमें भिन्न थे कि आईएसओ मानक में अनुरूप सरणियों के लिए स्तर 1 विस्तार सम्मिलित था (सरणी जहां सरणी की सीमाएं रन टाइम तक ज्ञात नहीं हैं), जहां एएनएसआई ने इस विस्तार के लिए मूल (विर्थ संस्करण) की अनुमति नहीं दी थी। भाषा। 1989 में, मूल दस्तावेज़ में पाई गई विभिन्न त्रुटियों और अस्पष्टताओं को ठीक करने के लिए आईएसओ 7185 (आईएसओ 7185:1990) को संशोधित किया गया हैं।

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

सीडीसी 6000 संकलक की यंत्र विशिष्ट विशेषताओं से इसे अलग करने के लिए निकलॉस विर्थ ने स्वयं 1974 की भाषा को मानक के रूप में संदर्भित किया था। इस भाषा को पास्कल रिपोर्ट,[34] पास्कल उपयोगकर्ता पुस्तिका और रिपोर्ट का दूसरा भाग में प्रलेखित किया गया था।

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

भाषा के आईबीएम पीसी संस्करण यूसीएसडी पास्कल के आगमन के साथ भिन्न होने लगे, व्याख्यात्मक कार्यान्वयन जिसमें कई चूक और परिवर्तनों के साथ भाषा के कई विस्तार सम्मिलित थे। बोरलैंड की बोली सहित कई यूसीएसडी भाषा की विशेषताएं आज भी जीवित हैं।

आईएसओ/आईईसी 10206:1990 विस्तारित पास्कल

1990 में, आईएसओ/आईईसी 10206 के रूप में विस्तारित पास्कल मानक बनाया गया था,[35] जो विधि सामग्री <रेफरी नाम = आईएसओ/एएनएसआई समान> में समान है"भाषा मानक: पास्कल, विस्तारित पास्कल, फोर्टन". Archived from the original on 2014-07-14. Retrieved 16 September 2014.आईईईई/एएनएसआई 770X3.160-1989 के लिए </रेफरी> रेफरी>770X3.160-1989 - प्रोग्रामिंग भाषा विस्तारित पास्कल के लिए IEEE/ANSI मानक. 1990. doi:10.1109/IEEESTD.1990.101061. ISBN 978-0-7381-4247-0.</रेफरी> 2019 तक, Freeपास्कल Compiler में विस्तारित पास्कल के समर्थन की योजना है। रेफरी>"विस्तारित पास्कल - फ्री पास्कल विकी".</रेफरी>


विविधताएं

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

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

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

बोरलैंड-जैसे पास्कल अनुभाषक्स

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

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

इस श्रेणी में सॉफ्टवेयर उत्पाद (संकलक, और आईडीई/रैपिड एप्लीकेशन डेवलपमेंट (आरएडी)):

  • टर्बो पास्कल - टर्बो डॉट ईएक्सई वर्जन 7 तक, और विंडोज (टीपीडब्लू) के लिए टर्बो पास्कल और टर्बो पास्कल मैकिटोश।
  • कंप्यूटर की अटारी एसटी श्रृंखला के लिए शुद्ध पास्कल और हाईस्पीड पास्कल 2 पास्कल भाषा पर्यावरण।
  • टर्बो पास्कल - टर्बो पास्कल लाइन का कुशल संस्करण जो डॉस और विंडोज दोनों को लक्षित करता है।
  • ऑब्जेक्ट पास्कल - पास्कल भाषा का विस्तार जिसे पास्कल के आविष्कारक निकलॉस विर्थ के परामर्श से लैरी टेस्लर के नेतृत्व में टीम द्वारा एप्पल कंप्यूटर में विकसित किया गया था; इसकी विशेषताओं को बोरलैंड के टर्बो पास्कल एप्पल मैकिटोश और 1989 में डॉस के लिए टर्बो पास्कल 5.5 में जोड़ा गया था।
  • डेल्फी (सॉफ्टवेयर) - ऑब्जेक्ट पास्कल अनिवार्य रूप से इसकी अंतर्निहित भाषा है।
  • फ्री पास्कल अनुभाषक (एसपीसी) - फ्री पास्कल ने पास्कल प्रोग्रामर, बोरलैंड पास्कल और बाद में, डेल्फी की वास्तविक मानक बोली को अपनाया। फ्रीपास्कल भी दोनों आईएसओ मानकों का समर्थन करता है।
  • PASCALABC.NET - संकलक और आईडीई सहित नई पीढ़ी की पास्कल प्रोग्रामिंग भाषा।
  • काइलिक्स (सॉफ्टवेयर) अनुभाषक और आईडीई है जिसे पहले बोरलैंड द्वारा बेचा जाता था, किन्तु बाद में बंद कर दिया गया। यह डेल्फी (सॉफ्टवेयर) सॉफ्टवेयर विकास पर्यावरण और सी ++ बिल्डर का लिनक्स संस्करण है।
  • लाजर (आईडीई) - फ़ंक्शन में काइलिक्स के समान, फ्री पास्कल अनुभाषक का उपयोग करके आरएडी के लिए मुफ्त क्रॉस-प्लेटफ़ॉर्म विज़ुअल आईडीई है, जो अलग-अलग डिग्री के ऑब्जेक्ट पास्कल की बोलियों का समर्थन करता है।
  • वर्चुअल पास्कल - वीपी2/1 ओएस/2 और विंडोज 32 के लिए पूरी प्रकार से बोरलैंड पास्कल- और बोरलैंड डेल्फी-संगत 32-बिट पास्कल अनुभाषक है (रास्ते में लिनक्स संस्करण के साथ)।[36]
  • सिबिल ओपन सोर्स डेल्फी जैसा आईडीई और अनुभाषक है; कार्यान्वयन में सम्मिलित हैं:
    • डब्ल्यूडीसिबिल[37] माइक्रोसॉफ्ट विंडोज और ओएस/2 के लिए, स्पीडसॉफ्ट नाम की कंपनी द्वारा जारी किया गया व्यावसायिक बोरलैंड पास्कल संगत वातावरण जिसे बाद में सिबिल नाम के डेल्फी-जैसे रैपिड एप्लिकेशन डेवलपमेंट (रेड) वातावरण में विकसित किया गया और फिर जीपीएल के अनुसार ओपन सोर्स किया गया जब वह कंपनी बंद हो गई।
    • ओपन सिबिल, जो चालू परियोजना है, ओएस/2 और ईसीएस के लिए ओपन-सोर्स सॉफ़्टवेयर टूल है जो मूल रूप से स्पीडसॉफ्ट के डब्ल्यूडीएसआईबीएल सिबिल पोर्टेबल कंपोनेंट क्लासेस (एसपीसीसी) और सिबिल विज़ुअल डेवलपमेंट टूल (एसवीडीई) स्रोतों पर आधारित था, किन्तु अब इसका कोर आईबीएम प्रणाली ऑब्जेक्ट मॉडल (एसओएम), डब्ल्यूपीएस और ओपनडॉक है।[38]


संबंधित मानकों की सूची

  • मानकीकरण के लिए अंतर्राष्ट्रीय संगठन 8651-2:1988 सूचना प्रसंस्करण प्रणाली - कंप्यूटर ग्राफिक्स - ग्राफिकल कर्नेल प्रणाली (जीकेएस) भाषा बाइंडिंग - भाग 2: पास्कल

स्वीकृति

पास्कल ने कंप्यूटिंग समुदाय में महत्वपूर्ण और मानार्थ दोनों प्रकार की प्रतिक्रियाएं उत्पन्न किया था।

प्रारंभिक आलोचना

1980 के दशक और 1990 के दशक की प्रारंभ में बहुत लोकप्रिय होने के अतिरिक्त, पास्कल के कार्यान्वयन, जिसने विर्थ की भाषा की प्रारंभिक परिभाषा का बारीकी से पालन किया, की विस्तृत रूप से आलोचना की गई क्योंकि यह शिक्षण के बाहर उपयोग के लिए अनुपयुक्त था। ब्रायन कर्निघन, जिन्होंने सी (प्रोग्रामिंग भाषा) को लोकप्रिय बनाया, ने 1981 की प्रारंभ में अपने लेख व्हाई पास्कल इज़ नॉट माई फेवरेट प्रोग्रामिंग भाषा में पास्कल की अपनी सबसे उल्लेखनीय आलोचनाओं को रेखांकित किया।[39] कर्निघन द्वारा वर्णित सबसे गंभीर समस्या यह थी कि सरणी आकार और स्ट्रिंग लंबाई प्रकार का भाग थे, इसलिए ऐसा फ़ंक्शन लिखना संभव नहीं था जो चर-लंबाई सरणियों या यहां तक ​​कि स्ट्रिंग को पैरामीटर के रूप में स्वीकार करे। इसने लिखना असंभव बना दिया, उदाहरण के लिए, सॉर्टिंग लाइब्रेरी। कर्निघन ने बूलियन अभिव्यक्तियों के मूल्यांकन के अप्रत्याशित क्रम, खराब पुस्तकालय समर्थन और स्थैतिक चर की कमी की भी आलोचना की और कई छोटे मुद्दों को उठाया। साथ ही, उन्होंने कहा कि भाषा प्रतिबंधों और सीमाओं से बचने (जानबूझकर और जबरन अनदेखा) करने के लिए कोई सरल निर्माण प्रदान नहीं करती है। अन्य स्रोतों से अधिक सामान्य शिकायतें[25][40] नोट किया गया कि घोषणाओं का सीमा मूल भाषा परिभाषा में स्पष्ट रूप से परिभाषित नहीं किया गया था, जिसके कभी-कभी सूचक प्रकारों को परिभाषित करने के लिए आगे की घोषणाओं का उपयोग करते समय गंभीर परिणाम होते थे, या जब रिकॉर्ड घोषणाओं ने पुनरावर्ती डेटा प्रकार का नेतृत्व किया, या जब पहचानकर्ता हो सकता है या नहीं हो सकता है गणना सूची में उपयोग किया जाता है। और कठिनाई यह थी कि, ऐल्गॉल 60 की प्रकार, भाषा ने अपने मापदंडों के अपेक्षित प्रकार को पूर्वनिर्धारित करने के लिए मापदंडों के रूप में पारित प्रक्रियाओं या कार्यों की अनुमति नहीं दी।

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


यह भी देखें

संदर्भ

  1. "About Microsoft's "Delegates"". Archived from the original on 2012-06-27. We looked very carefully at Delphi Object Pascal and built a working prototype of bound method references in order to understand their interaction with the Java programming language and its APIs ... Our conclusion was that bound method references are unnecessary and detrimental to the language. This decision was made in consultation with Borland International, who had previous experience with bound method references in Delphi Object Pascal.
  2. TechMetrix Research (1999). "History of Java" (PDF). Java Application Servers Report. Archived from the original (PDF) on 2010-12-29. The project went ahead under the name "green" and the language was based on an old model of UCSD Pascal, which makes it possible to generate interpretive code
  3. "A Conversation with James Gosling – ACM Queue". Archived from the original on 16 July 2015. Retrieved 11 August 2015.
  4. Wirth, Niklaus (2000). "The Development of Procedural Programming Languages Personal Contributions and Perspectives". Modular Programming Languages. Lecture Notes in Computer Science. Vol. 1897. pp. 1–10. doi:10.1007/10722581_1. ISBN 978-3-540-67958-5.
  5. Hertzfeld, Andy. "Hungarian folklore.org Archived 2015-11-18 at the Wayback Machine: Macintosh Stories. Retrieved 2012-03-06.
  6. https://www.computerhistory.org/atchm/adobe-photoshop-source-code/ Archived 2014-05-07 at the Wayback Machine, Adobe Photoshop Source Code
  7. "RAD Studio Application Showcase". 2021-10-29.
  8. tiobe.com Archived 2012-03-15 at the Wayback Machine, Programming Community Index for January 2011.
  9. "Antique Software: Turbo Pascal v5.5".
  10. Computers and Computing. A Personal Perspective. Archived 2017-05-10 at the Wayback Machine by Niklaus Wirth
  11. cbi.umn.edu, "An Interview with John Brackett and Doug Ross"[permanent dead link], p15, Charles Babbage Institute, 2004
  12. Australian Atomic Energy Commission Research Establishment, Lucas Heights, Nuclear Science and Technology Branch Report, Divisional Research (PDF). International Atomic Energy Agency (IEAE) (Report). 1977. p. 22.
  13. Jon Udell, Crash of the Object-Oriented Pascals, BYTE, July, 1989.
  14. M. I. Trofimov, The End of Pascal?, BYTE, March, 1990, p. 36.
  15. Rall, L. B. (1987). "An introduction to the scientific computing language Pascal-SC". Computers. 14: 53–69. doi:10.1016/0898-1221(87)90181-7.
  16. PI (1986-08-29). "कैडमस अब कुलिश अंकगणित के साथ - कार्लज़ूए विश्वविद्यालय म्यूनिख को पास्कल कंपाइलर देता है" [Cadmus now comes with Kulisch arithmetic - University Karlsruhe delivers Pascal compiler to Munich]. Computerwoche (in Deutsch). Munich – Karlsruhe, Germany: IDG Business Media GmbH. Archived from the original on 2016-05-30. Retrieved 2016-05-30.
  17. "पास्कल-एक्सएससी: विस्तारित वैज्ञानिक कंप्यूटिंग के लिए पास्कल". Archived from the original on 2014-01-05.
  18. "XSC Software". Archived from the original on 1 November 2015. Retrieved 11 August 2015.
  19. "Universitaet Wuppertal: Wissenschaftliches Rechnen / Softwaretechnologie". Archived from the original on 6 November 2015. Retrieved 11 August 2015.
  20. Bamberger, Lothar; Davenport, James H.; Fischer, Hans-Christoph; Kok, Jan; Schumacher, Günter; Ullrich, Christian; Wallis, Peter J. L.; Winter, Dik T.; Wolff von Gudenberg, Jürgen (1990). Wallis, Peter J. L. (ed.). फ़्लोटिंग-पॉइंट प्रोग्रामिंग में सुधार (1st ed.). Bath, United Kingdom: John Wiley & Sons Ltd. ISBN 0-471-92437-7.
  21. माइकल गिएन, द एसओएल ऑपरेटिंग सिस्टम, यूसेनिक्स समर '83 सम्मेलन, टोरंटो, ओएन, (जुलाई 1983), पीपी. 75-78
  22. cs.berkeley.edu Archived 2015-02-07 at the Wayback Machine
  23. पास्कल आईएसओ 7185:1990 Archived 2012-06-17 at the Wayback Machine 6.10
  24. Mandell, Steven L. (1987). Pascal Programming Today. West Publishing Company. ISBN 978-0-314-33935-5.
  25. 25.0 25.1 J. Welsh, W. J. Sneeringer, and C. A. R. Hoare, "Ambiguities and Insecurities in Pascal", Software: Practice and Experience 7, pp. 685–696 (1977)
  26. Pascal, Nell Dale and Chip Weems, "Dangling Else", p. 160–161 Archived 2017-03-18 at the Wayback Machine
  27. "Pascal-S: A Subset and Its Implementation", N. Wirth in Pascal – The Language and Its Implementation, by D.W. Barron, Wiley 1979.
  28. "VAX-11 Pascal V1.0 User's Guide" (PDF).
  29. 29.0 29.1 "VSI Pascal for OpenVMS Software Product Description" (PDF). VSI. 2017. Retrieved 2022-02-07.
  30. "Interview with a Pascal Architect - Compaq Pascal". Archived from the original on 2021-10-19. Retrieved 2022-05-28.
  31. "Compaq Pascal Version 5.8 for Tru64 UNIX Software Product Description". Archived from the original on 2020-07-25. Retrieved 2022-05-28.
  32. "VSI's John Reagan Interview on GEM vs. LLVM for X86/64". eCube Systems. 2019-03-12. Archived from the original on 2020-08-12. Retrieved 2022-02-07.
  33. ISO/IEC 7185:1990 Pascal (PDF). Archived from the original (PDF) on 27 January 2016. Retrieved 16 September 2014.
  34. Wirth, Niklaus (July 1973). The Programming Language Pascal (Revised Report). ETH Zürich. doi:10.3929/ethz-a-000814158.
  35. Extended Pascal: ISO/IEC 10206:1990. Archived from the original on 2016-03-27. Retrieved 16 September 2014.
  36. "Virtual Pascal for OS/2". Archived from the original on 30 August 2011. Retrieved 3 April 2016.
  37. Wolfgang (October 15, 2020). "WDSibyl: Visual Development Environment". WDSibyl.org. Archived from the original on 2020-02-12. Retrieved 2020-04-20.
  38. "netlabs.org – Project: Open Sibyl". Archived from the original on 4 March 2016. Retrieved 3 April 2016.
  39. Brian W. Kernighan (1981). "Why Pascal is Not My Favorite Programming Language". Archived 2009-04-28 at the Wayback Machine
  40. O. Lecarme, P. Desjardins, "More Comments on the Programming Language Pascal", Acta Informatica 4, pp. 231–243 (1975).
  41. "Extended Pascal". Archived from the original on 2015-10-18.


अग्रिम पठन

  • Niklaus विर्थ: The Programming Language पास्कल. 35–63, Acta Informatica, Volume 1, 1971.
  • C. A. R. Hoare: "Notes on data structuring". In O.-J. Dahl, E. W. Dijkstra and C. A. R. Hoare, editors, Structured Programming, pages 83–174. Academic Press, 1972.
  • C. A. R. Hoare, Niklaus विर्थ: An Axiomatic Definition of the Programming Language पास्कल. 335–355, Acta Informatica, Volume 2, 1973.
  • Kathleen Jensen and Niklaus विर्थ: पास्कल – User Manual and Report. Springer-Verlag, 1974, 1985, 1991, ISBN 0-387-97649-3 and ISBN 3-540-97649-3.
  • Niklaus विर्थ: Algorithms + Data Structures = Programs. Prentice-Hall, 1975, ISBN 0-13-022418-9.
  • Niklaus विर्थ: An assessment of the programming language पास्कल. 23–30 ACM SIGPLAN Notices Volume 10, Issue 6, June 1975.
  • N. विर्थ, and A. I. Wasserman, ed: Programming Language Design. IEEE Computer Society Press, 1980
  • D. W. Barron (Ed.): पास्कल – The Language and its Implementation. John Wiley 1981, ISBN 0-471-27835-1
  • Peter Grogono: Programming in पास्कल, Revised Edition, Addison-Wesley, 1980
  • Richard S. Forsyth: पास्कल in Work and Play, Chapman and Hall, 1982
  • N. विर्थ, M. Broy, ed, and E. Denert, ed: पास्कल and its Successors in Software Pioneers: Contributions to Software Engineering. Springer-Verlag, 2002, ISBN 3-540-43081-4
  • N. विर्थ: Recollections about the Development of पास्कल. ACM SIGPLAN Notices, Volume 28, No 3, March 1993.