Have we reached the point where the overhead of a VM is acceptable for 99% of applications? Will native code become the domain of a few experts who write higher level environments used by the majority of programmers?
Of course it still matters. Almost all the software that runs whichever device you're reading this post on has been compiled to machine code. In operating systems everything from the filesystem to device drivers to the window manager to the web browser are written in some low level language. For hard real-time systems you need to be close to the metal. Same for most embedded applications.<p>Sure, there are many situations where sacrificing performance in exchange for a VM is totally appropriate. If you think this covers 99% percent of applications (or even 50%!) then you may only be thinking of a very small subset of software development.<p>Also, inefficient code produces excess heat. Meaning reduced battery life and noisy fans. So all software that gets used a lot should be optimized for performance just to conserve energy.
I don't generally want to give up performance. As a game developer, I usually actually need all the performance I can get. My default choice is always a language with nice, low-cost abstractions, that compiles to native code. I don't see that changing, probably ever. I always want to get the most out of the machine.
Interesting question, but ultimately it's still hard to say .<p>The story on power consumption of managed/VM language is still not clear. Most of the computation in the world are now happening in mobile/IoT devices and cloud/data centers; Both environment put a strong constraint on power consumption and therefore on efficiency. There is already a huge amount (and growing ) of native code running in the cloud. As our computational requirement increase (and unless we have a break through in computation efficiency) people might want to revisit the lost implied by managed environment.<p>The other side of the coin is that managed env. are popular because they usually bring safety, ease of programming and productivity. Modern C++,rust and D are showing that a lot of those attributes can be had with native languages too.
Yes we have. The majority of all commercial programmers work with web sites or web applications in which VM:s reign supreme.<p>But for hobbyist work, it is different. Free software developers are seeking universality more than anything else. They want as many people as possible to be able to use their code, be able to read it and contribute to it.<p>VM:s hinder universality. For example, if you write an image processing library in C then everyone can theoretically use it (assuming bindings are non-trivial to write). But if the same library is written in a VM language, then it is only usable to developers who are using that platform.<p>It's like a curse.