स्यूडोकोड

कंप्यूटर विज्ञान में, स्यूडोकोड एक कलन विधि या अन्य सिस्टम में चरणों का एक सादा भाषा विवरण है। स्यूडोकोड अक्सर एक सामान्य प्रोग्रामिंग भाषा के संरचनात्मक सम्मेलनों का उपयोग करता है, लेकिन मशीन पढ़ने के बजाय मानव पढ़ने के लिए अभिप्रेत है। यह आमतौर पर उन विवरणों को छोड़ देता है जो एल्गोरिथ्म की मशीन की समझ के लिए आवश्यक हैं, जैसे चर घोषणाएं और भाषा-विशिष्ट कोड। प्रोग्रामिंग भाषा को प्राकृतिक भाषा विवरण विवरण के साथ संवर्धित किया जाता है, जहाँ सुविधाजनक हो, या कॉम्पैक्ट गणितीय संकेतन के साथ। स्यूडोकोड का उपयोग करने का उद्देश्य यह है कि पारंपरिक प्रोग्रामिंग भाषा कोड की तुलना में लोगों के लिए इसे समझना आसान है, और यह एक एल्गोरिथम के प्रमुख सिद्धांतों का एक कुशल और पर्यावरण-स्वतंत्र विवरण है। यह आमतौर पर पाठ्य पुस्तकों और वैज्ञानिक प्रकाशनों में एल्गोरिदम को दस्तावेज करने और सॉफ्टवेयर और अन्य एल्गोरिदम की योजना बनाने में उपयोग किया जाता है।

स्यूडोकोड सिंटेक्स (प्रोग्रामिंग भाषाएं) के लिए कोई व्यापक मानक मौजूद नहीं है, क्योंकि स्यूडोकोड में एक प्रोग्राम निष्पादन योग्य प्रोग्राम नहीं है; हालाँकि, कुछ सीमित मानक मौजूद हैं (जैसे शैक्षणिक मूल्यांकन के लिए)। स्यूडोकोड कंकाल (कंप्यूटर प्रोग्रामिंग) जैसा दिखता है, जो त्रुटियों के बिना संकलक हो सकता है। फ़्लोचार्ट्स, DRAKON|ड्रैकन-चार्ट्स और एकीकृत मॉडलिंग भाषा (UML) चार्ट्स को स्यूडोकोड के ग्राफ़िकल विकल्प के रूप में सोचा जा सकता है, लेकिन कागज पर अधिक स्थान की आवश्यकता होती है। HAGGIS जैसी भाषाएं प्रोग्रामिंग भाषाओं में लिखे स्यूडोकोड और कोड के बीच की खाई को पाटती हैं।

आवेदन
कंप्यूटर विज्ञान और संख्यात्मक संगणना से संबंधित पाठ्यपुस्तकें और वैज्ञानिक प्रकाशन अक्सर एल्गोरिदम के विवरण में स्यूडोकोड का उपयोग करते हैं, ताकि सभी प्रोग्रामर उन्हें समझ सकें, भले ही वे सभी समान प्रोग्रामिंग भाषाओं को न जानते हों। पाठ्यपुस्तकों में, आम तौर पर एक परिचयात्मक परिचय होता है जो उपयोग में आने वाले विशेष सम्मेलनों की व्याख्या करता है। स्यूडोकोड के विवरण का स्तर कुछ मामलों में औपचारिक सामान्य-उद्देश्य वाली भाषाओं के समान हो सकता है।

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

