एल्गोल 68सी

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

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

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

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

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

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

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

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

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

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

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

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

का उदाहरण खंड
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

खंड का उदाहरण
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 और वैरिएबल की लंबाई सारणी नहीं होती हैं।
 * फ्लेक्स के बिना लागू किया गया हैं।
 * PAR पैरेलल क्लॉज लागू नहीं किया गया था।
 * अमानक ट्रांसपुट
 * अन्य

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

बाहरी संबंध

 * Cambridge एलगोल 68: on the historical rओपरेटिंग सिस्टमter of computer languages – includes 10+ publication references.
 * A Transportation of एलगोल 68सी – PJ Gardner, University of Essex – March 1977 (From 370 to डेकसिस्टम-10)
 * Running एलगोल 68सी on MVS - how to install एलगोल 68सी on an emulated MVS सिस्टम
 * Running एलगोल 68सी on MVS - how to install एलगोल 68सी on an emulated MVS सिस्टम