Credo che la risposta corretta sia negativa. È necessario distinguere le seguenti domande:
- È possibile scrivere una specifica 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, la quantità di interpretazione richiesta e le regole imposte per la costruzione di frasi in linguaggio naturale allo scopo di scrivere il software o le specifiche del software.
La risposta alla seconda domanda è affermativa. Dato un sottoinsieme adeguatamente limitato di un linguaggio naturale con regole concordate per la costruzione e il significato della frase, il codice può essere scritto in frasi grammaticali inglesi. Ad esempio, la seguente lingua consente in modo inequivocabile di scrivere dichiarazioni 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 formali in linguaggi naturali descrivendo ciascuna procedura. D'altra parte, una specifica software spesso richiede interpretazione. Pertanto, se una specifica software può essere fornita in modo inequivocabile dipende dal livello di dettaglio coinvolto nella specifica. 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. Per 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 gli elementi menzionati nella prefazione della specifica e sono scritti in una opportunamente formale e concordato sottoinsieme di un linguaggio naturale. Le ambiguità riguarderanno quindi come implementare le specifiche, ma ci si aspetta.