473,387 Members | 3,684 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

Can Someone Change My Mind About .NET?

Hello

I come from the world of C++ programming, and I'm used to writing programs that are actually executed by the CPU, and that run with some semblance of performance. I have taken the time to explore this .NET thing, and found that not only do .NET applications run extremely s-l-o-w-l-y, but the various .NET languages amount to nothing more than interpreted script languages. It is the common language run-time that actually executes your implementation

I deeply resent this move toward "managed" code, and I'm disappointed that the new Avalon user interface system in Longhorn will use only .NET facilities. Is this an indication that subsequent versions of Windows will allow ONLY interpreted applications

Does anyone else share my feelings about this situation? Can anyone put forth some reason that I should feel better about embracing .NET, when it is so alien to me

Sincerely
Mike
Jul 21 '05 #1
42 1991
Mike P. <an*******@discussions.microsoft.com> wrote:
I come from the world of C++ programming, and I'm used to writing
programs that are actually executed by the CPU, and that run with
some semblance of performance. I have taken the time to explore this
.NET thing, and found that not only do .NET applications run
extremely s-l-o-w-l-y, but the various .NET languages amount to
nothing more than interpreted script languages. It is the common
language run-time that actually executes your implementation.
1) They're not interpreted. They're JIT-compiled. This is a huge
difference.
2) They don't run extremely slowly. What makes you think they do?
Certainly Windows Forms take a while to start up, and the
performance of those isn't as good as it could be - but that's
not true of the whole of .NET. What in particular are you finding
is running very slowly?
I deeply resent this move toward "managed" code, and I'm disappointed
that the new Avalon user interface system in Longhorn will use only
.NET facilities. Is this an indication that subsequent versions of
Windows will allow ONLY interpreted applications?
Certainliy not, as .NET isn't interpreted to start with.
Does anyone else share my feelings about this situation? Can anyone
put forth some reason that I should feel better about embracing .NET,
when it is so alien to me?


My guess is that you're trying to write .NET code as if it were normal
C++, rather than embracing .NET idioms. Writing code as if it were for
another platform is always going to give you nasty problems such as
performance and reliability.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Jul 21 '05 #2
Mike P. <an*******@discussions.microsoft.com> wrote:
I come from the world of C++ programming, and I'm used to writing
programs that are actually executed by the CPU, and that run with
some semblance of performance. I have taken the time to explore this
.NET thing, and found that not only do .NET applications run
extremely s-l-o-w-l-y, but the various .NET languages amount to
nothing more than interpreted script languages. It is the common
language run-time that actually executes your implementation.
1) They're not interpreted. They're JIT-compiled. This is a huge
difference.
2) They don't run extremely slowly. What makes you think they do?
Certainly Windows Forms take a while to start up, and the
performance of those isn't as good as it could be - but that's
not true of the whole of .NET. What in particular are you finding
is running very slowly?
I deeply resent this move toward "managed" code, and I'm disappointed
that the new Avalon user interface system in Longhorn will use only
.NET facilities. Is this an indication that subsequent versions of
Windows will allow ONLY interpreted applications?
Certainliy not, as .NET isn't interpreted to start with.
Does anyone else share my feelings about this situation? Can anyone
put forth some reason that I should feel better about embracing .NET,
when it is so alien to me?


My guess is that you're trying to write .NET code as if it were normal
C++, rather than embracing .NET idioms. Writing code as if it were for
another platform is always going to give you nasty problems such as
performance and reliability.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Jul 21 '05 #3
Jon

Thank you for your thoughtful reply.

One reason that I believe .NET apps run very slowly is that I wrote an HTTP proxy server in Visual Basic .NET. Then I wrote an identical program in MFC. The MFC program ran many times faster. When I tested them both with Internet Explorer as the client, I saw no noticeable change in IE's performance when using the MFC proxy, while there was a serious degredation in performance with the .NET proxy

And what about the fact that you can view the code for any program just by using the disassembler utility? Am I forced to buy a multi-thousand dollar obfuscator package if I want to make a commercial app

Thank you

Jul 21 '05 #4
Jon

Thank you for your thoughtful reply.

One reason that I believe .NET apps run very slowly is that I wrote an HTTP proxy server in Visual Basic .NET. Then I wrote an identical program in MFC. The MFC program ran many times faster. When I tested them both with Internet Explorer as the client, I saw no noticeable change in IE's performance when using the MFC proxy, while there was a serious degredation in performance with the .NET proxy

And what about the fact that you can view the code for any program just by using the disassembler utility? Am I forced to buy a multi-thousand dollar obfuscator package if I want to make a commercial app

Thank you

Jul 21 '05 #5
Mike P. <an*******@discussions.microsoft.com> wrote:
Thank you for your thoughtful reply.

One reason that I believe .NET apps run very slowly is that I wrote
an HTTP proxy server in Visual Basic .NET. Then I wrote an identical
program in MFC. The MFC program ran many times faster. When I tested
them both with Internet Explorer as the client, I saw no noticeable
change in IE's performance when using the MFC proxy, while there was
a serious degredation in performance with the .NET proxy.
Without seeing your code, I can't say what's wrong - but chances are
it's in your code rather than in .NET itself. One thing to check to
start with - do you have Option Strict On at the top of all your code?
If not, some or all method calls will be performed with reflection,
which *is* horribly slow - and unnecessary.

It shouldn't come as a surprise though - you can't expect to
immediately write the same quality of code on a new platform as on one
you're intimately familiar with. It takes a little while to get back up
to speed. That's not a reflection of the platform itself, however.

If this proxy is small enough to post, we could see if we can see
what's wrong. I may well not be able to contribute very much myself,
being a C# programmer rather than a VB.NET programmer. I would be able
to spot *some* potential flaws, but not all. Fortunately, there are
plenty of very competent VB.NET users in this newsgroup who could help,
I'm sure.
And what about the fact that you can view the code for any program
just by using the disassembler utility? Am I forced to buy a
multi-thousand dollar obfuscator package if I want to make a
commercial app?


See http://www.pobox.com/~skeet/csharp/faq/#obfuscation for reasons why
I think obfuscation is sufficient. There are already free obfuscators
around (I believe) and my guess is that more and more of them will
spring up, and get better and better - this is what has happened in the
Java space, certainly.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Jul 21 '05 #6
Mike P. <an*******@discussions.microsoft.com> wrote:
Thank you for your thoughtful reply.

One reason that I believe .NET apps run very slowly is that I wrote
an HTTP proxy server in Visual Basic .NET. Then I wrote an identical
program in MFC. The MFC program ran many times faster. When I tested
them both with Internet Explorer as the client, I saw no noticeable
change in IE's performance when using the MFC proxy, while there was
a serious degredation in performance with the .NET proxy.
Without seeing your code, I can't say what's wrong - but chances are
it's in your code rather than in .NET itself. One thing to check to
start with - do you have Option Strict On at the top of all your code?
If not, some or all method calls will be performed with reflection,
which *is* horribly slow - and unnecessary.

It shouldn't come as a surprise though - you can't expect to
immediately write the same quality of code on a new platform as on one
you're intimately familiar with. It takes a little while to get back up
to speed. That's not a reflection of the platform itself, however.

If this proxy is small enough to post, we could see if we can see
what's wrong. I may well not be able to contribute very much myself,
being a C# programmer rather than a VB.NET programmer. I would be able
to spot *some* potential flaws, but not all. Fortunately, there are
plenty of very competent VB.NET users in this newsgroup who could help,
I'm sure.
And what about the fact that you can view the code for any program
just by using the disassembler utility? Am I forced to buy a
multi-thousand dollar obfuscator package if I want to make a
commercial app?


