Credo che la risposta corretta sia negativa. È necessario distinguere le seguenti domande:
- È possibile scrivere una specifica del software in un linguaggio naturale che non contenga ambiguità?
- È possibile scrivere software in un linguaggio naturale che non contenga ambiguità?
La differenza tra la prima e la seconda domanda riguarda il livello di dettaglio coinvolto, la quantità di interpretazione richiesta e le regole imposte sulla costruzione di frasi nel linguaggio naturale ai fini della scrittura del software o delle specifiche del software.
La risposta alla seconda domanda è affermativa. Dato un sottogruppo opportunamente vincolato di un linguaggio naturale con regole concordate per la costruzione e il significato delle frasi, il codice può essere scritto in frasi grammaticali in inglese. Ad esempio, la seguente lingua consente in modo univoco di scrivere le istruzioni di assegnazione:
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.
Cioè, possiamo tradurre sistematicamente il codice scritto in linguaggi di programmazione formale in linguaggi naturali descrivendo ogni procedura. D'altra parte, un specifica del software richiede spesso l'interpretazione. Quindi, se una specifica del software può essere data in modo inequivocabile dipende dal livello di dettaglio coinvolto nelle specifiche. Tuttavia, dato un dominio selezionato su cui si estende la specifica, con particolari operazioni su questo dominio selezionato, è possibile eseguire un processo di traduzione simile. Ad esempio:
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.
dove le dichiarazioni X
, Y
, Z
contengono solo quegli elementi menzionati nella prefazione della specifica e sono scritti in un sottoinsieme adeguatamente formale e concordato di un linguaggio naturale. Le ambiguità riguarderanno quindi come implementare le specifiche, ma ciò è previsto.