Eric Lippert - What do you think of managed code?

For writing "ordinary" applications, fine. Rock on, .NET.
But any time we need to write a complex, speed-sensitive subsystem, whether an OS emulator, a game, a 3D modeller, or anything else of sufficient size,
the performance demanded by consumers will always lie somewhere between the best that .NET can give us and the absolute limits of the machine. And that's why we will always need "open reign on the 32-bit memory space", right up until the unlikely
moment that .NET is hardcoded in hardware.
I dont agree with some of the arguments presented.
The .net arcitechture as such are not slower than native c or c++ code, but the current implementation is..
Your code dont execute directly on the hardware. Its managed by a "man in the middle", the jit compiler during runtime. And thats why you have the 10 % or so, performance hit.
Microsoft actually has some of the componets in the gac precompiled to native code suited for your
underlaying hardware..You can argue that precomileing makes a less versetile system, cuz if your precompiled component relies on 3 other components, and one of those breakes your precomiled component are made useless.(windows update)
But as I see it, this is the direction of the .net execution model for the future.
Second. The .net runtime knows more about the underlaying hardware than usual c and c++ compilers, and can in theory produce faster code than a c/c++ compilers today.
That is years off, but the arcitechture supports it.
Third, the argument that a c/c++ programmer automatically produce faster and better code than .net programmer is false.
There is few programmers that actually posess memory optimization knowlege on a high level. And those who do, are much less productive than a "normal" .net programmer.
And when you know that 85% of development projects are not finished in due time, most companies will perfer cutting costs with less development time with .net
Forth, .net does not exclude the underlaying hardware. You can use it directly with managed c++ and c#.
Fifth, 85 % of web applications has buffer overflows and for each hotfix one issue, 3 more errors will be introduced.
Costs will be less with a safer execution model.
Sixt, the desktop machines of today are fat clients with speed and memory just waiting to be used.
So here it is..and people are complaining of speed issues.
But there is no such thing as free lunch..So yea, today .net are slower. Ultimatly the project design and choosing the right tools for the right job wil decide.
"Eric Lippert - Isn't .NET cool because you don't need to know a lot about how the underlying system works?"
Furthermore, I bevelieve Don Box has mentioned somewhere that, the main job of a programmer is to create more and more abstractions on top of existing ones.
The .NET framework has done programmers the favor in abstracting a lot of the Hardware from our code consequently production will increase as control over the underlying systems decreases. I believe this is great since history may be able to repeat itself again.
Remember when thousands of transistors together used to be public available in a circuit? Now they are all abstracted and closed in an IC lowering cost of manufactoring and increasing productivity. I strongly believe that managed code may also abstract underlying
systems (or logical systems) in order to increase productivity or maybe even field replacement, who knows?
Erick.
AnitaR wrote:Need a tripod please, or a warning: "hand-held footage, take your anti-nausea pills now!"
ErickS wrote:"Eric Lippert - Isn't .NET cool because you don't need to know a lot about how the underlying system works?"
Furthermore, I bevelieve Don Box has mentioned somewhere that, the main job of a programmer is to create more and more abstractions on top of existing ones.
The .NET framework has done programmers the favor in abstracting a lot of the Hardware from our code consequently production will increase as control over the underlying systems decreases. I believe this is great since history may be able to repeat itself again. Remember when thousands of transistors together used to be public available in a circuit? Now they are all abstracted and closed in an IC lowering cost of manufactoring and increasing productivity. I strongly believe that managed code may also abstract underlying systems (or logical systems) in order to increase productivity or maybe even field replacement, who knows?
Erick.