See http://www.pobox.com/~skeet/csharp/faq/#obfuscation for reasons why
I think obfuscation is sufficient. There are already free obfuscators
around (I believe) and my guess is that more and more of them will
spring up, and get better and better - this is what has happened in the
Java space, certainly.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Jul 21 '05 #7
> I come from the world of C++ programming, and I'm used to writing programs
that
are actually executed by the CPU, and that run with some semblance of performance. I have taken the time to explore this .NET thing, and found that not only do .NETapplications run extremely s-l-o-w-l-y, but the various .NET languages amount to nothing more than interpreted script languages. It is the common language run-time that actually executes your implementation. Tests with C# here suggests that we have almost the same speed of our MFC
programs.
The JIT compiler needs time to compile the interediate language into native
cpu code, and that explains why the .NET program starts up slower, but if
you create the program with .NET design phylisophy and not MFC like
phylisophy, then it should reach the same speeds.
I deeply resent this move toward "managed" code, and I'm disappointed that the new Avalon user interface system in Longhorn will use only .NET facilities. Is this an indication that subsequent versions of Windows will allow ONLY interpreted applications?
The biggest advantage if .NET is that it will improve security issuses since
the security is integrated into the code.
An OS based on .NET code will be far less vunerable for the current types of
worms and virusses. And I think the rest of the world would prefer an little
bit more secure windows that crashes less than a incredible fast computer.

Also note that, .NET programs will run faster compared to conventional
executable in the future since the Windows core is beeing replaced by pure
..NET technology.
It is the transition between managed and unmanaged that takes lots of time.
So it explains why .NET programs now are still a little bit slower since the
Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will
be faster than conventional executables now.
Does anyone else share my feelings about this situation? Can anyone put forth some reason that I should feel better about embracing .NET, when it is so alien to me?

I understand the you completely that itis very confusing learning to program
in a .NET way, but you have to trust all the people here that it is the way
to go for future operating systems and programming languages. But it has a
steep learning curve as the technology matures.

Jul 21 '05 #8
> I come from the world of C++ programming, and I'm used to writing programs
that
are actually executed by the CPU, and that run with some semblance of performance. I have taken the time to explore this .NET thing, and found that not only do .NETapplications run extremely s-l-o-w-l-y, but the various .NET languages amount to nothing more than interpreted script languages. It is the common language run-time that actually executes your implementation. Tests with C# here suggests that we have almost the same speed of our MFC
programs.
The JIT compiler needs time to compile the interediate language into native
cpu code, and that explains why the .NET program starts up slower, but if
you create the program with .NET design phylisophy and not MFC like
phylisophy, then it should reach the same speeds.
I deeply resent this move toward "managed" code, and I'm disappointed that the new Avalon user interface system in Longhorn will use only .NET facilities. Is this an indication that subsequent versions of Windows will allow ONLY interpreted applications?
The biggest advantage if .NET is that it will improve security issuses since
the security is integrated into the code.
An OS based on .NET code will be far less vunerable for the current types of
worms and virusses. And I think the rest of the world would prefer an little
bit more secure windows that crashes less than a incredible fast computer.

Also note that, .NET programs will run faster compared to conventional
executable in the future since the Windows core is beeing replaced by pure
..NET technology.
It is the transition between managed and unmanaged that takes lots of time.
So it explains why .NET programs now are still a little bit slower since the
Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will
be faster than conventional executables now.
Does anyone else share my feelings about this situation? Can anyone put forth some reason that I should feel better about embracing .NET, when it is so alien to me?

I understand the you completely that itis very confusing learning to program
in a .NET way, but you have to trust all the people here that it is the way
to go for future operating systems and programming languages. But it has a
steep learning curve as the technology matures.

Jul 21 '05 #9
If possible, post your core network loop. I have not seen perf issues with
the network classes. Naturally, it will probably be a little slower then
calling win32 and winsock directly, but should not get the results you
describe.

--
William Stacey, MVP

"Mike P." <an*******@discussions.microsoft.com> wrote in message
news:7D**********************************@microsof t.com...
Jon,

Thank you for your thoughtful reply.

One reason that I believe .NET apps run very slowly is that I wrote an HTTP proxy server in Visual Basic .NET. Then I wrote an identical
program in MFC. The MFC program ran many times faster. When I tested them
both with Internet Explorer as the client, I saw no noticeable change in
IE's performance when using the MFC proxy, while there was a serious
degredation in performance with the .NET proxy.
And what about the fact that you can view the code for any program just by using the disassembler utility? Am I forced to buy a multi-thousand
dollar obfuscator package if I want to make a commercial app?
Thank you.


Jul 21 '05 #10
If possible, post your core network loop. I have not seen perf issues with
the network classes. Naturally, it will probably be a little slower then
calling win32 and winsock directly, but should not get the results you
describe.

--
William Stacey, MVP

"Mike P." <an*******@discussions.microsoft.com> wrote in message
news:7D**********************************@microsof t.com...
Jon,

Thank you for your thoughtful reply.

One reason that I believe .NET apps run very slowly is that I wrote an HTTP proxy server in Visual Basic .NET. Then I wrote an identical
program in MFC. The MFC program ran many times faster. When I tested them
both with Internet Explorer as the client, I saw no noticeable change in
IE's performance when using the MFC proxy, while there was a serious
degredation in performance with the .NET proxy.
And what about the fact that you can view the code for any program just by using the disassembler utility? Am I forced to buy a multi-thousand
dollar obfuscator package if I want to make a commercial app?
Thank you.


Jul 21 '05 #11
> It is the transition between managed and unmanaged that takes lots of
time.
So it explains why .NET programs now are still a little bit slower since the Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will
be faster than conventional executables now.


That would be cool if that was the case. However I don't think that is so.
Win32 is not going away with LH. WinFx classes will still need to call
Win32 apis in many cases. Even if a class does not pinvoke a win32 api, why
would it be any faster then a comparable method in native win32? Maybe the
same, I don't see how faster. That would be nice however if wrong.

--
William Stacey, MVP
Jul 21 '05 #12
> It is the transition between managed and unmanaged that takes lots of
time.
So it explains why .NET programs now are still a little bit slower since the Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will
be faster than conventional executables now.


That would be cool if that was the case. However I don't think that is so.
Win32 is not going away with LH. WinFx classes will still need to call
Win32 apis in many cases. Even if a class does not pinvoke a win32 api, why
would it be any faster then a comparable method in native win32? Maybe the
same, I don't see how faster. That would be nice however if wrong.

--
William Stacey, MVP
Jul 21 '05 #13
No, the windows core in LH is unmanaged Win32/64, and is here to stay for a
long time.

Willy.

<Ol**********@skyscan.be> wrote in message
news:40***********************@news.skynet.be...
I come from the world of C++ programming, and I'm used to writing
programs

that
are actually executed by the CPU, and that run with some semblance of

performance.
I have taken the time to explore this .NET thing, and found that not only

do .NET
applications run extremely s-l-o-w-l-y, but the various .NET languages

amount to nothing
more than interpreted script languages. It is the common language

run-time that actually executes your implementation.

Tests with C# here suggests that we have almost the same speed of our MFC
programs.
The JIT compiler needs time to compile the interediate language into
native
cpu code, and that explains why the .NET program starts up slower, but if
you create the program with .NET design phylisophy and not MFC like
phylisophy, then it should reach the same speeds.
I deeply resent this move toward "managed" code, and I'm disappointed
that

the new Avalon user
interface system in Longhorn will use only .NET facilities. Is this an

indication that subsequent
versions of Windows will allow ONLY interpreted applications?

The biggest advantage if .NET is that it will improve security issuses
since
the security is integrated into the code.
An OS based on .NET code will be far less vunerable for the current types
of
worms and virusses. And I think the rest of the world would prefer an
little
bit more secure windows that crashes less than a incredible fast computer.

