Far from a well-established point, and please do correct me if I am wrong, but ever since some point around 2008, the performance gain from CPU upgrade becomes kind of stuck, which sticks to around 10%-15% between generation.
Good abstractions come at a cost. You'll need more CPU power, but it becomes easier to write, read and maintain your code.
If performance becomes an issue, rewrite the critical sections to make less use of abstractions. If performance is a massive issue and it's not doable in a high-level language, then don't use a high-level language.
If CPU power stagnates, it doesn't matter. There is, and always will be, a place for abstractions, no matter what overhead they have.
JavaScript is very efficient in some respects: it trades off speed and memory usage for programmer productivity, safety, security and portability.
I don't believe this has to be true in the future (in fact, I'm not sure I believe it today either). This is a meme that we tell ourselves because we haven't invented clever enough programming languages or abstractions yet. This is exactly what I was referring to in my post. We as an industry would have to solve these problems at a fundamental level.
Take for instance manual memory management. People used to think that dynamic languages make this so much easier, but it has become much easier to write GC free programs (see C++11 and Rust).
I want to see more efforts in this kind of direction.
> JavaScript is very efficient in some respects: it trades off speed and memory usage for programmer productivity, safety, security and portability.
I take issue with this. JavaScript it is not a productive language at LOC scale. Security is par for the course. Modern systems languages are no worse or better. Portability I'll grant.
In fact I've yet to see java server-side stacktrace that's less than 100 lines long. Usually it's more like 1000 lines, with a few RMIs inside. On the other hand, the js stacktraces I've seen (mostly hobby projects, so I may be biased) are usually less than 50 lines, often just 10 or so. Not good, but much better.
Were those Java servers written in standard Java, though? Because it's possible to write pretty low-level code in java if you're willing to compromise on standards compliance. Non-GC'ed, direct memory access is possible, I think.