But that is part of the point: there is no programming tool to compile natural language into code. Instead, a programmer has to convert the natural language into a formal language that a compiler can deal with. You know all those nifty refactoring tools? They're treating the program as a construct in a formal language---they can make specific changes without altering the meaning.
Oh, and there is nothing tautological about it, at least as far as most programmers seem to work.
They're not exactly reliable, but you probably could say the same for the earliest compilers (from programming languages to asm/machine code).
I'm not saying they will definitely be usable in the short term future, but that future is probably coming sooner or later, and I don't think a fragile definition (programming==="applied formal logic") is worth reiterating over and over again as if it were some fundamental truth.
Oh, and there is nothing tautological about it, at least as far as most programmers seem to work.