It also is. Because in a programming language every vocable is clearly defined when used, or you get an error.
Words in natural languages are not really clearly defined. There is only a very small subset of words, people are not fighting over their definition.
Thats why it is an art, to write a understandable book. Or give a lecture, the audience can understand.
But you are right, languages are optimized for being spoken in 2 ways. With the possibilitie of clarification.
>1 undefined behavior
>behavior, upon use of a non portable or erroneous program construct or of erroneous data, for which this International Standard imposes no requirements
>2 NOTE Possible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message).
>3 EXAMPLE An example of undefined behavior is the behavior on integer overflow.
Vocabulary is not the real difference. A word is an abstract concept given a definition in terms of other words. The equivalent of set of related words is an API in a programming language.
The real difference is that natural languages are intended and optimized for speaking, and they inherently encourage ambiguity because conversation is an interactive process where one can request clarification. Programming languages are typically non-interactive and don't tolerate ambiguity at all.