@chrisname a tool should be directly controlled by a user, it should not be capable of autonomy. Compilers don't make the programs for you, they just convert them.
I agree with Chris here. Programming languages are a tool that make programmers jobs easier. We could all be programming in binary opcodes, but we have language.
Going to the hammer analogy...
The language is the hammer, the compiler is the nail. Both of which can exist without the other, but they both need each other to do anything of use.
I'd say the compiler was the handle of the hammer and the hammer head was the language, the nail would be the software and the wood (or whatever the nail is being driven into) would be the computer.
C# isn't an API, it's a language. OpenGL is an API because it's a specification for a set of functions that you can call to achieve a goal (graphics being drawn on the screen in the case of OpenGL), but there isn't actually any OpenGL code. For that, you need a library that implements the OpenGL API, such as mesa3D. A library is the file that contains the code that runs when you call the functions in an API. The I in API is for interface, so think of C# interfaces vs. classes (an interface in C# is roughly equivalent to a class with only purely virtual methods in C++).
oh i get it, its a high level language not an API, im using a visual for the first time, so it must have libraries in it that make it seem like an API too, its pretty simple, i can make stuff my mum could use :D
I dont know whats wrong with me but im still having trouble understanding :/ visual c# is a language because when i type something i got a whole list of pre-made commands made out of other commands that do stuff, and they are all stored somewhere and i get to choose one on a little menu system thingy.
sdl is an API because the keywords that do stuff do a whole lot more than smaller code and they allready been made up