I'll concede that you'll need ASM for core speed critical applications like stock exchanges...then again I conceded that point before we started debating...
>Note that it's exceedingly rare that one should be writing an entire program in assembly.
My mention of in-line ASM should have made that obvious that I'm not arguing for pure ASM.
>applying a better set of optimization options, hand-tweaking
You hand tweak your ASM, I deploy additional cloud clusters. We'll see which scales better (pro-tip: optimization is notoriously prone to diminishing returns).
My mention of in-line ASM should have made that obvious that I'm not arguing for pure ASM."
That wasn't me arguing with you, it was an attempt to clarify my position on the matter in light of what else I said.
"You hand tweak your ASM, I deploy additional cloud clusters. We'll see which scales better"
That depends tremendously on, again, the context - including where one already stands on the various curves and on how parallel the problem is.
"(pro-tip: optimization is notoriously prone to diminishing returns)."
As is parallelism: http://en.wikipedia.org/wiki/Amdahl%27s_law
Note that it's exceedingly rare that one should be writing an entire program in assembly. But knowing assembly allows you, as you bump up against performance constraints, to inspect what code is being generated and understand what's slowing things down, which can help guide you in adjusting the source so it will be faster, applying a better set of optimization options, hand-tweaking the generated assembly, or ultimately rewriting sections while having a reference implementation.