A few years ago Microsoft embarked on an anti-Java campaign called .NET, spinning .NET as a revolutionary technology (while failing to explain that it’s really Microsoft’s own implementation of the JVM concept with new languages layered on top of it).
The reason I’m scared at the prospect [of client-only applications being written using .NET] is that managed [i.e. .NET] applications have essentially no consideration for performance or system footprint. I’ll use Notepad as an example because I can compare a managed Notepad with the unmanaged one (unmanaged applications are also known as native applications – not the same as a native application from the point of view of Windows NT, which are applications that use the native API) that ships with Windows XP.
When Borland’s Delphi came out as the next version of Turbo Pascal, I remember how it bloated console applications to 10 times their previous size as compiled in Turbo Pascal. In the pre-GUI and modem days, a main goal of diligent programmers was reducing the size of your executables and increasing their execution speed by fine-tuning as much as possible, often using inline assembly. The fine art of optimization seems to be fading away. I blame it on the advent of object-oriented programming (though I love its concept, as I use it daily in my programming). Sigh.
Update: Googling art of optimization returns a lot of hits for optimization related to garbage collection, virtual machines, and memory allocation. What a crock. Optimization now seems to be concentrated on getting a program to not adversely effect the operating system. Sad.
Of course, none of this applies to most game and system-level programming still going on.