Also note that, .NET programs will run faster compared to conventional
executable in the future since the Windows core is beeing replaced by pure
.NET technology.
It is the transition between managed and unmanaged that takes lots of
time.
So it explains why .NET programs now are still a little bit slower since
the
Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will
be faster than conventional executables now.
Does anyone else share my feelings about this situation? Can anyone put

forth some reason that I should feel better about
embracing .NET, when it is so alien to me?

I understand the you completely that itis very confusing learning to
program
in a .NET way, but you have to trust all the people here that it is the
way
to go for future operating systems and programming languages. But it has a
steep learning curve as the technology matures.

Jul 21 '05 #14
No, the windows core in LH is unmanaged Win32/64, and is here to stay for a
long time.

Willy.

<Ol**********@skyscan.be> wrote in message
news:40***********************@news.skynet.be...
I come from the world of C++ programming, and I'm used to writing
programs

that
are actually executed by the CPU, and that run with some semblance of

performance.
I have taken the time to explore this .NET thing, and found that not only

do .NET
applications run extremely s-l-o-w-l-y, but the various .NET languages

amount to nothing
more than interpreted script languages. It is the common language

run-time that actually executes your implementation.

Tests with C# here suggests that we have almost the same speed of our MFC
programs.
The JIT compiler needs time to compile the interediate language into
native
cpu code, and that explains why the .NET program starts up slower, but if
you create the program with .NET design phylisophy and not MFC like
phylisophy, then it should reach the same speeds.
I deeply resent this move toward "managed" code, and I'm disappointed
that

the new Avalon user
interface system in Longhorn will use only .NET facilities. Is this an

indication that subsequent
versions of Windows will allow ONLY interpreted applications?

The biggest advantage if .NET is that it will improve security issuses
since
the security is integrated into the code.
An OS based on .NET code will be far less vunerable for the current types
of
worms and virusses. And I think the rest of the world would prefer an
little
bit more secure windows that crashes less than a incredible fast computer.

Also note that, .NET programs will run faster compared to conventional
executable in the future since the Windows core is beeing replaced by pure
.NET technology.
It is the transition between managed and unmanaged that takes lots of
time.
So it explains why .NET programs now are still a little bit slower since
the
Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will
be faster than conventional executables now.
Does anyone else share my feelings about this situation? Can anyone put

forth some reason that I should feel better about
embracing .NET, when it is so alien to me?

I understand the you completely that itis very confusing learning to
program
in a .NET way, but you have to trust all the people here that it is the
way
to go for future operating systems and programming languages. But it has a
steep learning curve as the technology matures.

Jul 21 '05 #15
> > Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will be faster than conventional executables now.
That would be cool if that was the case. However I don't think that is

so. Win32 is not going away with LH. WinFx classes will still need to call
Win32 apis in many cases. Even if a class does not pinvoke a win32 api, why would it be any faster then a comparable method in native win32? Maybe the same, I don't see how faster. That would be nice however if wrong.

Simple, more an more Win32 API is beeing replaced by .NET variants.
That means that .NET programs have less and less transitions from managed to
unmanaged to do.

But for existing Win32 executables, the will need Win32 API's that wraps
functionality to the .NET core.
That means that Win32 executables must go from unmanaged to managed code
transitions. So they will slow down.

..NET programs will be faster because the CLR gets better and better.
At this moment, conventional exe works at its best perfocramence because of
the compiler that optimizes it for the current known processors.
If you do not recompile the .NET applcation and conventional program, you
would see that the .NET version gets faster and faster compared to the
conventional program butcause JIT v2.0 will optimize for the most recent
processor while the conventional application is still stuck to the Pentium
IV optimizations.

Conventional executables are static in nature. all methods and functions are
laid out in a certain memory order at the moment you compiled and linked.
..NET programs are dynamic in nature. Future JIT compiler might perform
statistics what function is use how often, and might relocate it in a
different memory block so the the most used functions are grouped together
in a small memory address space, ready to be cached more often. Also .NET
programs written in pure OOP way is now far more performant compare to the
OOP version of a C++ unmanaged. because it does not need to delete small
memory memory bloks every time stalling then program. .NET starts deleting
the memory when it either needs memory, or if it can find some time to start
cleaning up.

Just be aware! .NET is NOT an interpreter, It compiles the complete code to
pure win32 code but optimized for your processor. When JIT matures, it ill
become even better optimizer.

Another thing that must be taken into mind, is the fact that .NET programs
also implements security at the low level standard.
You should compare Win32 functions with also this type of level of security
build in. If I remember correctly a web page counter extension for Frontpage
97 could be misused to take over the server. A stupid prgram that only
intended to show a bitmap on screen was misused. This is why all programs
now created should have this security integrated default.Even if it is a
simple screen saver, it could be misused by a worm. (examples enough: e.g.
windows help file could be used to take over your computer) Maybe next
Solitair....

But this is my opinion? I really believe that this .NET is the way to go,
and I admit that I also fight against it to have my code work. ;-)
Jul 21 '05 #16
> > Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will be faster than conventional executables now.
That would be cool if that was the case. However I don't think that is

so. Win32 is not going away with LH. WinFx classes will still need to call
Win32 apis in many cases. Even if a class does not pinvoke a win32 api, why would it be any faster then a comparable method in native win32? Maybe the same, I don't see how faster. That would be nice however if wrong.

Simple, more an more Win32 API is beeing replaced by .NET variants.
That means that .NET programs have less and less transitions from managed to
unmanaged to do.

But for existing Win32 executables, the will need Win32 API's that wraps
functionality to the .NET core.
That means that Win32 executables must go from unmanaged to managed code
transitions. So they will slow down.

..NET programs will be faster because the CLR gets better and better.
At this moment, conventional exe works at its best perfocramence because of
the compiler that optimizes it for the current known processors.
If you do not recompile the .NET applcation and conventional program, you
would see that the .NET version gets faster and faster compared to the
conventional program butcause JIT v2.0 will optimize for the most recent
processor while the conventional application is still stuck to the Pentium
IV optimizations.

Conventional executables are static in nature. all methods and functions are
laid out in a certain memory order at the moment you compiled and linked.
..NET programs are dynamic in nature. Future JIT compiler might perform
statistics what function is use how often, and might relocate it in a
different memory block so the the most used functions are grouped together
in a small memory address space, ready to be cached more often. Also .NET
programs written in pure OOP way is now far more performant compare to the
OOP version of a C++ unmanaged. because it does not need to delete small
memory memory bloks every time stalling then program. .NET starts deleting
the memory when it either needs memory, or if it can find some time to start
cleaning up.

Just be aware! .NET is NOT an interpreter, It compiles the complete code to
pure win32 code but optimized for your processor. When JIT matures, it ill
become even better optimizer.

Another thing that must be taken into mind, is the fact that .NET programs
also implements security at the low level standard.
You should compare Win32 functions with also this type of level of security
build in. If I remember correctly a web page counter extension for Frontpage
97 could be misused to take over the server. A stupid prgram that only
intended to show a bitmap on screen was misused. This is why all programs
now created should have this security integrated default.Even if it is a
simple screen saver, it could be misused by a worm. (examples enough: e.g.
windows help file could be used to take over your computer) Maybe next
Solitair....

But this is my opinion? I really believe that this .NET is the way to go,
and I admit that I also fight against it to have my code work. ;-)
Jul 21 '05 #17
> No, the windows core in LH is unmanaged Win32/64, and is here to stay for
a
long time.

Too bad.
But then again, converting million lines of code is not that simple to do in
a few years. :-)
Jul 21 '05 #18
> No, the windows core in LH is unmanaged Win32/64, and is here to stay for
a
long time.

