पास्कल के विकास में किन विशेषताओं का योगदान है?


17

मैं पास्कल भाषा का एक विस्तृत इतिहास संकलित कर रहा हूं, और कुछ विवरण हैं जो मुझे याद आ रहे हैं।

आज बहुत सारी सुविधाएँ हैं जो हम प्रदान करते हैं। पास्कल के विकास में किन विशेषताओं ने महत्वपूर्ण योगदान दिया, और वे महत्वपूर्ण क्यों थे?

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

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


@Jim आपका प्रश्न तिथियों की सूची के लिए पूछा गया था, लेकिन इनपुट के लिए यह नहीं पूछा कि कोई उन्हें महत्वपूर्ण क्यों मानता है। मैंने उस पहलू को पकड़ने के लिए आपके प्रश्न को फिर से लिखा है, और इसे फिर से खोल दिया है।

2
आप जानते हैं कि टर्बो पास्कल उत्पाद ने पास्कल दुनिया में क्रांति ला दी है? और आईबीएम पीसी दुनिया भी, वास्तव में? खासकर जब से यह तार तय किया।

4
UCSD पास्कल मत भूलना! जावा द्वारा सूर्य की आंख में टिमटिमाए जाने से बहुत पहले यह बायटेकॉड्स (पी-कोड) पेश किया गया था।
Macneil

1
+1 @Macneil UCSD पी-कोड और स्मालटाक वीएम वे चीजें हैं जो मैं हमेशा आधुनिक प्रबंधित कोड (जावा, .NET) के बारे में बात करते समय समझाता हूं। Stuff आधुनिक ’सामान (जैसे Apps, जो क्लाइंट-सर्वर का सिर्फ एक नया स्वाद है) का भार देखकर मज़ा आता है ।
जोरेन विर्ट प्लिमर्स

1
@ जरीन प्लिमर्स: मैं डीवीसीएस की इस बात से भी चकित हूं कि "नया" है। मैंने Sun पर SCCS / Teamware का उपयोग किया, Torvalds ने BitKeeper का उपयोग किया। जब मैंने सीवीएस देखा, मुझे पता था कि यह टूट गया था (जैसा कि टॉर्वाल्ड्स)। जब मैंने पहली बार एसवीएन के बारे में सुना, तो मैंने सोचा कि "ओह, उन्होंने आखिरकार इसे ठीक कर दिया।" लेकिन नहीं। सीवीएस द्वारा ओएसएस की दुनिया (और जोएल!) को इतना नुकसान पहुँचाया गया कि वे सब कुछ गलत कर रहे हैं, उन्हें विश्वास करना आवश्यक है कि यह एक नई बात है!
मैकनील

जवाबों:


10

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

यह, और जटिल ALGOL 68 युक्ति [1] का सरलीकरण, एक प्रारंभिक बिंदु हो सकता है।

[१] कुछ समय बाद ALGOL ६ report रिपोर्ट पढ़ने की कोशिश करें - यह निश्चित रूप से ६० के दशक का उत्पाद है! वेब पर एक साइट अपने कुछ अजीब शब्दजाल का उल्लेख करती है: 'बस टोकन', 'अदृश्य उत्पादन के पेड़', 'मौलिक दूत', 'अनाचारी संघ', 'धारणाएं', 'प्रोटॉनोटियन', 'मेटानोटियन', 'हाइपरनोटिशन', ' पैरानोटियंस ', आदि।


15

मैं कहूंगा कि पास्कल के इतिहास में दो सबसे महत्वपूर्ण ड्राइविंग फोर्स हैं:

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

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

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

11

आपको वास्तव में मूल पर वापस जाने की आवश्यकता है - निकलस विर्थ का कुछ इतिहास ढूंढें। पास्कल ने अपना जीवन एक शिक्षण भाषा के रूप में शुरू किया। "एल्गोरिदम + डेटा संरचनाएं = कार्यक्रम" एक अच्छा प्रारंभिक बिंदु है।

