मेरा मानना है कि सही उत्तर नकारात्मक है। निम्नलिखित प्रश्नों में अंतर करना आवश्यक है:
- क्या एक प्राकृतिक भाषा में सॉफ़्टवेयर विनिर्देश लिखना संभव है जिसमें अस्पष्टता नहीं है?
- क्या ऐसी प्राकृतिक भाषा में सॉफ़्टवेयर लिखना संभव है जिसमें अस्पष्टता न हो?
पहले और दूसरे प्रश्न के बीच का अंतर शामिल विवरण के स्तर की चिंता करता है, व्याख्या की मात्रा की आवश्यकता है, और सॉफ़्टवेयर या सॉफ़्टवेयर विनिर्देश लिखने के प्रयोजनों के लिए प्राकृतिक भाषा में वाक्यों के निर्माण पर लगाए गए नियम।
दूसरे प्रश्न का उत्तर पुष्टिकारक है। वाक्य निर्माण और अर्थ के लिए सहमत-नियमों के साथ एक प्राकृतिक भाषा के एक उपयुक्त विवश सबसेट को देखते हुए, कोड को व्याकरणिक अंग्रेजी वाक्यों में लिखा जा सकता है। उदाहरण के लिए, निम्नलिखित भाषा असंबद्धता से असाइनमेंट स्टेटमेंट लिखने की अनुमति देती है:
Variables: x,y,z,...
Constants: 1,2,3,...
Rules: (1) if x is a variable and n a constant, then
"The variable x contains the number n" is a sentence.
(2) if x is a variable and n a constant, then
"Assign the number n to the variable x" is a sentence.
यही है, हम औपचारिक रूप से औपचारिक प्रोग्रामिंग भाषाओं में लिखे गए कोड को प्रत्येक प्रक्रिया का वर्णन करके प्राकृतिक भाषाओं में अनुवाद कर सकते हैं । दूसरी ओर, एक सॉफ्टवेयर विनिर्देश को अक्सर व्याख्या की आवश्यकता होती है। इस प्रकार, एक सॉफ्टवेयर विनिर्देश को स्पष्ट रूप से दिया जा सकता है या नहीं यह विनिर्देश में शामिल विस्तार के स्तर पर निर्भर करता है। हालाँकि, एक चयनित डोमेन दिया जाता है, जिस पर विनिर्देशन सीमा होती है, विशेष रूप से चयनित इस डोमेन पर परिचालन के साथ, एक समान अनुवाद प्रक्रिया को अंजाम दिया जा सकता है। उदाहरण के लिए:
Over the domain D supporting operations f,g,h over elements a,b,c in relations
P,R,Q with properties φ,ψ,θ, design a program that does X,Y,Z.
जहां बयान X
, Y
, Z
केवल उन्हीं विनिर्देश की प्रस्तावना में उल्लेख किया आइटम होते हैं और एक उपयुक्त औपचारिक में लिखा और सहमति से एक प्राकृतिक भाषा के सबसेट कर रहे हैं। अस्पष्टता तब चिंता करेगी कि विनिर्देश कैसे लागू किया जाए - लेकिन यह अपेक्षित होगा।