but I don't have to download the language itself, right? |
As I have said previously, there is no such thing as "the language itself." When you say the "C++ language," all you are referring to is a standard. The C++ language is just a technical standard specification created by a committee in a document form.
This is the "language itself" you are referring to:
http://eel.is/c++draft/
Yes, the C++ language is just a bunch of words in a technical document that lays out the rules of the language. These implementation details are usually just of interest to compiler vendors, who actually implement the language. I could create my own programming language right now (called E++ or something). In order to create it, I would need to make a compiler that understands that language and is able to translate that language into machine code for a particular architecture.
All I would need is to make a compiler that is able to understand my made-up language.
I can't "download" my language anywhere, because I made it up and nobody knows about it except me. My hypothetical "E++" language is just an idea in my head, and I simply wrote a compiler that implements that idea.
It is similar with C++. A standards committee got together and wrote rules and conventions for an idea of a language known as "C++". Together, they formulated a standard of how the language should work, what keywords exist, how it is structured, its type system, etc.
At this point, the language only exists on paper (as an idea/standard) and does not exist yet.
People can begin to use the language when someone actually creates a
compiler for the language that takes the rules created by the aforementioned standard and implements it. You could create your own C++ compiler right now and use that to compile C++ code, provided you follow the standard C++ document on the dot.
So that's the distinction. C++ is not a physical, downloadable "thing." It is an idea. And that idea is implemented by compiler vendors in the form of compiler software that is programmed to take in an input source file with C++ code (according to the standard rules of the language) and compile it into machine code.
You could, theoretically, make your own dialect of C++ that changes the convention entirely, but then it wouldn't be C++ anymore because you aren't following the standard. In conclusion, all you need is a compiler (which typically comes with an assembler and linker as well) and a text editor. The compiler already contains the implementation for the abstract idea of the "language"