||To begin with, in order to "program in English", it is necessary to restrict English grammar quite rigidly.
Yes, and rightfully so. To remove the ambiguities.
What you end up with isn't English, it just shares some of the same words and is somewhat understandable to an English speaker.
What I end with is English. No Shakespeare, but should be enough.
Since the subject matter is likely to be far outside the domain of normal English conversation, that veneer of similarity is thin, as few English speakers understand the intent of the sentences.
Ever listened to a conversation of doctors? If you don't understand it it doesn't mean it can't be English.
The fundamental difference is that human language is a tool of social discourse, while machine languages are a series of machine instructions.
A language is a tool for mediating informations between sender and recipient. There is no principial difference between a firmware for a display controller and a recipe for brownies; the first one tells a chip what pins to pull high or low at what moment, the second one tells the cook what ingridient to put to the bowl or the oven at what moment.
A computer cannot participate in a conversation, no matter how many English words you use in its assembly code.
Depends on the software. (An obsolete and crude example is ELIZA. Contemporary software can often keep dumb but meaningfully looking conversation for prolonged periods before the human counterpart starts to have doubts. I hadn't the pleasure of playing with an advanced system yet, though...)
If you are going to persist in believing computer languages to be functionally identical to human languages, you are going to have to explain how this applies to the software development process, which seems to involve more than having some programmers hold a discussion with some computers.
The main entities involved are customers, programmers, and the computers. They talk with each other, using means of communication optimized for the given kind of data exchange. Each entity class is processing the external data in its own characteristic way. The differences are not principial, just in the implementation level. The brain can quite easily be nothing more than a quantum computer.
In any case, none of that explains why software should be considered a form of knowledge. Most human linguistic exchanges do not contain much that we would consider knowledge.
Okay. To avoid you manipulating the playing field during the game, what do you consider being "knowledge"?