Lots of people mention this higher abstraction level but its not really the case. C has a grammar. You write C and get C as output. Assembly is hidden from the user. Natural language also has a grammar ("sort of"). You write prose into your preferred cli/app of choice BUT it outputs code in C or other language. So its basically a code generator. A code generator is not even remotely a form of abstraction. Its just a facade that breaks down as soon as the generator fails to produce a meaningful result.