सिंटेक्स
स्यूडोकोड आमतौर पर वास्तव में किसी विशेष भाषा के वाक्य - विन्यास नियमों का पालन नहीं करता है; कोई व्यवस्थित मानक रूप नहीं है। कुछ लेखक कुछ पारंपरिक प्रोग्रामिंग भाषा से नियंत्रण संरचनाओं से शैली और वाक्य रचना उधार लेते हैं, हालांकि यह हतोत्साहित किया जाता है। कुछ वाक्यविन्यास स्रोतों में फोरट्रान, पास्कल (प्रोग्रामिंग भाषा), बुनियादी, सी (प्रोग्रामिंग भाषा), सी ++, जावा (प्रोग्रामिंग भाषा), लिस्प (प्रोग्रामिंग भाषा), और एल्गोल शामिल हैं। परिवर्तनीय घोषणाएं आम तौर पर छोड़ी जाती हैं। फ़ंक्शन कॉल और कोड के ब्लॉक, जैसे लूप के भीतर मौजूद कोड, अक्सर एक-पंक्ति प्राकृतिक भाषा वाक्य द्वारा प्रतिस्थापित किए जाते हैं।

लेखक के आधार पर, स्यूडोकोड शैली में व्यापक रूप से भिन्न हो सकता है, एक चरम पर वास्तविक प्रोग्रामिंग भाषा की निकट-सटीक नकल से, दूसरे पर स्वरूपित गद्य के विवरण के लिए।

यह स्यूडोकोड का एक उदाहरण है (गणितीय गेम फिज बज़ के लिए):

गणितीय शैली स्यूडोकोड
संख्यात्मक संगणना में, स्यूडोकोड में अक्सर गणितीय अंकन होते हैं, आमतौर पर सेट सिद्धांत और मैट्रिक्स (गणित) सिद्धांत से, एक पारंपरिक प्रोग्रामिंग भाषा के नियंत्रण संरचनाओं के साथ मिश्रित, और शायद प्राकृतिक भाषा विवरण भी। यह एक कॉम्पैक्ट और अक्सर अनौपचारिक संकेतन है जिसे गणितीय रूप से प्रशिक्षित लोगों की एक विस्तृत श्रृंखला द्वारा समझा जा सकता है, और अक्सर गणितीय एल्गोरिदम का वर्णन करने के तरीके के रूप में उपयोग किया जाता है। उदाहरण के लिए, योग ऑपरेटर (पूंजी-सिग्मा संकेतन) या उत्पाद ऑपरेटर (राजधानी-पाई संकेतन) एक अभिव्यक्ति में फॉर-लूप और चयन संरचना का प्रतिनिधित्व कर सकता है: Return $\sum_{k\in S} x_k$ आम तौर पर गैर-ASCII टाइप बैठना का उपयोग गणितीय समीकरणों के लिए किया जाता है, उदाहरण के लिए मार्कअप भाषाओं, जैसे TeX या MathML, या मालिकाना सूत्र संपादकों के माध्यम से।

गणितीय शैली स्यूडोकोड को कभी-कभी पिजिन कोड के रूप में संदर्भित किया जाता है, उदाहरण के लिए पिजिन ALGOL (अवधारणा की उत्पत्ति), पिजिन फोरट्रान, पिजिन बेसिक, पिजिन पास्कल (प्रोग्रामिंग भाषा), पिजिन सी (प्रोग्रामिंग भाषा), और पिजिन लिस्प (प्रोग्रामिंग भाषा).

उदाहरण
यहाँ Ford-Fulkerson एल्गोरिथम के लिए गणितीय-शैली स्यूडोकोड का एक लंबा उदाहरण दिया गया है:

एल्गोरिथम फोर्ड-फुलकर्सन है इनपुट: प्रवाह क्षमता सी के साथ ग्राफ जी, स्रोत नोड एस, सिंक नोड 'टी' आउटपुट: फ्लो एफ ऐसा है कि एफ एस से टी तक अधिकतम है '' (ध्यान दें कि एफ(u,v) नोड यू से नोड वी तक प्रवाह है, और सी(u,v) नोड यू से नोड वी तक प्रवाह क्षमता है) 'प्रत्येक के लिए' बढ़त (यू, वी) 'इन' जीE करना एफ(u, v) ← 0 एफ(v, u) ← 0 जबकि अवशिष्ट नेटवर्क G में s से t तक एक पथ p मौजूद हैf करना चलो सीf अवशिष्ट नेटवर्क जी की प्रवाह क्षमता होf सीf(पी) ← मिनट {सीf(यू, वी) | (यू, वी) 'इन' पी} 'प्रत्येक के लिए' बढ़त (यू, वी) 'में' पी 'करो' एफ(u, v) ← एफ(u, v) + सीf(पी) एफ(v, u) ← -च(u, v) वापसी च

