सीजीओएल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:
{{about|प्रोग्रामिंग भाषा|सेलुलर ऑटोमेटा|कॉनवे का जीवन का खेल}}
{{about|प्रोग्रामिंग भाषा|सेलुलर ऑटोमेटा|कॉनवे का जीवन का खेल}}
{{Infobox programming language
{{Infobox programming language
| name                  = CGOL
| name                  = सीजीओएल
| logo                  =  
| logo                  =  
| paradigm              = [[procedural programming|procedural]], [[Imperative programming language|imperative]], [[structured programming|structured]]
| paradigm              = [[प्रक्रियात्मक प्रोग्रामिंग|प्रक्रियात्मक]], [[अनिवार्य प्रोग्रामिंग भाषा|अनिवार्य]], [[संरचित प्रोग्रामिंग|संरचित]]
| year                  = 1973
| year                  = 1973
| designer              = [[Vaughan Ronald Pratt|Vaughan Pratt]]
| designer              = [[वॉन रोनाल्ड प्रैट|वॉन प्रैट]]
| developer              =  
| developer              =  
| latest_release_version =  
| latest_release_version =  
Line 15: Line 15:
| implementations        =  
| implementations        =  
| dialects              =  
| dialects              =  
| influenced_by          = [[ALGOL]], [[FORTRAN]], [[MLisp]]
| influenced_by          = [[अल्गोल]], [[फोरट्रान]], [[एमलिस्प]]
| influenced            =  
| influenced            =  
| operating_system      =  
| operating_system      =  
Line 21: Line 21:
| website                =  
| website                =  
}}
}}
'''सीजीओएल (उच्चारण "गोल देखें") लिस्प  वैकल्पिक वाक्यविन्यास है जो [[लिस्प (प्रोग्रामिंग भाषा)]] के लिए  विस्तार योग्य बीजीय संकेतन की विशेषता है। इसे वॉन प्रैट द्वारा [[MACLISP|मैक्लिस्प]]  के लिए डिज़ाइन किया गया था और बाद में [[ सामान्य लिस्प | सामान्य लिस्प]] में पोर्ट किया गया।'''
   


सीजीओएल<ref name="pratt maclisp" /> <ref name="pratt lisp" /> (उच्चारण "गोल देखें") [[लिस्प (प्रोग्रामिंग भाषा)]] के लिए एक एक्स्टेंसिबल बीजगणितीय नोटेशन की विशेषता वाला एक वैकल्पिक वाक्यविन्यास है। इसे वॉन प्रैट द्वारा [[MACLISP|मैक्लिस्प]] के लिए डिज़ाइन किया गया था और बाद में [[ सामान्य लिस्प | सामान्य लिस्प]] में पोर्ट किया जाता है ।<ref name="common lisp" />
'''सीजीओएल'''<ref name="pratt maclisp" /> <ref name="pratt lisp" /> (उच्चारण "गोल देखें") [[लिस्प (प्रोग्रामिंग भाषा)]] के लिए एक एक्स्टेंसिबल बीजगणितीय नोटेशन की विशेषता वाला एक वैकल्पिक वाक्यविन्यास है। इसे वॉन प्रैट द्वारा [[MACLISP|मैक्लिस्प]] के लिए डिज़ाइन किया गया था और बाद में [[ सामान्य लिस्प |सामान्य लिस्प]] में पोर्ट किया जाता है ।<ref name="common lisp" />


इस प्रकार से सीजीओएल का नोटेशन, लिस्प के पारंपरिक, समान रूप से कोष्ठक में [[उपसर्ग संकेतन]] वाक्यविन्यास के अतिरिक्त , [[ALGOL|एल्गोल]] की शैली में पारंपरिक [[इन्फिक्स संकेतन]] होती है। और सीजीओएल [[पार्सर]] [[ ऊपर से नीचे विश्लेषण | टॉप-डाउन ऑपरेटर प्राथमिकता]] के लिए प्रैट के डिज़ाइन पर आधारित होते है जिससे टॉप-डाउन [[ऑपरेटर-प्राथमिकता पार्सर]] पार्सर,<ref name="pratt tdop" /><ref name="de vanter" /> कभी-कभी अनौपचारिक रूप से [[प्रैट पार्सर]] के रूप में जाना जाता है।
इस प्रकार से सीजीओएल का नोटेशन, लिस्प के पारंपरिक, समान रूप से कोष्ठक में [[उपसर्ग संकेतन]] वाक्यविन्यास के अतिरिक्त , [[ALGOL|एल्गोल]] की शैली में पारंपरिक [[इन्फिक्स संकेतन]] होती है। और सीजीओएल [[पार्सर]] [[ ऊपर से नीचे विश्लेषण |टॉप-डाउन ऑपरेटर प्राथमिकता]] के लिए प्रैट के डिज़ाइन पर आधारित होते है जिससे टॉप-डाउन [[ऑपरेटर-प्राथमिकता पार्सर]] पार्सर,<ref name="pratt tdop" /><ref name="de vanter" /> कभी-कभी अनौपचारिक रूप से [[प्रैट पार्सर]] के रूप में जाना जाता है।


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


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


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