उस समय, पास्कल अल्गोल 68 और पीएल / 1 की तुलना में कहीं अधिक सरल था। यह संरचना और घोषणा, और मजबूत प्रकार की सुरक्षा को मजबूर करता है, फोरट्रान 4 के विपरीत (फोरट्रान 77 ने वहां चीजों को थोड़ा सुधार दिया लेकिन आप अभी भी बहुत तेजी से एन-ढीले खेल सकते हैं)। और COBOL की तुलना में यह छोटा, सरल और प्रोग्राम लिखने में आसान था। (600 की बजाय लगभग 6 लाइनों में नमस्ते दुनिया)।

जब इसकी उत्पत्ति हुई, तो पास्कल में चरित्र सरणियों जैसी चीजें थीं - यह स्ट्रिंग हैंडलिंग के लिए थी। वर्षों में हालात सुधरे।

यदि आप वास्तव में पास्कल इतिहास में तल्लीन करना चाहते हैं, तो आपको कुछ बिंदुओं पर ध्यान देना चाहिए:

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

1980 के दशक में पास्कल और सी के बीच एक विशाल स्लग-फेस्ट था, दोनों शिविरों में काफी मात्रा में विकास और गतिविधि हो रही थी।

परिणामस्वरूप, ब्लिस -32, अल्गोल और पीएल / 1 जैसी अजीब और अद्भुत चीजें बहुत अधिक गायब हो गई हैं - लेकिन इनमें से विचारों ने पास्कल में अपना रास्ता बना लिया।

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


IIRC के लिए विशेष हैंडलिंग की एक छोटी राशि थी packed array[1..n] of char;, उदाहरण के लिए पढ़ें (ln) और लिखें (ln)
Gerry

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

हो सकता है कि मॉड्यूल "अन्य" Wirth भाषा Modula2 से मॉड्यूल सिस्टम। (हालांकि पास्कल स्टैंडपैड्स में इसे प्राप्त करने के लिए किए गए प्रयासों के माध्यम से अप्रत्यक्ष रूप से, यह अंततः विस्तारित पास्कल मानक बना, हालांकि अलग-अलग सिंटैक्स के साथ)
मार्को वैन डे वोर्ट

5

ऑब्जेक्ट ओरिएंटेड एक्सटेंशन! ऑब्जेक्ट पास्कल 90 के दशक के मध्य में डेल्फी (1) की रिलीज के साथ सबसे बड़ा (अनौपचारिक) मानक छलांग था। इसके लिए सिर्फ एक को चुनना मुश्किल है, लेकिन एक पूरे के रूप में ऑब्जेक्ट मॉडल के पूरे कोर ने भाषा को आधुनिक स्थिति तक लाने में मदद की। दुर्भाग्य से आज तक यह एक आधिकारिक एकल एकीकृत मानक नहीं बनाया गया है जिसमें सभी संकलक कोडिंग समरूपता के लिए अनुरूप होंगे।

शुक्र है कि नि: शुल्क पास्कल परियोजना के डेवलपर्स डेल्फी में बोरलैंड और एंब्रैडेरो दोनों के लिए सुविधाओं को जोड़ रहे हैं। RemObjects इतना अधिक नहीं है, लेकिन कम से कम हे में डेल्फी प्रिज्म के तहत Embarcadero के साथ संबंध हैं, इसलिए मानक से किसी भी विचलन (भाषा को अधिक .NET अनुपालन करने के लिए) अत्यधिक प्रलेखित किया जाएगा।


8
टर्बो पास्कल 5.5 के साथ पास्कल में वस्तुओं को पेश किया गया था
एमसीटील

1
कार्यविधियाँ और कार्य डिफ़ॉल्ट स्थैतिक द्वारा होते थे। आपको virtualउपवर्गों द्वारा उन्हें अधिक उपयोग करने योग्य बनाने के लिए कीवर्ड का उपयोग करना था ।

