[SOLVED] is there standard for the Arduino language, or based on Arduino does

  1. The standard for what you can do for an embedded processor is firstly set by the features of the processor, then by the tool chain that allows you to compile and link program code (Assembler, C, C++, Forth, Basic, Python, whatever) into an executable program for that processor. The processor runs binary code, not C++. There is no operating system, so you are running on bare bones hardware. Except for the bootloader at the start (which you can eliminate as well), whatever you write is the only thing running on the processor.

The fact that C++ is the standard for Arduino is just because it is. There are also Forth interpreters (written in C or C++), Basic interpreters (written in C or C++) and the C++ compiler running on the PC itself is probably written in C as well. If someone could work out a way for Python to be compiled into something that makes sense on an Arduino (Python -> C++ -> Binary, maybe), it would run just as well as anything else.

C is often the first choice for new processors because it is a really compact language that is easily transportable - what it was designed to be, btw - and still allows for complex structures and control to be implemented relatively painlessly. Easier than assembler, anyway :-).

  1. The only thing they have in common is that the code they create needs to run on an Arduino compatible processor. That is the only compatibility requirement. The rest of the tool chain can be implemented however you like. Most tools default to the gcc tool chain because a lot of the hard work has already been done by someone else.

target may have 128 KB of memory

If you have an Uno (a very common Arduino board) you have 32kB or Flash memory (that is, read only at execution time) to store the program data (code and PROGMEM) and 2kB of RAM for your variables and data structures (yes, 2048 bytes). the most critical resource is RAM. Many of the C++ standard libraries make use of dynamic memory allocation to do their work when the library is invoked. In the embedded processor environment this is not recommended as you can run out of RAM very quickly, and then the software fails. A good example of this in the Arduino environment is the 'String' object that causes no end of issues for users who don't get the RAM constraint.