सामान्यतः उपयोग किए जाने वाले कई सामान्य लिस्प परिचालनों के लिए विशेष नोटेशन उपलब्ध किये गए हैं। इस प्रकार से उदाहरण के लिए, कोई मैट्रिक्स मल्टीप्ल रूटीन को निम्नलिखित रूप से लिख सकते है:
सामान्यतः उपयोग किए जाने वाले कई सामान्य लिस्प परिचालनों के लिए विशेष नोटेशन उपलब्ध किये गए हैं। इस प्रकार से उदाहरण के लिए, कोई मैट्रिक्स मल्टीप्ल रूटीन को निम्नलिखित रूप से लिख सकते है:
{{sxhl|2=pascal|1=<nowiki/>
{{sxhl|2=pascal|1=<nowiki/>
  for i in 1 to n do
  for i in 1 to n do
Line 42: Line 42:
       c(i,k) := ac)
       c(i,k) := ac)
}}
}}
सीजीओएल में इंफिक्स किया जाता है <code>.</code> और ऑपरेशन (कॉमन लिस्प का चर्चा करते हुए)। <code>cons</code> फ़ंक्शन) और इन्फ़िक्स <code>@</code> ऑपरेशन (कॉमन लिस्प का चर्चा करते हुए)। <code>append</code> फ़ंक्शंस ):
सीजीओएल में इंफिक्स किया जाता है <code>.</code> और ऑपरेशन (कॉमन लिस्प का चर्चा करते हुए)। <code>cons</code> फ़ंक्शन) और इन्फ़िक्स <code>@</code> ऑपरेशन (कॉमन लिस्प का चर्चा करते हुए)। <code>append</code> फ़ंक्शंस ):


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


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


<syntaxhighlight lang=lisp>
<syntaxhighlight lang=lisp>
(EQUAL (CONS A (APPEND B C)) (APPEND (CONS A B) C))
(EQUAL (CONS A (APPEND B C)) (APPEND (CONS A B) C))
</syntaxhighlight>
</syntaxhighlight>
अतः सीजीओएल का उपयोग करते है <code>of</code> गुणों को पढ़ने और सेट करने के लिए:
अतः सीजीओएल का उपयोग करते है <code>of</code> गुणों को पढ़ने और सेट करने के लिए:


{{sxhl|2=pascal|1='father' of x := 'brother' of relative of y}}
{{sxhl|2=pascal|1='father' of x := 'brother' of relative of y}}


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


<syntaxhighlight lang=lisp>
<syntaxhighlight lang=lisp>
(PUTPROP X (GET (GET Y RELATIVE) 'BROTHER) 'FATHER)
(PUTPROP X (GET (GET Y RELATIVE) 'BROTHER) 'FATHER)
</syntaxhighlight>
</syntaxhighlight>
यह दर्शाता है कि सीजीओएल दो तर्कों के फ़ंक्शन को कैसे नोट करता है:
यह दर्शाता है कि सीजीओएल दो तर्कों के फ़ंक्शन को कैसे नोट करता है:


  \x,y; 1/वर्ग(x**2 + y**2)
  \x,y; 1/वर्ग(x**2 + y**2)
Line 69: Line 69:
(LAMBDA (X Y) (QUOTIENT 1 (SQRT (PLUS (EXPT X 2) (EXPT Y 2)))))
(LAMBDA (X Y) (QUOTIENT 1 (SQRT (PLUS (EXPT X 2) (EXPT Y 2)))))
</syntaxhighlight>
</syntaxhighlight>
सीजीओएल का वाक्यविन्यास डेटा-संचालित होता है और इसलिए परिवर्तनीय और विस्तार योग्य दोनों होते है।
सीजीओएल का वाक्यविन्यास डेटा-संचालित होता है और इसलिए परिवर्तनीय और विस्तार योग्य दोनों होते है।


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


इस प्रकार से सीजीओएल को [[सशस्त्र भालू आम लिस्प|अरमेड बीअर कॉमन लिस्प]] पर काम करने के लिए जाना जाता है।<ref name="armed bear"/>
इस प्रकार से सीजीओएल को [[सशस्त्र भालू आम लिस्प|अरमेड बीअर कॉमन लिस्प]] पर काम करने के लिए जाना जाता है।<ref name="armed bear"/>


किन्तु सीजीओएल स्रोत कोड और इसकी चर्चाओं वाली कुछ पाठ फ़ाइलें कार्नेगी-मेलन विश्वविद्यालय के आर्टिफिशियल इंटेलिजेंस रिपोजिटरी से फ्रीवेयर के रूप में उपलब्ध की जाती हैं।<ref name="common lisp"/>
किन्तु सीजीओएल स्रोत कोड और इसकी चर्चाओं वाली कुछ पाठ फ़ाइलें कार्नेगी-मेलन विश्वविद्यालय के आर्टिफिशियल इंटेलिजेंस रिपोजिटरी से फ्रीवेयर के रूप में उपलब्ध की जाती हैं।<ref name="common lisp"/>

Revision as of 18:17, 7 July 2023

सीजीओएल
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.