[SOLVED] Arduino language

Nick, the post you have linked (programming - Classes and objects: how many and which file types do I actually need to use them? - Arduino Stack Exchange) is amazingly detailed and unbelievably helpful!

I have these questions:

Do you have a similar reference for the "build process" itself? For example, it is clear that at the point of your third bullet point there is a "temporary compilation folder". What is the program that actually builds it?

It must be a C++ compiler (like gcc). I googled this and found: " is passed directly to a C/C++ compiler (avr-g++)."

Is it avr-g++ in every case? Or can other compilers be used at this step?

I find it extremely hard to understand why the 2000 words in your write-up and linked "more information" do not mention avr-g++ even a single time, if, in fact, it is the compiler actually used after the above compilation steps in every case.

Here are more questions:

-> If I manually performed the steps 1-10 could I then pass them to avr-G++ myself and receive a compiled program? Why or why not?

-> What is avr-g++ (Google search "what is avr-g++")?

People are accusing me of not googling. The first Google result is "avr-g++: command not found" while compiling, using Arduino IDE 1.6". It does not say what avr-g++ is.

The second link is "c++ - Using Arduino Libraries with AVR-G++ - Stack Overflow" and writes "Is there a simple way to use libraries intended for the Arduino IDE with the C and assembly code I write for AVR-G++/AVR-GCC?" and does not define what AVR-G++ is.

The third link is bizarre and seems to be a man page for gcc. Does the Arduino just use gcc directly?

If so why can't people just use gcc directly, after performing steps 1-10 from your write-up?

Why aren't there more Arduino-templating-language compatible IDE's other than the Arduino IDE, if we define the Arduino-templating-language as simply meaning "perform steps #1-#10 to receive C++ files ready to hand off to gcc"?

C++ is a standard language based on standards. It is not considered standard to be able to compile it using only a single compiler. Why can't other compilers be used, other than gcc (if indeed that is what is being used)?

For example, an alternative to gcc is clang (LLVM). If I personally perform steps 1-10 can I just pass it off to clang? Why or why not?

Finally, based on the fact that steps 1-10 are performed how would you feel about my using the nomenclature "Arduino templating language" or to be more explicit "Arduino C++ templating language" which would make it clear that:
1: Code produced in the Arduino templating language is not ready to be passed on to GCC directly. There is a bit of translationn involved.
2: It is a light translation that results in C++ code that is ready to be passed to the compiler.
[I rejected this possibility.]

This would make it clear that while a "templating language" Arduino qua language is essentially C++. The only thing that makes it a (templating) "language" as opposed to wizard, is that it is written in text form, rather than by clicking buttons in a wizard. [rejected]

Would this usage be accurate? Thank you.

Example of usage

Ambiguous:
"I have an Arduino that I program in Arduino using Arduino".

Explicit:
"I have an Arduino-compatible board, that I program in the Arduino templating language, using the Arduino IDE".

In other words, "Arduino language" should be written "Arduino templating language" or "Arduino C++ templating language." [rejected]

It would make it clear that it is a templating language that simply "turns into" C++ after steps 1-10 are performed. [rejected]

Thoughts?