Who made the claim it would? You have suddenly switched to talking about algorithms for some reason, when nobody said AO would turn your inefficient algorithms into efficient ones.A highly optimized bubble sort will still be a bubble sort, the AO wont magically turn it into a threaded merge sort
What on earth are you talking about? Do you even understand what adaptive optimization is? He's making the claim that an AO engine can outperform C code because it can be dynamically tuned to the problem in question over the course of the program's lifetime. If your AO engine can see for example, that one particular branch over the course of the program is taken more than 90% of the time as opposed to this other branch, the engine can do far more aggressive inlining/branch prediction optimizations and code motion optimizations, meaning the overhead of taking that branch is minimized or completely eliminated. Along with just profiling information from the program, an AO engine can take into account hardware-specific optimizations and do the best possible branch prediction/instruction reordering for the processor it happens to be running on at the time. Combining this with typical optimizations over the course of the programs run, the JIT can potentially eliminate large computations in favor of constants since it has run-time information.If your argument that AO can beat C only if you cripple the strength of C (closeness to the hardware) in order to gain a position where AO can beat it, then yes, in which case I can simply claim that if you cannot use AO then even sloppy C can stomp the living crap out of java. SO yes, a C programmer writing in java for the first time will probably write faster code than a java programmer coding in C for the first time, and that makes C the weaker language how...?
This is what adaptive optimization is - it is the program dynamically recompiling/tuning itself over its lifetime, in order to optimize as much as possible for the current workload, whatever that is.
This is just more "holier than thou" talk, implying that Java coders just write inefficient code all the time and are sloppy, implying they're not "doing it right."If you code in C you need to think like a machine so that your code will be fast and efficient, like a machine. If you code in java you can think like a human and write code that is sloppy and error prone, like a human, then rely on the compiler to fix most of your mistakes.
This is just hand-waiving, what's your point? What does the fact C has inline ASM got to do with the JVM doing adaptive optimizations over the course of the program's runtime to achieve the best possible code for the current workload? They have *nothing in common* and comparing them is kind of ridiculous. The fact all ASM can be put into inline ASM with C/C++ is just a tautology, and, like most, is really irrelevant to the topic at hand.In absolutely no universe whatsoever can java AO come up with ANY optimized sequence of machine instructions that cannot be simply copy and pasted into C as inline assembly.