एल्गोल 68सी: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 10: Line 10:
| website                = {{URL|bitbucket.org/algol68c/dl}}
| website                = {{URL|bitbucket.org/algol68c/dl}}
}}
}}
[[ALGOL 68]]C एक [[अनिवार्य प्रोग्रामिंग]] [[कंप्यूटर प्रोग्रामिंग]] [[प्रोग्रामिंग भाषा]] है, जो ALGOL 68 की एक बोली है, जिसे [[कैम्ब्रिज बीजगणित प्रणाली]] (CAMAL) को प्रोग्राम करने के लिए स्टीफन आर बॉर्न और [[माइकल गाय]] द्वारा विकसित किया गया था। प्रारंभिक [[संकलक]] प्रिंसटन सिंटैक्स कंपाइलर (PSYCO) में लिखा गया था। एडगर टी. आयरन्स द्वारा) जिसे कैम्ब्रिज में जे. एच. मैथ्यूमैन द्वारा कार्यान्वित किया गया था।
[[ALGOL 68|एलगोल (ALGOL) 68]]C ऐसी [[अनिवार्य प्रोग्रामिंग]] है जिसे [[कंप्यूटर प्रोग्रामिंग]] में मुख्य [[प्रोग्रामिंग भाषा]] के रूप में उपयोग होता रहा हैं, इस प्रोग्रामिंग भाषा को [[कैम्ब्रिज बीजगणित प्रणाली]] (CAMAL) में प्रोग्राम करने के लिए स्टीफन आर बॉर्न और [[माइकल गाय]] द्वारा विकसित किया गया था। प्रारंभिक [[संकलक]] प्रिंसटन सिंटैक्स कंपाइलर (PSYCO) में लिखा गया था, जिसे एडगर टी. आयरन्स तथा कैम्ब्रिज के जे. एच. मैथ्यूमैन द्वारा कार्यान्वित किया गया था।


