There is abstraction “everywhere”. Some people can’t use the “software” like an online banking site. Some do know how to use them and they might feel proud for it. Some create those using other “low level software" (Java, .net, Ruby or anything) and they are called developers or programmers. Some create those languages (syntax, compiler etc) and these people usually are “intelligent” than average ones. They are also called programmers. They use even more “lower level language" (C or even down to "lowest level language" called assembly language which “actually” instructs computer to do something). Some “genius” guys created that assembly language when they created “processor”. They wrote the actual “addition” code. They knew how to “store” a “character”.
Most of the people don't go below 3rd level. It is "something" to get there.
I'm sometimes amazed that there are people who call themselves programmers don't know what the command prompt window is or for whom the computer is just this magical box of which they have no idea of how it works. "Programmers" who don't know the basic architecture of a computer, who don't know what a CPU does, who don't know what the stack is and how it's used... I learned all that when I got my first computer, a Commodore 64, when I was 13. And yes, I programmed in assembly language on it.