C is usually only good for limited embedded systems because as you say - you can't write your problem in people language but in CPU language. Now that comes naturally to me but not to most people.
But you also have to remember that any program that is going to be on-line has a REAL problem with upper level languages. These languages all depend on using groups of preprogrammed lower level languages that are then combined. So you can never write a program that is truly secure since the interconnecting code and the generalizing codes leave gaping holes in the security that are almost impossible to guard.