ALGOL 68C को बाद में CHAOS OS के लिए इस्तेमाल किया गया 1971 में [[कैम्ब्रिज विश्वविद्यालय]] में [[क्षमता-आधारित सुरक्षा]] [[कैप कंप्यूटर]] के लिए। अन्य शुरुआती योगदानकर्ता एंड्रयू डी. बिरेल थे<ref>{{cite web |url=http://birrell.org/andrew/papers/thesis.pdf |title=System Programming in a High Level Language |last=Birrell |first=Andrew D. |date=December 1977 |format=PDF |work=Dissertation submitted for the degree of Doctor of Philosophy |publisher=University of Cambridge |access-date=2007-04-22}}</ref> और इयान वाकर।
एलगोल 68C को बाद में काओस ओपरेटिंग सिस्टम के लिए उपयोग किया गया था, इस प्रकार 1971 में [[कैम्ब्रिज विश्वविद्यालय]] में [[क्षमता-आधारित सुरक्षा]] [[कैप कंप्यूटर]] के लिए प्रारंभिक योगदानकर्ता एंड्रयू डी. बिरेल और इयान वाकर थे<ref>{{cite web |url=http://birrell.org/andrew/papers/thesis.pdf |title=System Programming in a High Level Language |last=Birrell |first=Andrew D. |date=December 1977 |format=PDF |work=Dissertation submitted for the degree of Doctor of Philosophy |publisher=University of Cambridge |access-date=2007-04-22}}</ref>


1975 में बॉर्न के कैंब्रिज विश्वविद्यालय छोड़ने के बाद संकलक पर बाद का काम किया गया। [[कचरा संग्रह (कंप्यूटर विज्ञान)]] जोड़ा गया, और कोड आधार अभी भी चल रहा है [[हरक्यूलिस (एमुलेटर)]] का उपयोग करके एक अनुकरणीय ओएस/एमवीटी पर।
1975 में बॉर्न के कैंब्रिज विश्वविद्यालय छोड़ने के बाद संकलक पर बाद का कार्य किया गया था। [[कचरा संग्रह (कंप्यूटर विज्ञान)|गार्बेज (कचरा) संग्रह (कंप्यूटर विज्ञान)]] द्वारा जोड़ा गया था, और कोड के आधार पर [[हरक्यूलिस (एमुलेटर)]] का उपयोग करके मुख्य अनुकरणीय ओएस/एमवीटी पर अभी भी रन हो रहा है।


ALGOL 68C कंपाइलर ZCODE में आउटपुट उत्पन्न करता है, जो एक रजिस्टर-आधारित इंटरमीडिएट भाषा है, जिसे या तो मूल निष्पादन योग्य में व्याख्या या संकलित किया जा सकता है। ZCODE की व्याख्या या संकलन करने की इस क्षमता ने ALGOL 68C को कई अलग-अलग [[कंप्यूटिंग मंच]] पर पोर्ट करने के लिए प्रोत्साहित किया। सीएपी कंप्यूटर के अलावा, कंपाइलर को संवादात्मक मॉनिटर सिस्टम (सीएमएस), टीओपीएस -10, और [[ज़िलॉग Z80]] 80 सहित सिस्टम में पोर्ट किया गया था।
एलगोल 68C कंपाइलर जेड कोड में आउटपुट उत्पन्न करता है, जो एक रजिस्टर-आधारित इंटरमीडिएट भाषा है, जिसे या तो मूल निष्पादन योग्य में व्याख्या या संकलित किया जा सकता है। जेड कोड की व्याख्या या संकलन करने की इस क्षमता ने एलगोल 68C को कई अलग-अलग [[कंप्यूटिंग मंच]] पर पोर्ट करने के लिए प्रोत्साहित किया गया हैं। इस प्रकार सीएपी कंप्यूटर के अतिरिक्त, कंपाइलर को संवादात्मक मॉनिटर सिस्टम (सीएमएस), टीओपीएस -10, और [[ज़िलॉग Z80|ज़िलॉग जेड80]] 80 सहित सिस्टम में पोर्ट किया गया था।


== लोकप्रिय संस्कृति ==
== लोकप्रिय संस्कृति ==
इस कंपाइलर के एक बहुत ही प्रारंभिक पूर्ववर्ती का उपयोग गाय और बॉर्न द्वारा DEC 340 डिस्प्ले के साथ [[PDP-7]] पर पहला कॉनवेज़ गेम ऑफ़ लाइफ लिखने के लिए किया गया था।<ref>{{cite web |url=http://www.aceware.iinet.net.au/acms/ItemDetail.asp?lngItemId=175 |title=Item Detail: Digital Equipment Corporation Model 340 |website=Australian Computer Museum Society (ACMS) |publisher=AceWare Web Hosting |access-date=2020-04-17}}</ref><ref name="SA1970"/>
इस कंपाइलर के बहुत ही प्रारंभिक पूर्ववर्ती का गाय और बॉर्न द्वारा डेक 340 डिस्प्ले के साथ [[PDP-7|पीडीपी-7]] पर पहला कॉनवेज़ गेम ऑफ़ लाइफ लिखने के लिए उपयोग किया गया था।<ref>{{cite web |url=http://www.aceware.iinet.net.au/acms/ItemDetail.asp?lngItemId=175 |title=Item Detail: Digital Equipment Corporation Model 340 |website=Australian Computer Museum Society (ACMS) |publisher=AceWare Web Hosting |access-date=2020-04-17}}</ref><ref name="SA1970"/>


विभिन्न [[लिवरपूल सॉफ्टवेयर राजपत्र]] Z80 कार्यान्वयन का विवरण देते हैं। कंपाइलर को चलाने के लिए लगभग 120 KB मेमोरी की आवश्यकता होती है; इसलिए Z80 की 64 KB मेमोरी वास्तव में कंपाइलर चलाने के लिए बहुत छोटी है। इसलिए Z80 के लिए ALGOL 68C प्रोग्राम को बड़े CAP कंप्यूटर, या IBM सिस्टम/370 [[मेनफ़्रेम कंप्यूटर]] से क्रॉस-संकलित होना चाहिए।
विभिन्न [[लिवरपूल सॉफ्टवेयर राजपत्र]] जेड80 कार्यान्वयन का विवरण देते हैं। कंपाइलर को रन करने के लिए लगभग 120 किलोबाइट मेमोरी की आवश्यकता होती है, इसलिए जेड80 की 64 किलोबाइट मेमोरी वास्तव में कंपाइलर रन करने के लिए बहुत छोटी है। इसलिए जेड80 के लिए एलगोल 68C प्रोग्राम को बड़े कैप कंप्यूटर, या आईबीएम सिस्टम/370 [[मेनफ़्रेम कंप्यूटर]] से क्रॉस-संकलित होना चाहिए।


== अल्गोल 68 सी और यूनिक्स ==
== अल्गोल 68 सी और यूनिक्स ==
स्टीफन आर. बॉर्न ने बाद में ALGOL 68 का पुन: उपयोग किया <code><u> '''if'''</u> ~ <u>then</u> ~ <u>else</u> ~ <u>'''fi'''</u></code>, <code><u>'''case'''</u> ~ <u>in</u> ~ <u>out</u> ~ <u>'''esac'''</u></code> और <code><u>for</u> ~ <u>while</u> ~ <u>'''do'''</u> ~ <u>'''od'''</u></code> सामान्य [[यूनिक्स]] [[बॉर्न शेल]] में खंड, लेकिन साथ <code><u>in</u></code>का वाक्य-विन्यास बदल गया, <code><u>out</u></code> हटा दिया, और <code><u>od</u></code> के साथ बदल दिया <code><u>done</u></code> (ओडी (यूनिक्स) उपयोगिता के साथ विरोध से बचने के लिए)।
स्टीफन आर. बॉर्न ने बाद में एलगोल 68 का पुन: उपयोग किया <code><u> '''if'''</u> ~ <u>then</u> ~ <u>else</u> ~ <u>'''fi'''</u></code>, <code><u>'''case'''</u> ~ <u>in</u> ~ <u>out</u> ~ <u>'''esac'''</u></code> और <code><u>for</u> ~ <u>while</u> ~ <u>'''do'''</u> ~ <u>'''od'''</u></code> सामान्य [[यूनिक्स]] [[बॉर्न शेल]] में खंड, लेकिन साथ <code><u>in</u></code>का वाक्य-विन्यास बदल गया, <code><u>out</u></code> कर दिया था, और <code><u>od</u></code> के साथ परिवर्तित कर दिया था, इस प्रकार <code><u>done</u></code> ओडी (यूनिक्स) की उपयोगिता के साथ विरोध से सुरक्षित करने के लिए किया गया हैं।


कैंब्रिज के बाद, बॉर्न ने [[संस्करण 7 यूनिक्स]] (सातवां संस्करण यूनिक्स) टीम के साथ [[बेल लैब्स]] में नौ साल बिताए। बॉर्न शेल को विकसित करने के साथ-साथ, उन्होंने ALGOL 68C को DEC [[PDP-11]]-45 पर यूनिक्स में पोर्ट किया और ALGOL 68C में लिखे गए प्रोग्राम के लिए स्टैक बैकट्रेस प्राप्त करने के लिए अपने यूनिक्स [[डिबगर]] [[उन्नत डीबगर]] (adb) में एक विशेष विकल्प शामिल किया। यहाँ यूनिक्स के 7वें संस्करण के मैनुअल पृष्ठों से एक उद्धरण दिया गया है:<ref>{{cite web |url=http://modman.unixdev.net/?sektion=1&page=adb&manpath=v7man |title=The Modular Manual Browser: Adb |website=UnixDev.net |url-status=dead |archive-url=https://web.archive.org/web/20160303175742/http://modman.unixdev.net/?sektion=1&page=adb&manpath=v7man |archive-date=2016-03-03 |access-date=2020-04-17}}</ref>
कैंब्रिज के पश्चात, बॉर्न ने [[संस्करण 7 यूनिक्स]] (सातवां संस्करण यूनिक्स) टीम के साथ [[बेल लैब्स]] में नौ साल बिताए गए हैं। इस प्रकार बॉर्न शेल को विकसित करने के साथ-साथ, उन्होंने एलगोल 68C को डेक [[PDP-11|पीडीपी-11]]-45 पर यूनिक्स में पोर्ट किया और एलगोल 68C में लिखे गए प्रोग्राम के लिए स्टैक बैकट्रेस प्राप्त करने के लिए अपने यूनिक्स [[डिबगर]] [[उन्नत डीबगर]] (adb) में विशेष विकल्प सम्मलित किया था। यहाँ यूनिक्स के 7वें संस्करण के मैनुअल पृष्ठों से एक उद्धरण दिया गया है:<ref>{{cite web |url=http://modman.unixdev.net/?sektion=1&page=adb&manpath=v7man |title=The Modular Manual Browser: Adb |website=UnixDev.net |url-status=dead |archive-url=https://web.archive.org/web/20160303175742/http://modman.unixdev.net/?sektion=1&page=adb&manpath=v7man |archive-date=2016-03-03 |access-date=2020-04-17}}</ref>
नाम
      NAME
       अदब - डिबगर
 
  सार
       adb - debugger
       अदब [-w] [objfil [corfil]]
  SYNOPSIS
       adb [-w] [ objfil [ corfil ] ]
  [...]
  [...]
  कमानों
  COMMANDS
  [...]
  [...]
         $संशोधक
         $modifier
               विविध आदेश। उपलब्ध संशोधक
               Miscellaneous  commands.  The  available modifiers
               हैं:
               are:
               [...]
               [...]
               एक ALGOL 68 स्टैक बैकट्रेस। अगर पता है
               a      ALGOL 68 stack  backtrace.  If  address  is
                     दिया गया है तो इसे का पता माना जाता है
                     given  then it is taken to be the address of
                     वर्तमान फ्रेम (आर 4 के बजाय)। अगर गिनें
                     the current frame (instead of r4).  If count
                     दिया जाता है तो केवल पहली गिनती फ्रेम
                     is  given  then  only the first count frames
                    मुद्रित हैं।
are printed.


== ALGOL 68C एक्सटेंशन ALGOL 68 == के लिए
== एलगोल 68C एक्सटेंशन एलगोल 68 के लिए ==
नीचे कुछ उल्लेखनीय एक्सटेंशन का नमूना दिया गया है:<ref name="Manual"/>*स्वचालित ऑप:= किसी भी ऑपरेटर के लिए, उदा. <code>*:=</code> और <code>+:=</code>
नीचे कुछ उल्लेखनीय एक्सटेंशन का नमूना दिया गया है:<ref name="Manual" /> *स्वचालित ऑप:= किसी भी ऑपरेटर के लिए, उदा. <code>*:=</code> और <code>+:=</code>
*<code>UPTO</code>, <code>DOWNTO</code> और <code>UNTIL</code> लूप-क्लॉज में;
*<code>UPTO</code>, <code>DOWNTO</code> और <code>UNTIL</code> लूप-क्लॉज में उपयोग किया जाता हैं
*विस्थापन ऑपरेटर (<code>:=:=</code>)
*विस्थापन ऑपरेटर (<code>:=:=</code>)
*<code>ANDF</code>, <code>ORF</code> और <code>THEF</code> वाक्यात्मक तत्व।
*<code>ANDF</code>, <code>ORF</code> और <code>THEF</code> वाक्यात्मक तत्व के रूप में उपयोग किया जाता हैं।
*अलग संकलन-* <code>ENVIRON</code> खंड और <code>USING</code> खंड
*अलग संकलन-* <code>ENVIRON</code> खंड और <code>USING</code> खंड के रूप में उपयोग होता हैं।
*दायरे की जाँच नहीं की गई
*सीमा की जाँच नहीं की जाती हैं।
*औपचारिक-घोषणाकर्ताओं में सीमा
*औपचारिक-घोषणाकर्ताओं में सीमा देखी जाती हैं।
*<code>CODE</code> ... <code>EDOC</code> खंड - ZCODE एम्बेड करने के लिए
*<code>CODE</code> ... <code>EDOC</code> खंड - जेड कोड एम्बेड करने के लिए किया जाता हैं।


=== <code>ENVIRON</code> > और <code>USING</code> खंड ===
=== <code>ENVIRON</code> E> और <code>USING</code> खंड ===
ALGOL 68C में अलग संकलन का उपयोग करके किया जाता है <code>ENVIRON</code> और <code>USING</code> खंड। <code>ENVIRON</code> e> प्रकट होने वाले बिंदु पर संपूर्ण परिवेश को सहेजता है। एक से शुरू होने वाला एक अलग मॉड्यूल लिखा गया है <code>USING</code> क्लॉज प्रभावी रूप से बिंदु पर पहले मॉड्यूल में डाला गया है <code>ENVIRON</code> खंड प्रकट होता है।
एलगोल 68C में अलग संकलन का उपयोग करके किया जाता है <code>ENVIRON</code> और <code>USING</code> खंड। <code>ENVIRON</code> e> प्रकट होने वाले बिंदु पर संपूर्ण परिवेश को सहेजता है। इस प्रकार से प्रारंभ होने वाला एक अलग मॉड्यूल लिखा गया है, तथा <code>USING</code> क्लॉज प्रभावी रूप से बिंदु पर पहले मॉड्यूल में डाला गया है, जिसमें <code>ENVIRON</code> खंड को प्रकट किया जाता हैं।


<code>ENVIRON</code> और <code>USING</code> पारंपरिक लाइब्रेरी मैकेनिज्म द्वारा निहित बॉटम-अप स्टाइल के विपरीत, प्रोग्रामिंग की टॉप-डाउन शैली के लिए उपयोगी हैं।
<code>ENVIRON</code> और <code>USING</code> पारंपरिक लाइब्रेरी मैकेनिज्म द्वारा निहित बॉटम-अप स्टाइल के विपरीत, प्रोग्रामिंग की टॉप-डाउन शैली के लिए उपयोगी हैं।


ये खंड C (प्रोग्रामिंग भाषा) में पाए जाने वाले '#include' या Python (प्रोग्रामिंग भाषा) में पाए जाने वाले 'आयात' के विपरीत हैं। का उद्देश्य <code>ENVIRON</code> तंत्र एक प्रोग्राम स्रोत को प्रबंधनीय आकार के टुकड़ों में विभाजित करने की अनुमति देना है। साझा स्रोत फ़ाइल को केवल एक बार पार्स करना आवश्यक है, C (प्रोग्रामिंग भाषा) में पाए जाने वाले #include के विपरीत, जहाँ शामिल फ़ाइल को प्रत्येक स्रोत फ़ाइल के लिए पार्स करने की आवश्यकता होती है जिसमें यह शामिल है।
ये खंड C (प्रोग्रामिंग भाषा) में पाए जाने वाले '#include' या Python (प्रोग्रामिंग भाषा) में पाए जाने वाले 'आयात' के विपरीत हैं। का उद्देश्य <code>ENVIRON</code> तंत्र एक प्रोग्राम स्रोत को प्रबंधनीय आकार के टुकड़ों में विभाजित करने की अनुमति देना है। इस प्रकार से सोर्स या स्रोत फ़ाइल को केवल पार्स करना आवश्यक है, C (प्रोग्रामिंग भाषा) में पाए जाने वाले #include के विपरीत, जहाँ सम्मलित फ़ाइल को प्रत्येक स्रोत फ़ाइल के लिए पार्स करने की आवश्यकता होती है जिसमें यह सम्मलित है।


==== का उदाहरण <code>ENVIRON</code> खंड ====
==== का उदाहरण <code>ENVIRON</code> खंड ====
mylib.a68 नामक फ़ाइल:
mylib.a68 नामक फ़ाइल:
<पूर्व>
BEGIN
शुरू
    INT dim = 3; # a constant #
  आईएनटी मंद = 3; # निरंतर #
    INT a number := 120; # a variable #
  INT एक संख्या := 120; # एक परिवर्तनीय #
    ENVIRON EXAMPLE1;
  पर्यावरण उदाहरण1;
    MODE MATRIX = [dim, dim]REAL; # a type definition #
  मोड मैट्रिक्स = [मंद, मंद] वास्तविक; # एक प्रकार की परिभाषा #
    MATRIX m1;
  मैट्रिक्स एम 1;
    a number := ENVIRON EXAMPLE2;
  एक संख्या := पर्यावरण उदाहरण2;
    print((a number))
  प्रिंट ((एक नंबर))
END
अंत
==== <code>USING</code> खंड का उदाहरण ====
usemylib.a68 नामक फ़ाइल: Mylib से उदाहरण 2 का उपयोग करना
  USING EXAMPLE2 FROM "mylib"


==== का उदाहरण <code>USING</code> खंड ====
BEGIN
usemylib.a68 नामक फ़ाइल: Mylib से उदाहरण 2 का उपयोग करना
  MATRIX m2; # example only #
शुरू
  print((a number)); # declared in mylib.a68 #
  मैट्रिक्स एम 2; #उदाहरण केवल #
  print((2 UPB m1)); # also declared in mylib.a68 #
  प्रिंट ((एक नंबर)); # mylib.a68 # में घोषित
  ENVIRON EXAMPLE3; # ENVIRONs can be nested #
  प्रिंट ((2 यूपीबी एम 1)); # Mylib.a68 # में भी घोषित
  666
  पर्यावरण उदाहरण3; #पर्यावरण नेस्ट किया जा सकता है #
END
  666
अंत


==मानक ALGOL 68== से भाषा पर प्रतिबंध
== मानक एलगोल 68 से भाषा पर प्रतिबंध ==
*कोई ALGOL 68 FLEX और चर लंबाई सरणियाँ नहीं
*कोई एलगोल 68 FLEX और वैरिएबल की लंबाई सारणी नहीं होती हैं।
*<code>MODE STRING</code> फ्लेक्स के बिना लागू किया गया
*<code>MODE STRING</code> फ्लेक्स के बिना लागू किया गया हैं।
*PAR पैरेलल क्लॉज लागू नहीं किया गया था
*PAR पैरेलल क्लॉज लागू नहीं किया गया था।
* अमानक ट्रांसपुट
* अमानक ट्रांसपुट
*अन्य...
*अन्य


ALGOL 68C के लिए एक अनुवादक-कंपाइलर [[PDP-10]], IBM System/360 और कई अन्य कंप्यूटरों के लिए उपलब्ध था।
एलगोल 68C के लिए अनुवादक-कंपाइलर [[PDP-10|पीडीपी-10]], आईबीएम सिस्टम/360 और कई अन्य कंप्यूटरों के लिए उपलब्ध था।


==संदर्भ==
==संदर्भ==
Line 105: Line 106:
==बाहरी संबंध==
==बाहरी संबंध==
*{{Official website|bitbucket.org/algol68c/dl}}
*{{Official website|bitbucket.org/algol68c/dl}}
*[https://web.archive.org/web/20050724183114/http://hopl.murdoch.edu.au/showlanguage.prx?exp=667 Cambridge ALGOL 68: on the historical roster of computer languages] – includes 10+ publication references.
*[https://web.archive.org/web/20050724183114/http://hopl.murdoch.edu.au/showlanguage.prx?exp=667 Cambridge एलगोल 68: on the historical rओपरेटिंग सिस्टमter of computer languages] – includes 10+ publication references.
*[http://portal.acm.org/ft_gateway.cfm?id=807148&type=pdf A Transportation of ALGOL 68C – PJ Gardner, University of Essex] – March 1977 (From 370 to DECsystem-10)
*[http://portal.acm.org/ft_gateway.cfm?id=807148&type=pdf A Transportation of एलगोल 68C – PJ Gardner, University of Essex] – March 1977 (From 370 to डेकसिस्टम-10)
*[https://jmvdveer.home.xs4all.nl/en.post.algol-68-mvs.html Running ALGOL 68C on MVS] - how to install ALGOL 68C on an emulated MVS system
*[https://jmvdveer.home.xs4all.nl/en.post.algol-68-mvs.html Running एलगोल 68C on MVS] - how to install एलगोल 68C on an emulated MVS सिस्टम


{{ALGOL programming}}
{{ALGOL programming}}

Revision as of 00:21, 24 February 2023

ALGOL 68 Cambridge
Developer(s)Stephen Bourne, Michael Guy, Andrew D. Birrell, Ian Walker, Chris Cheney, et al.
Initial releasecirca 1970; 54 years ago (1970)
Stable release
1.3039 / March 3, 2013; 11 years ago (2013-03-03)
Written inALGOL 68
Operating systemIBM 360, 370, etc., mainframes (or emulations) running MVT or MVS
TypeCompiler, translator
Websitebitbucket.org/algol68c/dl

एलगोल (ALGOL) 68C ऐसी अनिवार्य प्रोग्रामिंग है जिसे कंप्यूटर प्रोग्रामिंग में मुख्य प्रोग्रामिंग भाषा के रूप में उपयोग होता रहा हैं, इस प्रोग्रामिंग भाषा को कैम्ब्रिज बीजगणित प्रणाली (CAMAL) में प्रोग्राम करने के लिए स्टीफन आर बॉर्न और माइकल गाय द्वारा विकसित किया गया था। प्रारंभिक संकलक प्रिंसटन सिंटैक्स कंपाइलर (PSYCO) में लिखा गया था, जिसे एडगर टी. आयरन्स तथा कैम्ब्रिज के जे. एच. मैथ्यूमैन द्वारा कार्यान्वित किया गया था।

एलगोल 68C को बाद में काओस ओपरेटिंग सिस्टम के लिए उपयोग किया गया था, इस प्रकार 1971 में कैम्ब्रिज विश्वविद्यालय में क्षमता-आधारित सुरक्षा कैप कंप्यूटर के लिए प्रारंभिक योगदानकर्ता एंड्रयू डी. बिरेल और इयान वाकर थे[1]

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

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

लोकप्रिय संस्कृति

इस कंपाइलर के बहुत ही प्रारंभिक पूर्ववर्ती का गाय और बॉर्न द्वारा डेक 340 डिस्प्ले के साथ पीडीपी-7 पर पहला कॉनवेज़ गेम ऑफ़ लाइफ लिखने के लिए उपयोग किया गया था।[2][3]

विभिन्न लिवरपूल सॉफ्टवेयर राजपत्र जेड80 कार्यान्वयन का विवरण देते हैं। कंपाइलर को रन करने के लिए लगभग 120 किलोबाइट मेमोरी की आवश्यकता होती है, इसलिए जेड80 की 64 किलोबाइट मेमोरी वास्तव में कंपाइलर रन करने के लिए बहुत छोटी है। इसलिए जेड80 के लिए एलगोल 68C प्रोग्राम को बड़े कैप कंप्यूटर, या आईबीएम सिस्टम/370 मेनफ़्रेम कंप्यूटर से क्रॉस-संकलित होना चाहिए।

अल्गोल 68 सी और यूनिक्स

स्टीफन आर. बॉर्न ने बाद में एलगोल 68 का पुन: उपयोग किया if ~ then ~ else ~ fi, case ~ in ~ out ~ esac और for ~ while ~ do ~ od सामान्य यूनिक्स बॉर्न शेल में खंड, लेकिन साथ inका वाक्य-विन्यास बदल गया, out कर दिया था, और od के साथ परिवर्तित कर दिया था, इस प्रकार done ओडी (यूनिक्स) की उपयोगिता के साथ विरोध से सुरक्षित करने के लिए किया गया हैं।

कैंब्रिज के पश्चात, बॉर्न ने संस्करण 7 यूनिक्स (सातवां संस्करण यूनिक्स) टीम के साथ बेल लैब्स में नौ साल बिताए गए हैं। इस प्रकार बॉर्न शेल को विकसित करने के साथ-साथ, उन्होंने एलगोल 68C को डेक पीडीपी-11-45 पर यूनिक्स में पोर्ट किया और एलगोल 68C में लिखे गए प्रोग्राम के लिए स्टैक बैकट्रेस प्राप्त करने के लिए अपने यूनिक्स डिबगर उन्नत डीबगर (adb) में विशेष विकल्प सम्मलित किया था। यहाँ यूनिक्स के 7वें संस्करण के मैनुअल पृष्ठों से एक उद्धरण दिया गया है:[4]

     NAME
      adb - debugger
SYNOPSIS
      adb [-w] [ objfil [ corfil ] ]
[...]
COMMANDS
[...]
       $modifier
             Miscellaneous  commands.   The  available modifiers
             are:
             [...]
             a      ALGOL 68 stack  backtrace.   If  address  is
                    given  then it is taken to be the address of
                    the current frame (instead of r4).  If count
                    is  given  then  only the first count frames
are printed.

एलगोल 68C एक्सटेंशन एलगोल 68 के लिए

नीचे कुछ उल्लेखनीय एक्सटेंशन का नमूना दिया गया है:[5] *स्वचालित ऑप:= किसी भी ऑपरेटर के लिए, उदा. *:= और +:=

  • UPTO, DOWNTO और UNTIL लूप-क्लॉज में उपयोग किया जाता हैं
  • विस्थापन ऑपरेटर (:=:=)
  • ANDF, ORF और THEF वाक्यात्मक तत्व के रूप में उपयोग किया जाता हैं।
  • अलग संकलन-* ENVIRON खंड और USING खंड के रूप में उपयोग होता हैं।
  • सीमा की जाँच नहीं की जाती हैं।
  • औपचारिक-घोषणाकर्ताओं में सीमा देखी जाती हैं।
  • CODE ... EDOC खंड - जेड कोड एम्बेड करने के लिए किया जाता हैं।

ENVIRON E> और USING खंड

एलगोल 68C में अलग संकलन का उपयोग करके किया जाता है ENVIRON और USING खंड। ENVIRON e> प्रकट होने वाले बिंदु पर संपूर्ण परिवेश को सहेजता है। इस प्रकार से प्रारंभ होने वाला एक अलग मॉड्यूल लिखा गया है, तथा USING क्लॉज प्रभावी रूप से बिंदु पर पहले मॉड्यूल में डाला गया है, जिसमें ENVIRON खंड को प्रकट किया जाता हैं।

ENVIRON और USING पारंपरिक लाइब्रेरी मैकेनिज्म द्वारा निहित बॉटम-अप स्टाइल के विपरीत, प्रोग्रामिंग की टॉप-डाउन शैली के लिए उपयोगी हैं।

ये खंड C (प्रोग्रामिंग भाषा) में पाए जाने वाले '#include' या Python (प्रोग्रामिंग भाषा) में पाए जाने वाले 'आयात' के विपरीत हैं। का उद्देश्य ENVIRON तंत्र एक प्रोग्राम स्रोत को प्रबंधनीय आकार के टुकड़ों में विभाजित करने की अनुमति देना है। इस प्रकार से सोर्स या स्रोत फ़ाइल को केवल पार्स करना आवश्यक है, C (प्रोग्रामिंग भाषा) में पाए जाने वाले #include के विपरीत, जहाँ सम्मलित फ़ाइल को प्रत्येक स्रोत फ़ाइल के लिए पार्स करने की आवश्यकता होती है जिसमें यह सम्मलित है।

का उदाहरण ENVIRON खंड

mylib.a68 नामक फ़ाइल:

BEGIN
   INT dim = 3; # a constant #
   INT a number := 120; # a variable #
   ENVIRON EXAMPLE1;
   MODE MATRIX = [dim, dim]REAL; # a type definition #
   MATRIX m1;
   a number := ENVIRON EXAMPLE2;
   print((a number))
END

USING खंड का उदाहरण

usemylib.a68 नामक फ़ाइल: Mylib से उदाहरण 2 का उपयोग करना

 USING EXAMPLE2 FROM "mylib"
BEGIN
  MATRIX m2; # example only #
  print((a number)); # declared in mylib.a68 #
  print((2 UPB m1)); # also declared in mylib.a68 #
  ENVIRON EXAMPLE3;  # ENVIRONs can be nested #
  666
END

मानक एलगोल 68 से भाषा पर प्रतिबंध

  • कोई एलगोल 68 FLEX और वैरिएबल की लंबाई सारणी नहीं होती हैं।
  • MODE STRING फ्लेक्स के बिना लागू किया गया हैं।
  • PAR पैरेलल क्लॉज लागू नहीं किया गया था।
  • अमानक ट्रांसपुट
  • अन्य

एलगोल 68C के लिए अनुवादक-कंपाइलर पीडीपी-10, आईबीएम सिस्टम/360 और कई अन्य कंप्यूटरों के लिए उपलब्ध था।

संदर्भ

  1. Birrell, Andrew D. (December 1977). "System Programming in a High Level Language" (PDF). Dissertation submitted for the degree of Doctor of Philosophy. University of Cambridge. Retrieved 2007-04-22.
  2. "Item Detail: Digital Equipment Corporation Model 340". Australian Computer Museum Society (ACMS). AceWare Web Hosting. Retrieved 2020-04-17.
  3. Gardner, Martin (October 1970). "The fantastic combinations of John Conway's new solitaire game "life"" (PDF). Mathematical Games. Scientific American. No. 223. pp. 120–123. For long-lived populations such as this one Conway sometimes uses a PDP-7 computer with a screen on which he can observe the changes [...] The program was written by M. J. T. Guy and S. R. Bourne. Without its help some discoveries about the game would have been difficult to make.
  4. "The Modular Manual Browser: Adb". UnixDev.net. Archived from the original on 2016-03-03. Retrieved 2020-04-17.
  5. Bourne, Stephen R.; Birrell, Andrew D.; Walker, Ian (1975). ALGOL 68C reference manual. Cambridge University Computer Laboratory.


बाहरी संबंध