1
डेल्फी में वर्चुअल एक आरक्षित शब्द नहीं है। डेल्फी आरक्षित शब्दों और प्रिज्म कीवर्ड की सूची यहाँ और यहाँ देखी जा सकती है
डेविड I

2
वस्तुओं को एप्पल द्वारा पास्कल में पेश किया गया था। en.wikipedia.org/wiki/Object_Pascal#Early_history_at_Apple
कार्ल मैस्टर

2
@ कार्ल - मैं भूल गया था कि क्लासिक मैक पास्कल में प्रोग्राम किए गए थे, और मुझे नहीं पता था कि यह Wirth द्वारा सह-निर्मित पास्कल का एक OO संस्करण था।
mcottle

4

एमएस-डॉस के साथ पास्कल का उपयोग करने से बस एक या दो चीजें मुझे याद हैं:

टर्बो पास्कल ने कमोबेश 80 के दशक में एक तरह की आईडीई शुरू की (और संकलन प्रदर्शन को यूसीएसडी पास्कल की तुलना में काफी बढ़ावा मिला।

किसी तरह 90 के दशक के मध्य में बोरलैंड ने टर्बो से बोरलैंड पास्कल में नाम बदल दिया । पहले कदम के रूप में शुरू की गई इकाइयाँ, जिन्होंने बड़ी परियोजनाओं को अलग-अलग संकलन इकाइयों में विभाजित करने की अनुमति दी।

बाद में उन्होंने ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को भी जोड़ा।


टर्बो पास्कल सरल उत्पाद था। बोरलैंड पास्कल में

2
इकाइयां जहां टर्बो पास्कल (v4 IIRC) में पेश की गईं। ये .tpu (टर्बो पास्कल यूनिट) फ़ाइलों को संकलित करते हैं, जो वर्तमान dcu फ़ाइलों के पूर्ववर्ती थे। मेरा मानना ​​है कि वे Wirth के मोडुला -2 भाषा की अवधारणाओं पर आधारित थे।
Gerry

1
UCSD पी-सिस्टम में ISTR की भी इकाइयाँ थीं, लेकिन मुझे नहीं पता कि वे टर्बो पास्कल से पहले हुए थे या नहीं।
टीएमएन

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

... एक संपूर्ण 128 बाइट्स RAM (24 बाइट्स के लिए जो स्क्रीन पॉइंटर्स के लिए आवश्यक थे), और पूरे विकास प्रणाली के साथ ROM के 4K (चरित्र आकृतियों सहित) में फिटिंग है। उन बाधाओं को देखते हुए, उपयोगकर्ताओं को 64 बाइट्स रैम को अपने कार्यक्रम, चर और आउटपुट को रखने की अनुमति देता है, यह एक बहुत साफ चाल थी। इससे पहले कि वे अपनी "SARA" चिप (जो 128 बाइट्स से 256 तक रैम दोगुनी हो) को विकसित करने से पहले बेसिक अटारी ने बेसिक प्रोग्रामिंग जारी की। प्रोग्राम के लिए रैम के 128 बाइट्स का उपयोग करने में सक्षम होने के साथ-साथ वेरिएबल्स और आउटपुट के लिए 64 सब कुछ के लिए 64 बाइट्स की तुलना में बेहतर होगा।
सुपरकैट

4

पास्कल में मुख्य विकासवादी चरणों में से एक तार की उचित धारणा थी। आईएसओ 7185 ("स्टैंडर्ड पास्कल") उनके पास नहीं था, जो कि शर्मनाक है। हालांकि, सभी वास्तविक प्रोग्रामर को उनकी आवश्यकता थी, और व्यवहार्य पास्कल कार्यान्वयन (जैसे बोरलैंड / टर्बो पास्कल) ने उन्हें प्रदान किया।


4

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



3

80 के दशक और 90 के दशक में पास्कल के कई स्वादों के बीच लड़ाई।

आपके पास Apple Pascal , Microsoft Pascal और QuickPascal और Turbo Pascal थे

सभी ने परिचय दिया ऑब्जेक्ट पास्कल को एक या दूसरे तरीके से (क्विकपैस्कल 1.0 और टर्बो पास्कल 5.5 एक ही समय सीमा के आसपास)। एप्पल क्योंकि वे अपने मंच के लिए यह आवश्यक है, माइक्रोसॉफ्ट और बोर्लेन्ड क्योंकि OO 'कूल' होता जा रहा था (तब QuickPascal के बाद जल्द ही मृत्यु हो गई, और टर्बो पास्कल 6.0 एक उचित OO ढांचे कहा जाता है टर्बो विजन )।

रूडी वेल्थसुब इस पर अपनी फोरम पोस्टिंग में काफी पूर्ण हैं ।

आप उस समय के DOS 6.22 और कुछ DOS पास्कल संकलक के साथ एक ISO छवि डाउनलोड कर सकते हैं


2

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


ध्यान दें कि इंटरफ़ेस इनहेरिटेंस स्वयं में OO नहीं है , बल्कि इसे बहुरूपता के सबसे बुरे रूपों में से एक माना जाता है। चूंकि यह COM के समान वीएमटी प्रारूप को साझा करता था , इसलिए इसने कॉम को बहुत आसान बना दिया (लोगों की व्यापक राय है कि अच्छी या बुरी चीज <g> है)।
जीरोन विएट प्लिमर्स

2

मैं मिश्रण में अनाम विधियाँ और जेनरिक जोड़ूँगा।


1
डेल्फी के सबसे हाल के संस्करणों के लिए, हो सकता है। मैंने डेल्फी 7 तक का उपयोग किया, इसलिए निश्चित रूप से कभी भी गुमनाम तरीकों या जेनरिक का उपयोग नहीं किया!
फ्रैंक शीयर


2

मेरे लिए दो सबसे बड़ी चीजें (कुछ अन्य भाषाओं जैसे सी ...) के मामले में असंवेदनशीलता और संकलक की गति थी।

और उसके बाद तथ्य यह है कि फिनिश कीबोर्ड के साथ लिखना आसान है, क्योंकि मुझे लगातार {} या अन्य कुंजी की आवश्यकता नहीं है जो कि मुश्किल है ...

मैं डेल्फी 2 के बाद से सवार हूं लेकिन काम के कुछ वर्षों में डी 1 का इस्तेमाल किया ...


1

Dahl, Dijkstra और Hoare द्वारा "संरचित प्रोग्रामिंग" से शुरू करें । दिज्क्स्ट्रा का खंड मौलिक है, आज भी है। डेटा संरचना पर टोनी होरे के अनुभाग ने PASCAL के लिए जमीनी कार्य का एक बड़ा हिस्सा रखा। (डाहल के खंड ने इस बारे में बात की कि आखिरकार ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग क्या हो गई। उन्होंने बताया कि सिमूला 67 में कौन सी कक्षाएं बनीं।)

ALGOL-W में देखें, WIRth का ALGOL-60 का एक संस्करण है।

आपको उस समय PL / I और IBM 360 लिंक एडिटर (लिंकर) के बारे में भी जानना होगा। यह सामान्यता का चमत्कार था, इस मामूली मुद्दे के साथ कि यह जनवरी में अलास्का के जुनेऊ में धीमी गति से चला। PASCAL को विशेष रूप से गति के लिए संकलित और एक पास में जोड़ने के लिए डिज़ाइन किया गया था। (इससे यह मदद मिली कि भाषा ने सीडीसी 6400 जूनियर सुपरकंप्यूटर पर जीवन की शुरुआत की, बहुत सारी मेमोरी के साथ, एक-पास कंपाइलर को व्यावहारिक बना दिया।)

वास्तव में ETH ज्यूरिख से PASCAL के दो प्रमुख संस्करण थे। वर्तमान में PASCAL के रूप में सभी को जानने वाली भाषा वास्तव में PASCAL2 थी, दूसरा संस्करण।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.