it just appears programming a arduino is simpler then programming another AVR though AVRDude.
But that's only because all the difficult bit-twiddling to set up timers and ports has been abstracted for you - you're not even aware what goes on in "init" because you don't need to know.
However, the abstraction is all written in C too.
It really is C through-and-through.