Too bad.
But then again, converting million lines of code is not that simple to do in
a few years. :-)
Jul 21 '05 #19
Mike,

In short, no. If you like your C++ programming, there is no Microsoft army
that is going to confiscate your workstation should you not come to the
other side. If *you* think .NET can improve the way you or your organization
works, then use .NET. With that I can offer what we have seen so far, if it
helps.

It all depends on the project. C++ is totally inappropriate for some of the
things you could do in .NET, and .NET is totally inappropriate for some
applications that you may have written in C++.

We asked the exact same questions, and are trying to work out those
solutions within our own organization; i.e., the users complain that a .NET
app is slow to start (they get confused because they don't see a window
immediately and keep clicking on the desktop icon, etc, etc.), so we build a
splash screen in C++ that gets a window up there quickly and then launches
the .NET app. However, once a .NET application is running, although it does
perform a bit slower than native Win32 apps (as it should!), we have seen
firsthand how the advancements in code security and ease of domain
administration are a step in the right direction that the entire industry
needs right now. And as always, in the parallel industry of construction, if
I could build a house with only one tool, I would; but unfortunately
sometimes I need a wrench and sometimes I need a screwdriver to accomplish
the task.

The only other reason we use .NET is summed up in one of Microsoft's banner
ads from some time ago: "Why would you start from scratch, when you can
start from almost done?" -- We find something new every day that MS has
included in the framework that we had previously written our own libraries
for in C++, and the fact that we don't have to spend testing time on those
components allows us to develop in 4 days what previously took us 4 weeks.
It really takes care of the rudimentary processes / "management" while at
the same time gives us the ability to dive right into the Win32 API should
we need it.

With that said, .NET does make you feel like less of a programmer since it
manages so much for you, hence how it resembles a scripting language.
However, my personal outlook on that is if I am in a room with a C++
programmer and we are both working on, say, a $5,000 development project,
after a week of coding, the C++ programmer will still be coding the basic
framework and window management for the application while I'm depositing a
check at the bank... so that's what it comes down to. :)

FWIW on our organization's side of the fence,

Brandon

"Mike P." <an*******@discussions.microsoft.com> wrote in message
news:BC**********************************@microsof t.com...
Hello,

I come from the world of C++ programming, and I'm used to writing programs that are actually executed by the CPU, and that run with some
semblance of performance. I have taken the time to explore this .NET thing,
and found that not only do .NET applications run extremely s-l-o-w-l-y, but
the various .NET languages amount to nothing more than interpreted script
languages. It is the common language run-time that actually executes your
implementation.
I deeply resent this move toward "managed" code, and I'm disappointed that the new Avalon user interface system in Longhorn will use only .NET
facilities. Is this an indication that subsequent versions of Windows will
allow ONLY interpreted applications?
Does anyone else share my feelings about this situation? Can anyone put forth some reason that I should feel better about embracing .NET, when
it is so alien to me?
Sincerely,
Mike

Jul 21 '05 #20
Mike,

In short, no. If you like your C++ programming, there is no Microsoft army
that is going to confiscate your workstation should you not come to the
other side. If *you* think .NET can improve the way you or your organization
works, then use .NET. With that I can offer what we have seen so far, if it
helps.

It all depends on the project. C++ is totally inappropriate for some of the
things you could do in .NET, and .NET is totally inappropriate for some
applications that you may have written in C++.

We asked the exact same questions, and are trying to work out those
solutions within our own organization; i.e., the users complain that a .NET
app is slow to start (they get confused because they don't see a window
immediately and keep clicking on the desktop icon, etc, etc.), so we build a
splash screen in C++ that gets a window up there quickly and then launches
the .NET app. However, once a .NET application is running, although it does
perform a bit slower than native Win32 apps (as it should!), we have seen
firsthand how the advancements in code security and ease of domain
administration are a step in the right direction that the entire industry
needs right now. And as always, in the parallel industry of construction, if
I could build a house with only one tool, I would; but unfortunately
sometimes I need a wrench and sometimes I need a screwdriver to accomplish
the task.

The only other reason we use .NET is summed up in one of Microsoft's banner
ads from some time ago: "Why would you start from scratch, when you can
start from almost done?" -- We find something new every day that MS has
included in the framework that we had previously written our own libraries
for in C++, and the fact that we don't have to spend testing time on those
components allows us to develop in 4 days what previously took us 4 weeks.
It really takes care of the rudimentary processes / "management" while at
the same time gives us the ability to dive right into the Win32 API should
we need it.

With that said, .NET does make you feel like less of a programmer since it
manages so much for you, hence how it resembles a scripting language.
However, my personal outlook on that is if I am in a room with a C++
programmer and we are both working on, say, a $5,000 development project,
after a week of coding, the C++ programmer will still be coding the basic
framework and window management for the application while I'm depositing a
check at the bank... so that's what it comes down to. :)

FWIW on our organization's side of the fence,

Brandon

"Mike P." <an*******@discussions.microsoft.com> wrote in message
news:BC**********************************@microsof t.com...
Hello,

I come from the world of C++ programming, and I'm used to writing programs that are actually executed by the CPU, and that run with some
semblance of performance. I have taken the time to explore this .NET thing,
and found that not only do .NET applications run extremely s-l-o-w-l-y, but
the various .NET languages amount to nothing more than interpreted script
languages. It is the common language run-time that actually executes your
implementation.
I deeply resent this move toward "managed" code, and I'm disappointed that the new Avalon user interface system in Longhorn will use only .NET
facilities. Is this an indication that subsequent versions of Windows will
allow ONLY interpreted applications?
Does anyone else share my feelings about this situation? Can anyone put forth some reason that I should feel better about embracing .NET, when
it is so alien to me?
Sincerely,
Mike

Jul 21 '05 #21
Agree mostly. Your not going to get faster then native c++ to native win32
however. That model will not go away soon. Managed c++ to managed .Net
should be ~same as Managed c# or vb to Managed .net. Unmanaged c++ to
managed will have some overhead probably on par with managed to unmanaged
pinvoke has today. Many of the .Net classes still wrap win32 calls. I
would guess that will continue with WinFX, but at a leaser percentage as
more primitives may be fully managed and exposed. However, most of the low
level primitives (i.e. mutex, IPCs, semaphore, etc) would still be wrappers
around win32. Don't get me wrong here, I have seen the light and love the
managed side. If I never see another pinvoke, I will be very happy.
Cheers!

--
William Stacey, MVP

<Ol**********@skyscan.be> wrote in message
news:40***********************@news.skynet.be...
Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will be faster than conventional executables now.
That would be cool if that was the case. However I don't think that is

so.
Win32 is not going away with LH. WinFx classes will still need to call
Win32 apis in many cases. Even if a class does not pinvoke a win32 api,

why
would it be any faster then a comparable method in native win32? Maybe

the
same, I don't see how faster. That would be nice however if wrong.

Simple, more an more Win32 API is beeing replaced by .NET variants.
That means that .NET programs have less and less transitions from managed

to unmanaged to do.

But for existing Win32 executables, the will need Win32 API's that wraps
functionality to the .NET core.
That means that Win32 executables must go from unmanaged to managed code
transitions. So they will slow down.

.NET programs will be faster because the CLR gets better and better.
At this moment, conventional exe works at its best perfocramence because of the compiler that optimizes it for the current known processors.
If you do not recompile the .NET applcation and conventional program, you
would see that the .NET version gets faster and faster compared to the
conventional program butcause JIT v2.0 will optimize for the most recent
processor while the conventional application is still stuck to the Pentium
IV optimizations.

