Saya percaya jawaban yang benar adalah negatif. Penting untuk membedakan pertanyaan-pertanyaan berikut:
- Apakah mungkin untuk menulis spesifikasi perangkat lunak dalam bahasa alami yang tidak mengandung ambiguitas?
- Apakah mungkin untuk menulis perangkat lunak dalam bahasa alami yang tidak mengandung ambiguitas?
Perbedaan antara pertanyaan pertama dan kedua menyangkut tingkat perincian yang terlibat, jumlah penafsiran yang diperlukan, dan aturan yang dikenakan pada konstruksi kalimat dalam bahasa alami untuk keperluan penulisan perangkat lunak atau spesifikasi perangkat lunak.
Jawaban untuk pertanyaan kedua adalah afirmatif. Mengingat subset terbatas dari bahasa alami dengan aturan yang disepakati untuk konstruksi kalimat dan makna, kode dapat ditulis dalam kalimat bahasa tata bahasa Inggris. Sebagai contoh, bahasa berikut jelas memungkinkan pernyataan tugas penugasan:
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.
Artinya, kita dapat secara sistematis menerjemahkan kode yang ditulis dalam bahasa pemrograman formal ke bahasa alami dengan menjelaskan setiap prosedur. Di sisi lain, spesifikasi perangkat lunak seringkali membutuhkan interpretasi. Dengan demikian, apakah spesifikasi perangkat lunak dapat diberikan secara jelas tergantung pada tingkat detail yang terlibat dalam spesifikasi. Namun, mengingat domain yang dipilih di mana rentang spesifikasi, dengan operasi tertentu pada domain ini dipilih, proses penerjemahan serupa dapat dilakukan. Contohnya:
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.
di mana laporan X
, Y
, Z
hanya berisi item-item yang disebutkan dalam kata pengantar spesifikasi dan ditulis dalam sesuai formal dan disepakati subset dari bahasa alami. Ambiguitas kemudian akan menyangkut bagaimana menerapkan spesifikasi - tetapi ini akan diharapkan.