The language debate – Don’t forget Python has gotten the nod
One thing that people seem to be missing, and I had to some degree put into the forgotten drawer myself until Murray reminded me, is that there was a decision reached that Python is valid language to use for all GNOME development. This means that if you want to write something to go into the official GNOME you can write it in Python as long as the owner of the module you want to check it into is ok with it. This means that if you write something which is supposed to go into gnome-media or gnome-games or Nautilus for intance you CAN write that it Python as long as the gnome-media, gnome-games or Nautilus maintainer(s) are ok with it.
So while the fate of Java and C# is still not finalized in regards to GNOME you can start hacking with Python today if using C is not your cup of tea.
That said there where some good reasons for GNOME choosing to go with C when the project started up, and those reasons are still valid. C is highly portable, You can compile C code with almost any compiler and expect to to work with a library compiled with another C compiler or another version of the compiler (unlike C++ for instance). It is very easy to use C libraries in applications using other languages as most languages and compilers have taken into account that your probably want to interface with some C stuff at some level. The basic building blocs of GNOME will be done in C for the forseeable future, just like many of the other major components of free software; like glibc, the GNU/Linux kernel, gcc, X Windows and many many more. Python, Java, C#, Perl, Ruby, C++ and others are great tools for many kinds of applications and tools, but there is still no better choice than C for something like libraries.