Conventional executables are static in nature. all methods and functions are laid out in a certain memory order at the moment you compiled and linked.
.NET programs are dynamic in nature. Future JIT compiler might perform
statistics what function is use how often, and might relocate it in a
different memory block so the the most used functions are grouped together
in a small memory address space, ready to be cached more often. Also .NET
programs written in pure OOP way is now far more performant compare to the
OOP version of a C++ unmanaged. because it does not need to delete small
memory memory bloks every time stalling then program. .NET starts deleting
the memory when it either needs memory, or if it can find some time to start cleaning up.

Just be aware! .NET is NOT an interpreter, It compiles the complete code to pure win32 code but optimized for your processor. When JIT matures, it ill
become even better optimizer.

Another thing that must be taken into mind, is the fact that .NET programs
also implements security at the low level standard.
You should compare Win32 functions with also this type of level of security build in. If I remember correctly a web page counter extension for Frontpage 97 could be misused to take over the server. A stupid prgram that only
intended to show a bitmap on screen was misused. This is why all programs
now created should have this security integrated default.Even if it is a
simple screen saver, it could be misused by a worm. (examples enough: e.g.
windows help file could be used to take over your computer) Maybe next
Solitair....

But this is my opinion? I really believe that this .NET is the way to go,
and I admit that I also fight against it to have my code work. ;-)


Jul 21 '05 #22
Agree mostly. Your not going to get faster then native c++ to native win32
however. That model will not go away soon. Managed c++ to managed .Net
should be ~same as Managed c# or vb to Managed .net. Unmanaged c++ to
managed will have some overhead probably on par with managed to unmanaged
pinvoke has today. Many of the .Net classes still wrap win32 calls. I
would guess that will continue with WinFX, but at a leaser percentage as
more primitives may be fully managed and exposed. However, most of the low
level primitives (i.e. mutex, IPCs, semaphore, etc) would still be wrappers
around win32. Don't get me wrong here, I have seen the light and love the
managed side. If I never see another pinvoke, I will be very happy.
Cheers!

--
William Stacey, MVP

<Ol**********@skyscan.be> wrote in message
news:40***********************@news.skynet.be...
Windows core is still unmanaged and .NET prigrams must go through that
transition every time. When Longhorn is out, it wil be reversed. .NET will be faster than conventional executables now.
That would be cool if that was the case. However I don't think that is

so.
Win32 is not going away with LH. WinFx classes will still need to call
Win32 apis in many cases. Even if a class does not pinvoke a win32 api,

why
would it be any faster then a comparable method in native win32? Maybe

the
same, I don't see how faster. That would be nice however if wrong.

Simple, more an more Win32 API is beeing replaced by .NET variants.
That means that .NET programs have less and less transitions from managed

to unmanaged to do.

But for existing Win32 executables, the will need Win32 API's that wraps
functionality to the .NET core.
That means that Win32 executables must go from unmanaged to managed code
transitions. So they will slow down.

.NET programs will be faster because the CLR gets better and better.
At this moment, conventional exe works at its best perfocramence because of the compiler that optimizes it for the current known processors.
If you do not recompile the .NET applcation and conventional program, you
would see that the .NET version gets faster and faster compared to the
conventional program butcause JIT v2.0 will optimize for the most recent
processor while the conventional application is still stuck to the Pentium
IV optimizations.

Conventional executables are static in nature. all methods and functions are laid out in a certain memory order at the moment you compiled and linked.
.NET programs are dynamic in nature. Future JIT compiler might perform
statistics what function is use how often, and might relocate it in a
different memory block so the the most used functions are grouped together
in a small memory address space, ready to be cached more often. Also .NET
programs written in pure OOP way is now far more performant compare to the
OOP version of a C++ unmanaged. because it does not need to delete small
memory memory bloks every time stalling then program. .NET starts deleting
the memory when it either needs memory, or if it can find some time to start cleaning up.

Just be aware! .NET is NOT an interpreter, It compiles the complete code to pure win32 code but optimized for your processor. When JIT matures, it ill
become even better optimizer.

Another thing that must be taken into mind, is the fact that .NET programs
also implements security at the low level standard.
You should compare Win32 functions with also this type of level of security build in. If I remember correctly a web page counter extension for Frontpage 97 could be misused to take over the server. A stupid prgram that only
intended to show a bitmap on screen was misused. This is why all programs
now created should have this security integrated default.Even if it is a
simple screen saver, it could be misused by a worm. (examples enough: e.g.
windows help file could be used to take over your computer) Maybe next
Solitair....

But this is my opinion? I really believe that this .NET is the way to go,
and I admit that I also fight against it to have my code work. ;-)


Jul 21 '05 #23
See inline ****

Willy.

<Ol**********@skyscan.be> wrote in message
news:40***********************@news.skynet.be...
> Windows core is still unmanaged and .NET prigrams must go through that
> transition every time. When Longhorn is out, it wil be reversed. .NET will > be faster than conventional executables now.
That would be cool if that was the case. However I don't think that is

so.
Win32 is not going away with LH. WinFx classes will still need to call
Win32 apis in many cases. Even if a class does not pinvoke a win32 api,

why
would it be any faster then a comparable method in native win32? Maybe

the
same, I don't see how faster. That would be nice however if wrong.

Simple, more an more Win32 API is beeing replaced by .NET variants.


**** Hmmm... which Win32 API's have been replaced sofar?
More and more win32 API's are introduced by now (see W2K3 and LH).
That means that .NET programs have less and less transitions from managed
to
unmanaged to do.
*** No that's not true, .NET is built upon Win32, somehow, it will allways
need to transition between managed and Win32 for system services.

But for existing Win32 executables, the will need Win32 API's that wraps
functionality to the .NET core.
That means that Win32 executables must go from unmanaged to managed code
transitions. So they will slow down.
*** And break alot of existing applications, do you realy think the Server
and Office folks at MS are willing:
- to pay this perf. hit?
- to compromise the reliability of their server?

.NET programs will be faster because the CLR gets better and better.
At this moment, conventional exe works at its best perfocramence because
of
the compiler that optimizes it for the current known processors.
If you do not recompile the .NET applcation and conventional program, you
would see that the .NET version gets faster and faster compared to the
conventional program butcause JIT v2.0 will optimize for the most recent
processor while the conventional application is still stuck to the Pentium
IV optimizations.

*** Don't overestimate the power of the JITter, he's heavily constrained by
the "time to optimize", and don't overestimate the power of the newer
processor family.
Don't forget that the latest native code compilers also generate better &
faster code, and that parts of the system cannot afford the overhead of the
GC both in time and space (think about drivers and core windows component
like the memory manager, scheduller, interupt handler....). And here I'm not
gonna talk about robustness, but why do you think Yukon and .NET 2.0 are
getting delayed?
Conventional executables are static in nature. all methods and functions
are
laid out in a certain memory order at the moment you compiled and linked.
.NET programs are dynamic in nature. Future JIT compiler might perform
statistics what function is use how often, and might relocate it in a
*** "might", yes but officially anounced, no. For the moment MS has other
performance issues to solve which have much more impact than some profile
guided JITter.

different memory block so the the most used functions are grouped together
in a small memory address space, ready to be cached more often. Also .NET
programs written in pure OOP way is now far more performant compare to the
OOP version of a C++ unmanaged. because it does not need to delete small
memory memory bloks every time stalling then program. .NET starts deleting
the memory when it either needs memory, or if it can find some time to
start
cleaning up.

Just be aware! .NET is NOT an interpreter, It compiles the complete code
to
pure win32 code but optimized for your processor. When JIT matures, it ill
become even better optimizer.

