into other languages.  (3) Not true.  A compiler will
beat a poor
 assembly programmer all the time, and an average one much of the
 time.  But a programmer can know more about the problem than the
 compiler can ever know (because the higher level language can't
 express everything there is to say about the problem) so an excellent
 programmer can always tie the compiler, and in selected spots can beat
 the compiler by a very large margin.  It's important to know when to
 spend the effort, and that is also part of what marks an excellent
 programmer.  
When programming microcontrollers (and even more when writing microcode
for special-purpose hardware), there have been times when, say, I've had
to ensure that 2 routines take exactly the same number of machine cycles
to execute (maybe I have to insert some NOPs in the shorter one or
something). This is something that most compliers can't seem to handle.
This is true of electronic CAD tools too. I've had to fiddle with the
output of FPGA compliers to get signals routed through the same number of
routing switches in the FPGA (OK, we were really pushing those chips...).
Humans can often understnad (and remember) things that compilers can't!
-tony