एल्गोल 68सी

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

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

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

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

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

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

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

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

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

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

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

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

का उदाहरण खंड
mylib.a68 नामक फ़ाइल: <पूर्व> शुरू आईएनटी मंद = 3; # निरंतर # INT एक संख्या := 120; # एक परिवर्तनीय # पर्यावरण उदाहरण1; मोड मैट्रिक्स = [मंद, मंद] वास्तविक; # एक प्रकार की परिभाषा # मैट्रिक्स एम 1; एक संख्या := पर्यावरण उदाहरण2; प्रिंट ((एक नंबर)) अंत

का उदाहरण खंड
usemylib.a68 नामक फ़ाइल: Mylib से उदाहरण 2 का उपयोग करना शुरू मैट्रिक्स एम 2; #उदाहरण केवल # प्रिंट ((एक नंबर)); # mylib.a68 # में घोषित प्रिंट ((2 यूपीबी एम 1)); # Mylib.a68 # में भी घोषित पर्यावरण उदाहरण3; #पर्यावरण नेस्ट किया जा सकता है # 666 अंत

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

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

बाहरी संबंध

 * Cambridge ALGOL 68: on the historical roster of computer languages – includes 10+ publication references.
 * A Transportation of ALGOL 68C – PJ Gardner, University of Essex – March 1977 (From 370 to DECsystem-10)
 * Running ALGOL 68C on MVS - how to install ALGOL 68C on an emulated MVS system
 * Running ALGOL 68C on MVS - how to install ALGOL 68C on an emulated MVS system