सीजीओएल

From Vigyanwiki
सीजीओएल
Paradigmप्रक्रियात्मक, अनिवार्य, संरचित
द्वारा डिज़ाइन किया गयावॉन प्रैट
पहली प्रस्तुति1973
Influenced by
अल्गोल, फोरट्रान, एमलिस्प

सीजीओएल [1] [2] (उच्चारण "गोल देखें") लिस्प (प्रोग्रामिंग लैंग्वेज) के लिए एक एक्स्टेंसिबल बीजगणितीय नोटेशन की विशेषता वाला एक वैकल्पिक वाक्यविन्यास है। इसे वॉन प्रैट द्वारा मैक्लिस्प के लिए डिज़ाइन किया गया था और बाद में सामान्य लिस्प में पोर्ट किया जाता है ।[3]

इस प्रकार से सीजीओएल का नोटेशन, लिस्प के पारंपरिक, समान रूप से कोष्ठक में उपसर्ग संकेतन वाक्यविन्यास के अतिरिक्त , एल्गोल की शैली में पारंपरिक इन्फिक्स संकेतन होती है। और सीजीओएल पार्सर टॉप-डाउन ऑपरेटर प्राथमिकता के लिए प्रैट के डिज़ाइन पर आधारित होते है जिससे टॉप-डाउन ऑपरेटर-प्राथमिकता पार्सर पार्सर,[4][5] कभी-कभी अनौपचारिक रूप से प्रैट पार्सर के रूप में जाना जाता है।

अतः शब्दार्थ की दृष्टि से, सीजीओएल अनिवार्य रूप से कुछ अतिरिक्त रीडर और प्रिंटर समर्थन के साथ केवल सामान्य लिस्प का उपयोग किया जाता है।

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

वाक्यविन्यास

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

 for i in 1 to n do
   for k in 1 to n do
     (ac := 0;
      for j in 1 to n do
         ac := ac + a(i,j)*b(j,k);
      c(i,k) := ac)

सीजीओएल में इंफिक्स किया जाता है . और ऑपरेशन (कॉमन लिस्प का चर्चा करते हुए)। cons फ़ंक्शन) और इन्फ़िक्स @ ऑपरेशन (कॉमन लिस्प का चर्चा करते हुए)। append फ़ंक्शंस ):

a.(b@c) = (a.b)@c

इस प्रकार से उदाहरण मूल कॉमन लिस्प में इस पाठ से मेल खाता है:

(EQUAL (CONS A (APPEND B C)) (APPEND (CONS A B) C))

अतः सीजीओएल का उपयोग करते है of गुणों को पढ़ने और सेट करने के लिए:

'father' of x := 'brother' of relative of y

अंतिम उदाहरण मूल कॉमन लिस्प में इस पाठ से मेल खाता है:

(PUTPROP X (GET (GET Y RELATIVE) 'BROTHER) 'FATHER)

यह दर्शाता है कि सीजीओएल दो तर्कों के फ़ंक्शन को कैसे नोट करता है:

\x,y; 1/वर्ग(x**2 + y**2)

अंतिम उदाहरण मूल कॉमन लिस्प में इस पाठ से मेल खाता है:

(LAMBDA (X Y) (QUOTIENT 1 (SQRT (PLUS (EXPT X 2) (EXPT Y 2)))))

सीजीओएल का वाक्यविन्यास डेटा-संचालित होता है और इसलिए परिवर्तनीय और विस्तार योग्य दोनों होते है।

स्थिति और स्रोत कोड

इस प्रकार से सीजीओएल को अरमेड बीअर कॉमन लिस्प पर काम करने के लिए जाना जाता है।[6]

किन्तु सीजीओएल स्रोत कोड और इसकी चर्चाओं वाली कुछ पाठ फ़ाइलें कार्नेगी-मेलन विश्वविद्यालय के आर्टिफिशियल इंटेलिजेंस रिपोजिटरी से फ्रीवेयर के रूप में उपलब्ध की जाती हैं।[3]

संदर्भ

  1. Pratt, Vaughan R. CGOL - an Algebraic Notation For MACLISP users. January 27, 1977.
  2. Pratt, Vaughan R. CGOL: An Alternative External Representation for LISP Users. AI Working Paper 121. MIT Artificial Intelligence Laboratory (Cambridge, MA). 1976.
  3. 3.0 3.1 CGOL: Algol-like language that compiles into Common Lisp
  4. Pratt, Vaughan R. Top Down Operator Precedence. Proceedings of the ACM Symposium on Principles of Programming Languages. 1973. pp41–51.
  5. Van De Vanter, Michael L. A Formalization and Correctness Proof of the CGOL Language System (Master's Thesis). MIT Laboratory for Computer Science Technical Report MIT-LCS-TR-147 (Cambridge, MA). 1975.
  6. CGOL on ABCL Development of the Armed Bear Common Lisp implementation blog.