We chose C++ as the programming environment because of the abstraction powers it offers, and because of its C-like attention to reality. More abstract programming languages such as LISP obviously make no practical sense in embedded environments, but the choice of C++ over C is not so obvious. In the end, the point is moot because one can essentially compile a C program with the C++ compiler and expect equivilent results. So, The C++ support of uCR brings C support along for free.
We chose the GNU compiler because of its wide availability, quality, and openness. It is certainly true that there are other compilers out there, but most are proprietary. The proprietary compilers have an opaque run-time context that cannot be conveniently adapted to the uCR environment, typically support a small set of target CPUs, and cost a hefty sum of money. Using these compilers would also involve and leave us beholden to the technical support hotline of the compiler vendor.
The GNU compiler, on the other hand, is widely available, supports more targets then you ever knew existed, costs little, and the run-time is wide open and easily adapted. Also, the language extensions provided by the GNU compiler prove very helpful when writing fast, portable code.
The choice of C++ and GNU are consistent with our intent to keep the environment simple, inexpensive (financially and technically) and reliable. Also, the GNU tool chain is widely ported so odds are you do not need to buy a new computer for development work.