Another thing that must be taken into mind, is the fact that .NET programs
also implements security at the low level standard.
You should compare Win32 functions with also this type of level of
security
build in. If I remember correctly a web page counter extension for
Frontpage
97 could be misused to take over the server. A stupid prgram that only
intended to show a bitmap on screen was misused. This is why all programs
now created should have this security integrated default.Even if it is a
simple screen saver, it could be misused by a worm. (examples enough: e.g.
windows help file could be used to take over your computer) Maybe next
Solitair....

But this is my opinion? I really believe that this .NET is the way to go,
and I admit that I also fight against it to have my code work. ;-)

Jul 21 '05 #24
See inline ****

Willy.

<Ol**********@skyscan.be> wrote in message
news:40***********************@news.skynet.be...
> Windows core is still unmanaged and .NET prigrams must go through that
> transition every time. When Longhorn is out, it wil be reversed. .NET will > be faster than conventional executables now.
That would be cool if that was the case. However I don't think that is

so.
Win32 is not going away with LH. WinFx classes will still need to call
Win32 apis in many cases. Even if a class does not pinvoke a win32 api,

why
would it be any faster then a comparable method in native win32? Maybe

the
same, I don't see how faster. That would be nice however if wrong.

Simple, more an more Win32 API is beeing replaced by .NET variants.


**** Hmmm... which Win32 API's have been replaced sofar?
More and more win32 API's are introduced by now (see W2K3 and LH).
That means that .NET programs have less and less transitions from managed
to
unmanaged to do.
*** No that's not true, .NET is built upon Win32, somehow, it will allways
need to transition between managed and Win32 for system services.

But for existing Win32 executables, the will need Win32 API's that wraps
functionality to the .NET core.
That means that Win32 executables must go from unmanaged to managed code
transitions. So they will slow down.
*** And break alot of existing applications, do you realy think the Server
and Office folks at MS are willing:
- to pay this perf. hit?
- to compromise the reliability of their server?

.NET programs will be faster because the CLR gets better and better.
At this moment, conventional exe works at its best perfocramence because
of
the compiler that optimizes it for the current known processors.
If you do not recompile the .NET applcation and conventional program, you
would see that the .NET version gets faster and faster compared to the
conventional program butcause JIT v2.0 will optimize for the most recent
processor while the conventional application is still stuck to the Pentium
IV optimizations.

*** Don't overestimate the power of the JITter, he's heavily constrained by
the "time to optimize", and don't overestimate the power of the newer
processor family.
Don't forget that the latest native code compilers also generate better &
faster code, and that parts of the system cannot afford the overhead of the
GC both in time and space (think about drivers and core windows component
like the memory manager, scheduller, interupt handler....). And here I'm not
gonna talk about robustness, but why do you think Yukon and .NET 2.0 are
getting delayed?
Conventional executables are static in nature. all methods and functions
are
laid out in a certain memory order at the moment you compiled and linked.
.NET programs are dynamic in nature. Future JIT compiler might perform
statistics what function is use how often, and might relocate it in a
*** "might", yes but officially anounced, no. For the moment MS has other
performance issues to solve which have much more impact than some profile
guided JITter.

different memory block so the the most used functions are grouped together
in a small memory address space, ready to be cached more often. Also .NET
programs written in pure OOP way is now far more performant compare to the
OOP version of a C++ unmanaged. because it does not need to delete small
memory memory bloks every time stalling then program. .NET starts deleting
the memory when it either needs memory, or if it can find some time to
start
cleaning up.

Just be aware! .NET is NOT an interpreter, It compiles the complete code
to
pure win32 code but optimized for your processor. When JIT matures, it ill
become even better optimizer.

Another thing that must be taken into mind, is the fact that .NET programs
also implements security at the low level standard.
You should compare Win32 functions with also this type of level of
security
build in. If I remember correctly a web page counter extension for
Frontpage
97 could be misused to take over the server. A stupid prgram that only
intended to show a bitmap on screen was misused. This is why all programs
now created should have this security integrated default.Even if it is a
simple screen saver, it could be misused by a worm. (examples enough: e.g.
windows help file could be used to take over your computer) Maybe next
Solitair....

But this is my opinion? I really believe that this .NET is the way to go,
and I admit that I also fight against it to have my code work. ;-)

Jul 21 '05 #25
> With that said, .NET does make you feel like less of a programmer since it
manages so much for you, hence how it resembles a scripting language.


I don't get the scripting language reference. c# and vb.net don't resemble
any scripting language anymore then any other language. I think your
talking more about the framework anyway then the actual language. Move to
msh, ksh, perl for scripting languages. That said, perl has a .Net language
so I guess the line can blur a bit. That makes me wonder, anyone do a ksh
package for VS yet?

--
William Stacey, MVP
Jul 21 '05 #26
> With that said, .NET does make you feel like less of a programmer since it
manages so much for you, hence how it resembles a scripting language.


I don't get the scripting language reference. c# and vb.net don't resemble
any scripting language anymore then any other language. I think your
talking more about the framework anyway then the actual language. Move to
msh, ksh, perl for scripting languages. That said, perl has a .Net language
so I guess the line can blur a bit. That makes me wonder, anyone do a ksh
package for VS yet?

--
William Stacey, MVP
Jul 21 '05 #27
Hi Mike,

Are you sure of this what you are writting about C++, are you really putting
every pixel by pixel on the screen every time again after that you have
chosen the right color from that pixel.

And are you really adding every byte to the register, accumulate the
registers, and than put them back in a memory place or to another register.

If not than what when the Net does some more than only the things you say
you are doing now with C++.

Just my thougth

Cor


Jul 21 '05 #28
Hi Mike,

Are you sure of this what you are writting about C++, are you really putting
every pixel by pixel on the screen every time again after that you have
chosen the right color from that pixel.

And are you really adding every byte to the register, accumulate the
registers, and than put them back in a memory place or to another register.

If not than what when the Net does some more than only the things you say
you are doing now with C++.

Just my thougth

Cor


Jul 21 '05 #29
When I made that reference (and I think the reference that Mike is referring
to, although I cannot speak for him), I am referring to the general
"feeling" that you get from programming in .NET (especially VB.NET) -- Since
you start a project and it's able to run and display an interactive user
interface from the first second you use it (thank you, code generator), it's
like all you have to do is put in the functionality, which is more like a
scripting language.

I have heard this reference once before by a team of programmers that wished
to remain in C++ to retain their status of "real" programmers and would not
touch .NET. I was thinking to myself how I would never hire them with that
attitude, but it might just be because I don't think you should care how
"real" or "fake" you are as a programmer if you produce robust results that
keep customers happy. I guess if you are working in a RAD environment where
you can produce results quickly and don't have to mess with the more "geeky"
side of things (establishing the Win32 While() message loop and spend hours
and hours writing the code to paint the display), then it makes you look
more like a script programmer. Kind of in the same way that some people
swear on C# and play down VB.NET because it's a more complicated syntax,
when the functionality is almost identical.

Any philosophical thoughts on "real" vs. "fake" programmer psychology? ;)

Brandon

"William Stacey [MVP]" <st***********@mvps.org> wrote in message
news:ul**************@TK2MSFTNGP10.phx.gbl...
With that said, .NET does make you feel like less of a programmer since it manages so much for you, hence how it resembles a scripting language.
I don't get the scripting language reference. c# and vb.net don't

resemble any scripting language anymore then any other language. I think your
talking more about the framework anyway then the actual language. Move to
msh, ksh, perl for scripting languages. That said, perl has a .Net language so I guess the line can blur a bit. That makes me wonder, anyone do a ksh
package for VS yet?

--
William Stacey, MVP

Jul 21 '05 #30
When I made that reference (and I think the reference that Mike is referring
to, although I cannot speak for him), I am referring to the general
"feeling" that you get from programming in .NET (especially VB.NET) -- Since
you start a project and it's able to run and display an interactive user
interface from the first second you use it (thank you, code generator), it's
like all you have to do is put in the functionality, which is more like a
scripting language.

