Natural language becomes like an abstraction above the high-level languages then, even above things like Scratch and Basic. But you can't define how big of an abstraction it is exactly, like I can say "write an GPS app" or "write a function that does x"

The former is more abstracted and the latter is less. It's this ambiguity and non-determinism that's tricky.