Doğru cevabın olumsuz olduğuna inanıyorum. Aşağıdaki soruları ayırt etmek gerekir:
- Belirsizlik içermeyen doğal bir dilde yazılım belirtimi yazmak mümkün müdür?
- Belirsizlik içermeyen doğal bir dilde yazılım yazmak mümkün müdür?
Birinci ve ikinci soru arasındaki fark, ilgili ayrıntı düzeyi, gerekli yorum miktarı ve yazılım veya yazılım belirtimi yazmak amacıyla doğal dilde cümle oluşturulmasına uygulanan kurallar ile ilgilidir.
İkinci sorunun cevabı olumludur. Cümlenin oluşturulması ve anlamı için üzerinde anlaşmaya varılmış kurallara sahip, doğal bir dilin uygun şekilde kısıtlanmış bir altkümesi göz önüne alındığında, kod dilbilgisi İngilizce cümlelerle yazılabilir. Örneğin, aşağıdaki dil açık bir şekilde atama ifadeleri yazılmasına izin verir:
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.
Yani, resmi programlama dillerinde yazılan kodu her prosedürü açıklayarak sistematik olarak doğal dillere çevirebiliriz . Öte yandan, bir yazılım belirtimi genellikle yorum gerektirir. Bu nedenle, bir yazılım spesifikasyonunun açık bir şekilde verilip verilemeyeceği, spesifikasyonda yer alan detay seviyesine bağlıdır. Bununla birlikte, spesifikasyonun değiştiği seçilmiş bir domain göz önüne alındığında, bu domain üzerindeki belirli işlemler seçili olarak benzer bir çeviri işlemi gerçekleştirilebilir. Örneğin:
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.
ifadeleri nerede X
, Y
, Z
şartname Önsözde de belirtildiği sadece bu öğeleri içeren ve uygun bir şekilde resmi yazılmış ve üzerinde anlaşılan bir doğal dilin alt kümesi vardır. Belirsizlikler daha sonra şartnamenin nasıl uygulanacağı ile ilgili olacaktır - ancak bu beklenecektir.