स्यूडोकोड
कंप्यूटर विज्ञान में, स्यूडोकोड कलन विधि या अन्य सिस्टम में चरणों का सादा भाषा विवरण है। स्यूडोकोड अक्सर सामान्य प्रोग्रामिंग भाषा के संरचनात्मक सम्मेलनों का उपयोग करता है, परन्तु मशीन पढ़ने के बजाय मानव पढ़ने के लिए अभिप्रेत है। यह सामान्यतः उन विवरणों का त्याग करता है जो एल्गोरिथ्म की मशीन की समझ के लिए आवश्यक हैं, जैसे चर घोषणाएं एवं भाषा-विशिष्ट कोड। प्रोग्रामिंग भाषा को प्राकृतिक भाषा विवरण विवरण के साथ, जहाँ सुविधाजनक हो, या कॉम्पैक्ट गणितीय संकेतन के साथ संवर्धित किया जाता है। स्यूडोकोड का उपयोग करने का उद्देश्य यह है कि पारंपरिक प्रोग्रामिंग भाषा कोड की तुलना में लोगों के लिए इसे समझना सरल है, एवं यह एल्गोरिथम के प्रमुख सिद्धांतों का कुशल एवं पर्यावरण-स्वतंत्र विवरण है। यह सामान्यतः पाठ्य पुस्तकों एवं वैज्ञानिक प्रकाशनों में एल्गोरिदम को दस्तावेज करने एवं सॉफ्टवेयर एवं अन्य एल्गोरिदम की योजना बनाने में उपयोग किया जाता है।
स्यूडोकोड सिंटेक्स (प्रोग्रामिंग भाषाएं) के लिए कोई व्यापक मानक उपस्थित नहीं है, क्योंकि स्यूडोकोड में कोई प्रोग्राम निष्पादन योग्य प्रोग्राम नहीं है; यद्यपि, कुछ सीमित मानक उपस्थित हैं (जैसे शैक्षणिक मूल्यांकन के लिए)। स्यूडोकोड कंकाल (कंप्यूटर प्रोग्रामिंग) जैसा दिखता है, जो त्रुटियों के आभाव में संकलक हो सकता है। फ़्लोचार्ट्स, ड्रैकन-चार्ट्स(DRAKON) एवं एकीकृत मॉडलिंग भाषा ((यूएमएल) चार्ट्स को स्यूडोकोड का ग्राफ़िकल विकल्प के रूप में विचार जा सकता है, परन्तु कागज पर अधिक स्थान की आवश्यकता होती है। HAGGIS जैसी भाषाएं प्रोग्रामिंग भाषाओं में लिखे स्यूडोकोड एवं कोड के मध्य की खाई को पाटती हैं।
अनुप्रयोग
कंप्यूटर विज्ञान एवं भले संख्यात्मक संगणना से संबंधित पाठ्यपुस्तकें एवं वैज्ञानिक प्रकाशन अधिकांशतः एल्गोरिदम के विवरण में स्यूडोकोड का उपयोग करते हैं, जिससे सभी प्रोग्रामर उन्हें समझ सकें, यदि वे सभी समान प्रोग्रामिंग भाषाओं को न जानते हों। पाठ्यपुस्तकों में, सामान्यतः परिचयात्मक परिचय होता है जो उपयोग में आने वाले विशेष सम्मेलनों की व्याख्या करता है। स्यूडोकोड के विवरण का स्तर कुछ हानि में औपचारिक सामान्य-उद्देश्य वाली भाषाओं के समान हो सकता है।
प्रोग्रामर जिसे विशिष्ट एल्गोरिथ्म को लागू करने की आवश्यकता होती है, विशेष रूप से अपरिचित, अधिकांशतः स्यूडोकोड विवरण के साथ शुरू होता है, एवं फिर उस विवरण को लक्ष्य प्रोग्रामिंग भाषा में अनुवादित करता है एवं अन्य प्रोग्राम के साथ सही ढंग से इंटरैक्ट करने के लिए इसे संशोधित करता है। प्रोग्रामर किसी प्रोजेक्ट को उसकी वास्तविक भाषा में लिखने से पहले कागज पर स्यूडोकोड टॉप-डाउन एवं बॉटम-अप डिज़ाइन के रूप में, चरणों की प्रक्रिया के रूप में स्केच करके भी प्रारम्भ कर सकते है |
सिंटेक्स
स्यूडोकोड सामान्यतः वास्तव में किसी विशेष भाषा के वाक्य-विन्यास नियमों का पालन नहीं करता है। इसका कोई व्यवस्थित मानक रूप नहीं है। कुछ लेखक कुछ पारंपरिक प्रोग्रामिंग भाषा से नियंत्रण संरचनाओं से शैली एवं वाक्य रचना उधार लेते हैं, यद्यपि यह हतोत्साहित किया जाता है।[1][2] कुछ वाक्यविन्यास स्रोतों में फोरट्रान, पास्कल (प्रोग्रामिंग भाषा), बेसिक, सी (प्रोग्रामिंग भाषा), सी ++, जावा (प्रोग्रामिंग भाषा), लिस्प (प्रोग्रामिंग भाषा), एवं एल्गोल शामिल हैं। परिवर्तनीय घोषणाएं सामान्यतः छोड़ी जाती हैं। फ़ंक्शन कॉल एवं कोड के ब्लॉक, जैसे लूप के भीतर उपस्थित कोड, प्रायः पंक्ति प्राकृतिक भाषा वाक्य द्वारा प्रतिस्थापित किए जाते हैं।
लेखक के आधार पर, स्यूडोकोड शैली में व्यापक रूप से भिन्न हो सकता है, किसी चरम पर वास्तविक प्रोग्रामिंग भाषा की निकट-सटीक नकल से, दूसरे पर स्वरूपित गद्य के विवरण के लिए।
यह स्यूडोकोड का उदाहरण है (गणितीय गेम फिज बज़ के लिए):
Fortran style pseudocode: program fizzbuzz
Do i = 1 to 100
set print_number to true
If i is divisible by 3
print "Fizz"
set print_number to false
If i is divisible by 5
print "Buzz"
set print_number to false
If print_number, print i
print a newline
end do
|
Pascal style pseudocode: procedure fizzbuzz;
for i := 1 to 100 do
print_number := true;
if i is divisible by 3 then begin
print "Fizz";
print_number := false;
end;
if i is divisible by 5 then begin
print "Buzz";
print_number := false;
end;
if print_number, print i;
print a newline;
end
|
C style pseudocode: fizzbuzz() {
for (i = 1; i <= 100; i++) {
print_number = true;
if (i is divisible by 3) {
print "Fizz";
print_number = false;
}
if (i is divisible by 5) {
print "Buzz";
print_number = false;
}
if (print_number) print i;
print a newline;
}
}
|
Structured Basic style pseudocode: Sub fizzbuzz()
For i = 1 to 100
print_number = True
If i is divisible by 3 Then
Print "Fizz"
print_number = False
End If
If i is divisible by 5 Then
Print "Buzz"
print_number = False
End If
If print_number = True Then print i
Print a newline
Next i
End Sub
|
गणितीय शैली स्यूडोकोड
संख्यात्मक संगणना में, स्यूडोकोड में अक्सर गणितीय अंकन होते हैं, सामान्यतः सेट सिद्धांत एवं मैट्रिक्स (गणित) सिद्धांत से, पारंपरिक प्रोग्रामिंग भाषा के नियंत्रण संरचनाओं के साथ मिश्रित, एवं संभवतः प्राकृतिक भाषा विवरण भी। यह कॉम्पैक्ट एवं अक्सर अनौपचारिक संकेतन है जिसे गणितीय रूप से प्रशिक्षित लोगों की विस्तृत श्रृंखला द्वारा समझा जा सकता है, एवं अक्सर गणितीय एल्गोरिदम का वर्णन करने के उपाय के रूप में उपयोग किया जाता है। उदाहरण के लिए, योग ऑपरेटर (पूंजी-सिग्मा संकेतन) या उत्पाद ऑपरेटर (राजधानी-पाई संकेतन) अभिव्यक्ति में फॉर-लूप एवं चयन संरचना का प्रतिनिधित्व कर सकता है: Return सामान्यतः-ASCII टाइप बैठना का उपयोग गणितीय समीकरणों के लिए किया जाता है, उदाहरण के लिए मार्कअप भाषाओं, जैसे TeX या MathML, या मालिकाना सूत्र संपादको के माध्यम से।
गणितीय शैली स्यूडोकोड को कभी-कभी पिजिन कोड के रूप में संदर्भित किया जाता है, उदाहरण के लिए पिजिन ALGOL (अवधारणा की उत्पत्ति), पिजिन फोरट्रान, पिजिन बेसिक, पिजिन पास्कल (प्रोग्रामिंग भाषा), पिजिन सी (प्रोग्रामिंग भाषा), एवं पिजिन लिस्प (प्रोग्रामिंग भाषा) .
सामान्य गणितीय प्रतीक
Type of operation | प्रतीक | उदाहरण |
---|---|---|
Assignment | ← or := | c ← 2πr , c := 2πr
|
Comparison | =, ≠, <, >, ≤, ≥ | |
Arithmetic | +, −, ×, /, mod | |
Floor/ceiling | ⌊, ⌋, ⌈, ⌉ | a ← ⌊b⌋ + ⌈c⌉
|
Logical | and, or | |
Sums, products | Σ Π | h ← Σa∈A 1/a
|
उदाहरण
यहाँ Ford-Fulkerson एल्गोरिथम के लिए गणितीय-शैली स्यूडोकोड का एक लंबा उदाहरण दिया गया है:
algorithm ford-fulkerson is input: Graph G with flow capacity c, source node s, sink node t output: Flow f such that f is maximal from s to t (Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v) for each edge (u, v) in GE do f(u, v) ← 0 f(v, u) ← 0 while there exists a path p from s to t in the residual network Gf do let cf be the flow capacity of the residual network Gf cf(p) ← min{cf(u, v) | (u, v) in p} for each edge (u, v) in p do f(u, v) ← f(u, v) + cf(p) f(v, u) ← −f(u, v) return f
स्यूडोकोड शैली की भाषाओं का मशीन संकलन
प्रोग्रामिंग भाषाओं में प्राकृतिक भाषा व्याकरण
कंप्यूटर प्रोग्रामिंग में प्राकृतिक भाषा व्याकरण के तत्वों को लाने के विभिन्न प्रयासों ने हाइपरटॉक, लिंगो (प्रोग्रामिंग भाषा), एप्पलस्क्रिप्ट, एसक्यूएल, सूचित करना एवं कुछ हद तक पायथन (प्रोग्रामिंग भाषा) जैसी प्रोग्रामिंग भाषाओं का निर्माण किया है। इन भाषाओं में, कोष्ठक एवं अन्य विशेष वर्णों को पूर्वसर्गों द्वारा प्रतिस्थापित किया जाता है, जिसके परिणामस्वरूप काफी वर्बोज़ कोड होता है। ये भाषाएं सामान्यतः गतिशील टाइपिंग होती हैं, जिसका अर्थ है कि चर घोषणाएं एवं अन्य बॉयलरप्लेट कोड को त्यागा जा सकता है। ऐसी भाषाएँ भाषा के ज्ञान के आभाव में किसी व्यक्ति के लिए कोड को समझना एवं संभवतः भाषा सीखना भी आसान बना सकती हैं। यद्यपि, प्राकृतिक भाषा की समानता सामान्यतः वास्तविक की तुलना में अधिक दिखावटी होती है। सिंटैक्स नियम पारंपरिक प्रोग्रामिंग के जैसे ही सख्त एवं औपचारिक हो सकते हैं, एवं आवश्यक नहीं कि कार्यक्रमों के विकास को आसान बनाते हों।
गणितीय प्रोग्रामिंग भाषाएं
एल्गोरिदम के दस्तावेज़ीकरण के लिए गणितीय स्यूडोकोड (जिसमें सेट सिद्धांत संकेतन या मैट्रिक्स संचालन शामिल है) का उपयोग करने का विकल्प किसी औपचारिक गणितीय प्रोग्रामिंग भाषा का उपयोग करना है जो गैर-ASCII गणितीय संकेतन एवं प्रोग्राम नियंत्रण संरचनाओं का मिश्रण है।
कई औपचारिक विनिर्देश भाषाओं में विशेष वर्णों का उपयोग करते हुए सेट थ्योरी नोटेशन उपस्थित हैं। उदाहरण हैं:
- जेड अंकन
- वियना विकास पद्धति विशिष्टता भाषा (VDM-SL)।
कुछ सरणी प्रोग्रामिंग भाषाओं में पारंपरिक नियंत्रण संरचनाओं के साथ मिश्रित गैर-ASCII फ़ार्मुलों के रूप में सदिश अभिव्यक्ति एवं मैट्रिक्स संचालन शामिल हैं। उदाहरण हैं:
यह भी देखें
- अवधारणा प्रोग्रामिंग
- ड्रैकन-चार्ट
- फ़्लोचार्ट
- साक्षर प्रोग्रामिंग
- कार्यक्रम डिजाइन भाषा
- लघु कूट संख्या
- संरचित अंग्रेजी
संदर्भ
- ↑ McConnell, Steve (2004). Code Complete. p. 54. ISBN 978-0-7356-1967-8.
Avoid syntactic elements from the target programming language
- ↑ Invitation to Computer Science, 8th Edition by Schneider/Gersting, "Keep statements language independent" as quoted in this stackexchange question
अग्रिम पठन
- Zobel, Justin (2013). "Algorithms". Writing for Computer Science (Second ed.). Springer. ISBN 978-1-85233-802-2.