प्रोग्रामिंग भाषाओं में प्राकृतिक भाषा व्याकरण
कंप्यूटर प्रोग्रामिंग में प्राकृतिक भाषा व्याकरण के तत्वों को लाने के विभिन्न प्रयासों ने हाइपरटॉक, लिंगो (प्रोग्रामिंग भाषा), एप्पलस्क्रिप्ट, एसक्यूएल, सूचित करना और कुछ हद तक पायथन (प्रोग्रामिंग भाषा) जैसी प्रोग्रामिंग भाषाओं का निर्माण किया है। इन भाषाओं में, कोष्ठक और अन्य विशेष वर्णों को पूर्वसर्गों द्वारा प्रतिस्थापित किया जाता है, जिसके परिणामस्वरूप काफी वर्बोज़ कोड होता है। ये भाषाएं आमतौर पर गतिशील टाइपिंग होती हैं, जिसका अर्थ है कि चर घोषणाएं और अन्य बॉयलरप्लेट कोड को छोड़ा जा सकता है। ऐसी भाषाएँ भाषा के ज्ञान के बिना किसी व्यक्ति के लिए कोड को समझना और शायद भाषा सीखना भी आसान बना सकती हैं। हालाँकि, प्राकृतिक भाषा की समानता आमतौर पर वास्तविक की तुलना में अधिक दिखावटी होती है। सिंटैक्स नियम पारंपरिक प्रोग्रामिंग की तरह ही सख्त और औपचारिक हो सकते हैं, और जरूरी नहीं कि कार्यक्रमों के विकास को आसान बनाते हों।

गणितीय प्रोग्रामिंग भाषाएं
एल्गोरिदम के दस्तावेज़ीकरण के लिए गणितीय स्यूडोकोड (जिसमें सेट सिद्धांत संकेतन या मैट्रिक्स संचालन शामिल है) का उपयोग करने का एक विकल्प एक औपचारिक गणितीय प्रोग्रामिंग भाषा का उपयोग करना है जो गैर-ASCII गणितीय संकेतन और प्रोग्राम नियंत्रण संरचनाओं का मिश्रण है। फिर कोड को मशीन द्वारा पार्स और व्याख्या किया जा सकता है।

कई औपचारिक विनिर्देश भाषाओं में विशेष वर्णों का उपयोग करते हुए सेट थ्योरी नोटेशन शामिल हैं। उदाहरण हैं:
 * जेड अंकन
 * वियना विकास पद्धति विशिष्टता भाषा (VDM-SL)।

कुछ सरणी प्रोग्रामिंग भाषाओं में पारंपरिक नियंत्रण संरचनाओं के साथ मिश्रित गैर-ASCII फ़ार्मुलों के रूप में सदिश अभिव्यक्ति और मैट्रिक्स संचालन शामिल हैं। उदाहरण हैं:
 * APL (प्रोग्रामिंग भाषा) (APL), और इसकी बोलियाँ APLX और A+ (प्रोग्रामिंग भाषा)|A+।
 * MathCAD।

यह भी देखें

 * अवधारणा प्रोग्रामिंग
 * ड्रैकोन|ड्रैकन-चार्ट
 * फ़्लोचार्ट
 * साक्षर प्रोग्रामिंग
 * कार्यक्रम डिजाइन भाषा
 * लघु कूट संख्या
 * संरचित अंग्रेजी

बाहरी संबंध

 * A pseudocode standard
 * Collected Algorithms of the ACM
 * Pseudocode Guidelines, PDF file.