सीजीओएल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{short description|Programming language}}
{{short description|Programming language}}
{{about|the programming language|the cellular automata|Conway's Game of Life}}
{{about|प्रोग्रामिंग भाषा|सेलुलर ऑटोमेटा|कॉनवे का जीवन का खेल}}
{{Infobox programming language
{{Infobox programming language
| name                  = CGOL
| name                  = CGOL
Line 21: Line 21:
| website                =  
| website                =  
}}
}}
COLL<ref name="pratt lisp"/><ref name="pratt maclisp"/> (उच्चारण देखें गॉल)  वैकल्पिक वाक्यविन्यास है जो [[लिस्प (प्रोग्रामिंग भाषा)]] के लिए  विस्तार योग्य बीजीय संकेतन की विशेषता है। इसे वॉन प्रैट द्वारा [[MACLISP]] के लिए डिज़ाइन किया गया था और बाद में [[ सामान्य लिस्प ]] में पोर्ट किया गया।<ref name="common lisp"/>
'''सीजीओएल  (उच्चारण "गोल देखें") लिस्प वैकल्पिक वाक्यविन्यास है जो [[लिस्प (प्रोग्रामिंग भाषा)]] के लिए  विस्तार योग्य बीजीय संकेतन की विशेषता है। इसे वॉन प्रैट द्वारा [[MACLISP|मैक्लिस्प]] के लिए डिज़ाइन किया गया था और बाद में [[ सामान्य लिस्प | सामान्य लिस्प]] में पोर्ट किया गया।'''


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


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


सीजीओएल को पहले के [[एलआईएसपी 2]] प्रोजेक्ट के पीछे के कुछ आवश्यक विचारों का अधिक सफल अवतार माना जा सकता है। लिस्प 2, एलआईएसपी 1.5 का उत्तराधिकारी था जिसका उद्देश्य ALGOL सिंटैक्स प्रदान करना था। LISP 2 को छोड़ दिया गया, जबकि आज CGOL कोडबेस का उपयोग करना संभव है। ऐसा इसलिए है क्योंकि LISP 2 के विपरीत, CGOL को पोर्टेबल फ़ंक्शंस और लिस्प में लिखे गए मैक्रोज़ के रूप में कार्यान्वित किया जाता है, जिसके लिए होस्ट लिस्प कार्यान्वयन में कोई बदलाव की आवश्यकता नहीं होती है।
अतः शब्दार्थ की दृष्टि से, सीजीओएल अनिवार्य रूप से कुछ अतिरिक्त रीडर और प्रिंटर समर्थन के साथ केवल सामान्य लिस्प का उपयोग किया जाता  है।
 
इस प्रकार से  सीजीओएल को पहले के [[एलआईएसपी 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 40: 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>
Line 62: Line 64:
  \x,y; 1/वर्ग(x**2 + y**2)
  \x,y; 1/वर्ग(x**2 + y**2)


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


<syntaxhighlight lang=lisp>
<syntaxhighlight lang=lisp>
(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"/>
== संदर्भ ==
== संदर्भ ==
<references>
<references>

Revision as of 18:14, 7 July 2023

CGOL
Paradigmprocedural, imperative, structured
द्वारा डिज़ाइन किया गयाVaughan Pratt
पहली प्रस्तुति1973
Influenced by
ALGOL, FORTRAN, MLisp

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

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