| There's a reason we don't code in plain English though. Natural language has ambiguities. This is the reason we invented programming languages. It's best illustrated by the old joke: A programmer's wife told him "Go to the store and buy milk and if they have eggs, get a dozen." He came back a while later with 12 cartons of milk.
A good chunk of all bugs in software are down to the requirements being insufficiently well specified. Further, many bugs are the discovery of new requirements when informal specification encounters reality."Read from standard input into this byte array" doesn't specify what to do when the input exceeds the byte array. When you overflow the buffer, you get a "well obviously you're supposed to not do that"... that's wasn't stated at all. When the function keeps going after a newline or a null byte or whatever, there's another "well obviously you're supposed to stop at those points". That was also not specified. and so on. At the point you're specifying all these cases and what to do when, it's so specific and stilted, you might as well be using a programming language. |
(We already program in English, in a sense, when we tell humans what we want, and they go code it. Now we'll just be telling machines.)