I have heard this reference once before by a team of programmers that wished
to remain in C++ to retain their status of "real" programmers and would not
touch .NET. I was thinking to myself how I would never hire them with that
attitude, but it might just be because I don't think you should care how
"real" or "fake" you are as a programmer if you produce robust results that
keep customers happy. I guess if you are working in a RAD environment where
you can produce results quickly and don't have to mess with the more "geeky"
side of things (establishing the Win32 While() message loop and spend hours
and hours writing the code to paint the display), then it makes you look
more like a script programmer. Kind of in the same way that some people
swear on C# and play down VB.NET because it's a more complicated syntax,
when the functionality is almost identical.

Any philosophical thoughts on "real" vs. "fake" programmer psychology? ;)

Brandon

"William Stacey [MVP]" <st***********@mvps.org> wrote in message
news:ul**************@TK2MSFTNGP10.phx.gbl...
With that said, .NET does make you feel like less of a programmer since it manages so much for you, hence how it resembles a scripting language.
I don't get the scripting language reference. c# and vb.net don't

resemble any scripting language anymore then any other language. I think your
talking more about the framework anyway then the actual language. Move to
msh, ksh, perl for scripting languages. That said, perl has a .Net language so I guess the line can blur a bit. That makes me wonder, anyone do a ksh
package for VS yet?

--
William Stacey, MVP

Jul 21 '05 #31
Brandon Potter <microsoft@brandonpotter_nospam.com> wrote:
When I made that reference (and I think the reference that Mike is referring
to, although I cannot speak for him), I am referring to the general
"feeling" that you get from programming in .NET (especially VB.NET) -- Since
you start a project and it's able to run and display an interactive user
interface from the first second you use it (thank you, code generator), it's
like all you have to do is put in the functionality, which is more like a
scripting language.
That has nothing to do with scripting - it's just being RAD-oriented.

Personally I avoid the forms designer when I can, but there we go. (I
tend to get more readable and maintainable code that way.)
I have heard this reference once before by a team of programmers that wished
to remain in C++ to retain their status of "real" programmers and would not
touch .NET.
That sounds like a silly comment to me from people who care more about
being "macho" than being productive. Why spend time thinking about
problems which have already been solved when you can be tackling new
problems inherent in whatever application you're trying to write?
I was thinking to myself how I would never hire them with that
attitude, but it might just be because I don't think you should care how
"real" or "fake" you are as a programmer if you produce robust results that
keep customers happy.
Exactly - and as long as you enjoy your job, of course.
I guess if you are working in a RAD environment where
you can produce results quickly and don't have to mess with the more "geeky"
side of things (establishing the Win32 While() message loop and spend hours
and hours writing the code to paint the display), then it makes you look
more like a script programmer.
I don't think so - but then maybe I don't have the pejorative idea of a
script programmer that your colleagues do. There are plenty of times
when scripting is the best solution to a problem, but that doesn't make
it any less "real" programming, IMO. To me, a *good* programmer knows
to use the best tool for the job. There are still good reasons to use
native code rather than managed code in some cases, but "looking cool
as a programmer" is never one of them.
Kind of in the same way that some people
swear on C# and play down VB.NET because it's a more complicated syntax,
when the functionality is almost identical.

Any philosophical thoughts on "real" vs. "fake" programmer psychology? ;)


Try getting them to explain how they tackle all interntationalisation
problems (including surrogates etc), their multithreading strategies
etc. There's still plenty to think about in .NET.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Jul 21 '05 #32
Brandon Potter <microsoft@brandonpotter_nospam.com> wrote:
When I made that reference (and I think the reference that Mike is referring
to, although I cannot speak for him), I am referring to the general
"feeling" that you get from programming in .NET (especially VB.NET) -- Since
you start a project and it's able to run and display an interactive user
interface from the first second you use it (thank you, code generator), it's
like all you have to do is put in the functionality, which is more like a
scripting language.
That has nothing to do with scripting - it's just being RAD-oriented.

Personally I avoid the forms designer when I can, but there we go. (I
tend to get more readable and maintainable code that way.)
I have heard this reference once before by a team of programmers that wished
to remain in C++ to retain their status of "real" programmers and would not
touch .NET.
That sounds like a silly comment to me from people who care more about
being "macho" than being productive. Why spend time thinking about
problems which have already been solved when you can be tackling new
problems inherent in whatever application you're trying to write?
I was thinking to myself how I would never hire them with that
attitude, but it might just be because I don't think you should care how
"real" or "fake" you are as a programmer if you produce robust results that
keep customers happy.
Exactly - and as long as you enjoy your job, of course.
I guess if you are working in a RAD environment where
you can produce results quickly and don't have to mess with the more "geeky"
side of things (establishing the Win32 While() message loop and spend hours
and hours writing the code to paint the display), then it makes you look
more like a script programmer.
I don't think so - but then maybe I don't have the pejorative idea of a
script programmer that your colleagues do. There are plenty of times
when scripting is the best solution to a problem, but that doesn't make
it any less "real" programming, IMO. To me, a *good* programmer knows
to use the best tool for the job. There are still good reasons to use
native code rather than managed code in some cases, but "looking cool
as a programmer" is never one of them.
Kind of in the same way that some people
swear on C# and play down VB.NET because it's a more complicated syntax,
when the functionality is almost identical.

Any philosophical thoughts on "real" vs. "fake" programmer psychology? ;)


Try getting them to explain how they tackle all interntationalisation
problems (including surrogates etc), their multithreading strategies
etc. There's still plenty to think about in .NET.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Jul 21 '05 #33
> I have heard this reference once before by a team of programmers that
wished
to remain in C++ to retain their status of "real" programmers and would not touch .NET.
As Don Box once said; "..time will take care of these people because they
don't reproduce." <g>
I was thinking to myself how I would never hire them with that
attitude, but it might just be because I don't think you should care how
"real" or "fake" you are as a programmer if you produce robust results that keep customers happy. I guess if you are working in a RAD environment where you can produce results quickly and don't have to mess with the more "geeky" side of things (establishing the Win32 While() message loop and spend hours and hours writing the code to paint the display), then it makes you look
more like a script programmer. Kind of in the same way that some people
swear on C# and play down VB.NET because it's a more complicated syntax,
when the functionality is almost identical.


I guess you can argue either way. However, the same people said the same
things when moving from assembler and c to c++. I guess this will always
be. We love what we know and resist change at times. That said, I think
they hit a sweet spot with c# on form and function. You can almost go as
close to metal as you want to get.

--
William Stacey, MVP

Jul 21 '05 #34
> I have heard this reference once before by a team of programmers that
wished
to remain in C++ to retain their status of "real" programmers and would not touch .NET.
As Don Box once said; "..time will take care of these people because they
don't reproduce." <g>
I was thinking to myself how I would never hire them with that
attitude, but it might just be because I don't think you should care how
"real" or "fake" you are as a programmer if you produce robust results that keep customers happy. I guess if you are working in a RAD environment where you can produce results quickly and don't have to mess with the more "geeky" side of things (establishing the Win32 While() message loop and spend hours and hours writing the code to paint the display), then it makes you look
more like a script programmer. Kind of in the same way that some people
swear on C# and play down VB.NET because it's a more complicated syntax,
when the functionality is almost identical.


I guess you can argue either way. However, the same people said the same
things when moving from assembler and c to c++. I guess this will always
be. We love what we know and resist change at times. That said, I think
they hit a sweet spot with c# on form and function. You can almost go as
close to metal as you want to get.

--
William Stacey, MVP

Jul 21 '05 #35
Hi William,
I don't get the scripting language reference.


