From the moment you turn on your computer, it is running programs, carrying out instructions, testing your ram, resetting all attached devices and loading the operating system from hard disk or CD-Rom.
Each and every operation that your computer performs has instructions that someone had to write in a programming language. These had to be created, compiled and tested- a long and complex task.
An operating system like Microsoft's Windows Vista took millions of man hours to write and test the software.
It is mainly Java and C++ with C# starting to gain popularity and C holding its own. There have been many attempts to automate this process, and have computers write computer programs but the complexity is such that for now, humans still write the best computer programs.
Force the programmer to think more about the problem in computer terms, instead of the business logic. Less about payrolls and more about how the data is stored.
C# though does not use pointers, so that removes the chances of a pointerbeing corrupted or not freed. The .NET runtime handles things like garbage collection, so the developer doesn't have to reinvent this wheel.
(Sources: tiobe.com). As computers get faster, have more RAM,applications will get more complex, it is likely that more development will shift from C++ to the higher level languages such as Java and C#.
Microsoft have put a lot of faith in C# as their answer to Java and have the financial leverage to continue plugging it for a very long time. I expect both Java and C# to become the two dominant programming languages.