C++ is too a kind of scripting language. It has not that true connection to
the computer as assembler, with which you can direct translate every
instruction in a equivalent machine code.

It is just the point of view that you use.

:-))))

Cor
Jul 21 '05 #36
Hi William,
I don't get the scripting language reference.


C++ is too a kind of scripting language. It has not that true connection to
the computer as assembler, with which you can direct translate every
instruction in a equivalent machine code.

It is just the point of view that you use.

:-))))

Cor
Jul 21 '05 #37
> In short, no. If you like your C++ programming, there is no Microsoft army
that is going to confiscate your workstation should you not come to the
other side. If *you* think .NET can improve the way you or your organization works, then use .NET. With that I can offer what we have seen so far, if it helps.
Agree.
I have started some smaller .NET projects because I can create these same
programs 7 times faster with far better user functionality including dragn
and drop, colors, tooltips,... compared to the older C++ technology using
MFC. Starting up is slower, but I do not see any noticable performance
problems. But that is because I also use unmanaged C++ functionality mixed
for none user interface stuff.

The biggest resistance I get is from people that are totally new to .NET and
have to install the .NET framework and somehow trust my strong name when
they want to use the program from the network.
With that said, .NET does make you feel like less of a programmer since it
manages so much for you, hence how it resembles a scripting language.
However, my personal outlook on that is if I am in a room with a C++
programmer and we are both working on, say, a $5,000 development project,
after a week of coding, the C++ programmer will still be coding the basic
framework and window management for the application while I'm depositing a
check at the bank... so that's what it comes down to. :)

I don't feel less programmer. :-)
Now I can concentrate on important stuff and create new technology instead
of fiddeling with reading a value from a combo box. :-)

Jul 21 '05 #38
> Any philosophical thoughts on "real" vs. "fake" programmer psychology? ;)

From my point of view, real programmers create new programming technology,
try to find new techniques to make using the program much simpler to use.
Real programmers evolve and like to learn and explore new technology. And
try to make the program more user friendly.

Other programmers in my opinion are the people that get stuck to old (but
proven) technology. Once in their life they did an effort to learn C++ and
MFC and now they only use the existing code they know of, unless their
compiler cannot be bought anymore. This is not wrong, but they create
programs that are ancient by the time they release it. Sure it will be the
fastest meanest smallest code, but it will look like a TRABANT while
everybody now have a Mercedes. Not very user friendly.

Fake programmers just create a program that looks nice but don't care if it
works or not, as long as they can sell it with a lot of promisses.

But there is one very important reason why to use .NET! That is the security
that you get for free even though you are not developing for Internet, it
will help improving the stability of the Operating system against worms and
virusses. There is still a misconception that only programs used by the
Internet are vunerable, but in reality, *any* program can be misused by a
worm and virus. For example: the Windows help file. Maybe now, a lot of
companies use standalone PC's but what in 5 years when that program is still
beening used, but put on a computer with network access?


Jul 21 '05 #39
> I have heard this reference once before by a team of programmers that
wished
to remain in C++ to retain their status of "real" programmers and would not
touch .NET.


As Don Box once said; "..time will take care of these people because they
don't reproduce." <g>

Endangered species.:-)
They don't evolve. :-)
But I don't think that they program in C++, I honestly believe that they
still use the C part only while using some parts of the C++ class libraries.
I guess you can argue either way. However, the same people said the same
things when moving from assembler and c to c++. I guess this will always
be. We love what we know and resist change at times. That said, I think
they hit a sweet spot with c# on form and function. You can almost go as
close to metal as you want to get.

Assembler is still beeing programmed!
I do, but not als a whole program but parts of the C++ code that needs
optimized for speed (MMX, SSE, SSE2).

I am still suprised that so many C++ programmers still program in normal C.
They create one huge class, and clame it is C++! ;-)


Jul 21 '05 #40
> I am still suprised that so many C++ programmers still program in normal
C.
They create one huge class, and clame it is C++! ;-)


:-)

Jul 21 '05 #41
Well, well, well. .Net is not for everybody. I know there are the
programming purists that learned to write code at age 5 with some box
weighing 80 lbs. that the father brought home one Christmas. They only
use the command line and a text editor. Wow, impressive. If you apply
the same rule to other things in life, we would:

:: still ride horses instead of driving automobiles.
:: mail all my bills instead of paying online
:: take medicine instead of blood letting
:: throw in 8-tracks and refuse to by CDs
:: ...you get the point

If you don't like it. Don't use it. Write your C++++ programs,
etc....that is fine with me. I have actually had 5 phone calls within 24
hours for .net programmer positions. I have worked with .Net since Beta
1 and I think it is fine for me. However, it doesn't make sense to waste
time trying to prove it to someone who doesn't need it.

If you don't need it, don't buy it or use it. I now this is hard because
most Americans buy everything they see on TV and hear on the radio. It's
a fact.

REMEMBER: It is a programming language and framework, not life!!!!!

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Jul 21 '05 #42
Wow, impressive.
If you apply the same rule to other things in life, we would:

:: still ride horses instead of driving automobiles.
:: mail all my bills instead of paying online
:: take medicine instead of blood letting
:: throw in 8-tracks and refuse to by CDs
:: ...you get the point


Isn't this called amish?

But serios, I think "a real programmer can write Fortran
in any language" :-)

A real programmer knowns many tools, the more the better.
And he knows what to choose from his toolbox.

I would not write a database application in assembly.
Maybe parts of the database engine.
I would not write a driver in VB (although I know is possible
and I know how).

And what is C++ right now?
A completely different beast than 10 years ago.
If you have the fundamentals (brain, data structures, algorithms),
the programming language does not matter the language so much.

If you are a surgeon, go travel to Germany and have to operate
with a German team, what is the most important thing?
To know what to do and how? Or to know German?

Ok, enough. This is all common sense, and sounds stupid.
But I did spend the time to write it, so I will just send it :-)
--
Mihai
-------------------------
Replace _year_ with _ to get the real email
Jul 21 '05 #43

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Margaret MacDonald | last post by:
....before I lose what remains of my mind? The problem is that the tetragraph 'PPLL' is apparently not being recognised for some reason I can't begin to see. The test code is: echo 'before...
5
by: Ryan | last post by:
I have some software (written in Delphi 5) which has been working for several months without a problem. I have been given a copy of the database on our development server (SQL 7) and have...
4
by: Mike | last post by:
Hello, I'm interested in changing appearance of browser using ASP. For example, remove location bar, toolbar, menubar, statusbar (much like the browser interface on posting a question on this...
9
by: TCMA | last post by:
I am looking for some tools to help me understand source code of a program written in C++ by someone else. Are there any non-commercial, open source C or C++ tools to reverse engineer C or C++...
9
by: bounce | last post by:
Hello, Consider the following HTML: <form action="/cgi-bin/mailmanager.pl" method="post"> <input type="hidden" name="recipient" value="bounce@springbock.net"> <input type="hidden"...
4
by: Merlin | last post by:
Hey All, I`ll Pay someone to tell me this now, as its doing my head in, I carn`t see out on the net and no one seems to know! I have a form that connects to a Access database, and I have a...
24
by: Mike P. | last post by:
Hello I come from the world of C++ programming, and I'm used to writing programs that are actually executed by the CPU, and that run with some semblance of performance. I have taken the time to...
10
by: Miro | last post by:
I wanted certain text boxes ( only certain ones ) to always be Trim'd so that spaces are not in the begining, nor the end of the text entered. I created my own "Handle ?" - i hope thats the...
5
by: raha | last post by:
hi. Is there any body to help me? I am writing a web program. I have some forms. each form have some controls and users can edit the controls. finally they can save their forms. I would like...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.