Maker Pro
Maker Pro

.NET Framework ??

R

Rich Grise

Jan 1, 1970
0
The Real Andy wrote: ....

Sorry it's not.
but that doesn't mean it's any good either.

It was made by MICRO$~1, and therefore is crap by definition.

Cheers!
Rich
 
J

JeffM

Jan 1, 1970
0
Jim Thompson wroteComplete hogwash.
[More of Andy telling more than he knows]
Genome said:
Shows how much I know then...

Andy is no more right than you are. Unless he's trying to say
that dot-Net is similar to Java in that it is *a layer*,
he is just blowing smoke.
The (open source) equivalent of dot-Net, is Mono:
http://en.wikipedia.org/wiki/Mono_(software)

I agree with those who are saying that uninstalling it
(and reinstalling it later) has the propensity to do damage.
Before long, Jim will come across some other idiot
who wrote some tiny app that requires this monstrosity.

As Jasen said, by that time this version may be obsolete. 8-(
Mark Chun (qrk) really hit the nail in the head
when he mentioned *version hell*.
 
T

The Real Andy

Jan 1, 1970
0
Jim Thompson wroteComplete hogwash.
[More of Andy telling more than he knows]
Genome said:
Shows how much I know then...

Andy is no more right than you are. Unless he's trying to say
that dot-Net is similar to Java in that it is *a layer*,
he is just blowing smoke.

Actually, i think you will find that the fundamental design is
essentially the same these days.
The (open source) equivalent of dot-Net, is Mono:
http://en.wikipedia.org/wiki/Mono_(software)

I agree with those who are saying that uninstalling it
(and reinstalling it later) has the propensity to do damage.
Before long, Jim will come across some other idiot
who wrote some tiny app that requires this monstrosity.

Every app I write now uses the .net framework. The other day I wrote
an app for one of the tech support guys in half a day that would have
taken me a week in MFC. The app is going to less susceptable to bugs
than an MFC equivelent, and the code is far more secure. Thats why
people use it.
As Jasen said, by that time this version may be obsolete. 8-(
Mark Chun (qrk) really hit the nail in the head
when he mentioned *version hell*.

The idea behind .net is that you can install multiple versions of the
framework, and they will all work alongside each other. You could not
do that with DLL's.

As for dot net, there is 1.0, 1.1 and 2.0. With vista comes 3.0, but
that is pretty much 2.0 with WCF and WPF rolled in.
 
T

The Real Andy

Jan 1, 1970
0
Sorry it's not.
but that doesn't mean it's any good either.

The code behind maybe different, but the model is essentially the
same. Both are managed languages, both compile to an intermediate
language, both are JIT compiled at runtime.
Bad comment to make, Borland apps have nothing to do with security
issues, it's the people writing the code and that's where the problem
is. .NET Robust? i don't think so. Cripple and slow ? yes/.

..net is robust in the same sense as java. Sure you can write unsafe
code (in fact MS even use the term unsafe in the languages) but then
you are being plain mad.

Cripple and Slow? You quite clearly have never used it in a commercial
environment. I do, in an enterprise environment, and I can assure you
it not cripple and slow.
Microsoft loves people like you, easy brain washing.

Microsoft love people like me because we spend money on their
products. I don't buy the MS marketing, I buy the products because I
can develop in a shorter timeframe and my code is a lot more robust.
In a commercial environment that means a lot, the business gets what
they want on time, I get paid and they then give me more work because
I can deliver. Its pretty simple.
Sorry, you don't know what you're talking about. Now you may be
talking about the VCL. That is Borlands class library and it has no
MFC what's so ever.

Sorry, I meant Win32. However in saying that, when Borland dropped OWL
they began paying MS a licence fee to use MFC. I have not touched
Borland for some time now, so I don't really know what the deal is
these days.

I did just knock back a job that involved Borland C++ however. Also
knocked back a Delphi job too, both in preference for a job doing
enterprise .net systems.
Before going off on a tangent, I suggest you get the
facts straight.

You must be Borland user.
 
C

Chuck Harris

Jan 1, 1970
0
The said:
.net is robust in the same sense as java. Sure you can write unsafe
code (in fact MS even use the term unsafe in the languages) but then
you are being plain mad.

Java runs in a safe and secure "sandbox" it cannot gain access to anything
you don't give it access to. It is safe by design... that said, I don't
write Java, or C#... I prefer the embedded world.
Cripple and Slow? You quite clearly have never used it in a commercial
environment. I do, in an enterprise environment, and I can assure you
it not cripple and slow.


Microsoft love people like me because we spend money on their
products. I don't buy the MS marketing, I buy the products because I
can develop in a shorter timeframe and my code is a lot more robust.
In a commercial environment that means a lot, the business gets what
they want on time, I get paid and they then give me more work because
I can deliver. Its pretty simple.

I never found that to be true. I have found that Microsoft's applications
tend to confound my efforts to write good software. I would much rather work
with opensource.

The problem as I see it, is MiracleSlop has such a monopoly on seats in
the computer world that finding opensource work is difficult. It is worth
the effort, though, as it is so much easier and more reliable.

-Chuck
 
J

Jamie

Jan 1, 1970
0
The said:
The code behind maybe different, but the model is essentially the
same. Both are managed languages, both compile to an intermediate
language, both are JIT compiled at runtime.
Crap , crap and double crap.
.NET is not the same in the background.
.net is robust in the same sense as java. Sure you can write unsafe
code (in fact MS even use the term unsafe in the languages) but then
you are being plain mad.

Cripple and Slow? You quite clearly have never used it in a commercial
environment. I do, in an enterprise environment, and I can assure you
it not cripple and slow.
Typical young coder.. I've been around the barn far longer than
you think.
I feel sorry for people like you getting lead down that dark
path.

Microsoft love people like me because we spend money on their
products. I don't buy the MS marketing, I buy the products because I
can develop in a shorter timeframe and my code is a lot more robust.
In a commercial environment that means a lot, the business gets what
they want on time, I get paid and they then give me more work because
I can deliver. Its pretty simple.

Yeah i know, it's pretty simple. MS loves simple users.
glad you finally admitted it.
Sorry, I meant Win32. However in saying that, when Borland dropped OWL
they began paying MS a licence fee to use MFC. I have not touched
Borland for some time now, so I don't really know what the deal is
these days.
Borland has never implemented any of MFC in any of the produces to the
end user. I don't know where you got this information from but it's
clearly incorrect. Borland has there own set of class libraries that
simply sprang from the early days of OWL. they call it the VCL now.
VCL = Visual Control Library.

I did just knock back a job that involved Borland C++ however. Also
knocked back a Delphi job too, both in preference for a job doing
enterprise .net systems.

Don't feel bad, you did them a favor by not letting them hire you.

You must be Borland user.
Yes i am , i'm also a MS VC++, VS , user.
write code for Windows Mobile etc..
I've been in the field sense the day's of
punch card computers and have fallow the
product line's of Borland, MS, Symantic, Watcom
to say a few.
Now that we're done with our pissing contest, go back
to your slow .NET MS controlled applications. and hope
you have fun writing slow bloated code.
Just think, since you're suck a good MS customer, maybe they
won't make you wait for months to fix a crash/serious bug that
arises in your code due to a frame work error that only MS can
fix.
 
J

Jamie

Jan 1, 1970
0
Chuck said:
Java runs in a safe and secure "sandbox" it cannot gain access to anything
you don't give it access to. It is safe by design... that said, I don't
write Java, or C#... I prefer the embedded world.



I never found that to be true. I have found that Microsoft's applications
tend to confound my efforts to write good software. I would much rather
work
with opensource.

The problem as I see it, is MiracleSlop has such a monopoly on seats in
the computer world that finding opensource work is difficult. It is worth
the effort, though, as it is so much easier and more reliable.

-Chuck
Well, finally some one that knows something!
 
T

The Real Andy

Jan 1, 1970
0
Crap , crap and double crap.
.NET is not the same in the background.

Typical young coder.. I've been around the barn far longer than
you think.

Ha ha ha, i take that as a compliment.
I feel sorry for people like you getting lead down that dark
path.

The path to finacial success. Its funny how when people lose an
argument they resort to insulting people.

Yeah i know, it's pretty simple. MS loves simple users.
glad you finally admitted it.

Borland has never implemented any of MFC in any of the produces to the
end user. I don't know where you got this information from but it's
clearly incorrect. Borland has there own set of class libraries that
simply sprang from the early days of OWL. they call it the VCL now.
VCL = Visual Control Library.

Ahh, remember when Borland dropped OWL, they licenced MFC? Remeber
that there was some condition regarding the approval that prevented
Borland from continuing with MFC? It was about this time that everyone
stopped using broland products. VCL is completely different.


Don't feel bad, you did them a favor by not letting them hire you.

Its funny how when people lose an argument they resort to insulting
people.

Yes i am , i'm also a MS VC++, VS , user.
write code for Windows Mobile etc..
I've been in the field sense the day's of
punch card computers and have fallow the
product line's of Borland, MS, Symantic, Watcom
to say a few.

Excellent, you must be very successful in your job.
Now that we're done with our pissing contest, go back
to your slow .NET MS controlled applications. and hope
you have fun writing slow bloated code.

I still cant see where you get slow and bloated from. You really
should spend some time using .net, you will be surprised.
Just think, since you're suck a good MS customer, maybe they
won't make you wait for months to fix a crash/serious bug that
arises in your code due to a frame work error that only MS can
fix.

Hasn't happened to me yet, and I have been using .net for 4 years now.
 
M

Michael Brown

Jan 1, 1970
0
The said:
Jamie wrote: [...]
Borland has never implemented any of MFC in any of the produces to
the end user. I don't know where you got this information from but
it's clearly incorrect. Borland has there own set of class libraries
that simply sprang from the early days of OWL. they call it the VCL
now. VCL = Visual Control Library.

Ahh, remember when Borland dropped OWL, they licenced MFC? Remeber
that there was some condition regarding the approval that prevented
Borland from continuing with MFC? It was about this time that everyone
stopped using broland products. VCL is completely different.

IIRC, Borland licenced MFC around the time of C++ 5. It was only included
for compatibility reasons so that you could compile your MFC apps with BC++,
and it didn't always work 100% (due to the dependence of MFC on MSVC
undocumented extensions). OWL was still very much the focus of BC++ 5.

BCB was the next product in line, and this used VCL instead of OWL. OWL
wasn't dropped until BCB5, though it was (like MFC) included only for
compiling older projects with the newer compiler. MFC compatibility is
included all the way through the BCB line AFAIK, though it's for compiling
only. You can't use the designer to make MFC GUIs.

There was a big debate a couple of years ago in one of the borland NG's
about when/why/how Borland "lost" the C++ market. Their marketshare had
dropped substantially long before BCB was released, or OWL was ditched for
that matter. The basic problem was versions 4 and 5 of BC++ were pretty bad
(especially the IDE), and OWL was simply not being updated and fixed very
quickly. While they picked up some new people with the VCL (though more with
Delphi than BCB) they'd lost their momentum in the C++ market, and with MS's
aggressive pushing of MSVC (and later poaching of a significant number of
key Borland developers) it was pretty much impossible to come back again.

[...]
I still cant see where you get slow and bloated from. You really
should spend some time using .net, you will be surprised.

You've never tried running a .NET application on a machine with 512MB of
RAM, I guess? :)

Cold start times for .NET applications are terrible. Even a simple winforms
"Hello World" takes somewhere between 15-25 seconds (depending on the phase
of the moon) to start where the CLR isn't already loaded (for example, after
a reboot, or if you have 512 MB of RAM as the CLR files fall out of the
cache pretty quickly). Warm start times are better, though still in the
order of 3-4 seconds. Compared to, say, firefox, which cold-starts in a bit
under 10 seconds and warm-starts basically instantly. While this isn't a
problem for applications that run all the time, it prevents .NET from being
used for small utility applications - I don't want to wait for 3 or so
seconds while calc or notepad starts, for example. Similarly, meory usage is
terrible for .NET apps - a "Hello World" takes up around 7MB of RAM.

As MS forces more and more .NET stuff on people, these problems wil become
less significant since the framework will always be loaded - it's not really
a nice solution, though, as all that means is that you've got bloat loaded
all the time (taking up space that could be used for better purposes), not
just when you run an app that needs it.

Performance-wise, it's a bit hard to compare. For complex FP stuff , .NET is
slower (at least on K7 Athlons and P4's), no questions there. It depends on
the exact algorithm, but I've typically seen anything from a 20% to a 100%
increase in computation time required. CPU-intensive stuff in general is
slower, but most of the tests I've done are FP-based things so I can't give
a decent range for other types. For I/O intensive stuff such as throwing
files through sockets, most of the time is spent outside the application, so
although the application may only be operating at half the speed of a native
app it doesn't really matter. I could go on and on ... basically, CLR is
significantly slower than C++ code compiled to native code, but unless your
application is CPU-bound in your code, it doesn't matter a whole lot.

The biggest problem I've found is that, although you can code a .NET to be
fast, it's not encouraged. A lot of the things that make .NET development
easy also make the resulting application slow. The end result of this is
things like ATI's CCC - massive memory use, slow startup times, laggy
interface, etc etc. While I know that CCC is not representitive of a "good"
..NET app, it is representitive of a vast majority of .NET apps.
Hasn't happened to me yet, and I have been using .net for 4 years now.

While I can't say I've run into a problem that *can't* be worked around,
some bugs (mainly in the 1.0 and 1.1 era) have required significant and/or
ugly workarounds (which had to be developed using trial and error). One of
the things I love about Borland's VCL is that you get the source code, which
means you can easily trace into the VCL and see where something is going
wrong. This makes it much easier to develop workarounds compared to
developing them for .NET where if you tell MS "{x} doesn't work correctly"
you just get the response "don't do {x}, and it may be fixed in a future
service pack". At which point, if doing {x} is important to your code, you
have to start the tedious process of black-box debugging the framework.
Reflector can help a bit if you've narrowed it down, but it's still nowhere
as nice as being able to trace into the code.
 
M

MassiveProng

Jan 1, 1970
0
Ahh, remember when Borland dropped OWL, they licenced MFC? Remeber
that there was some condition regarding the approval that prevented
Borland from continuing with MFC? It was about this time that everyone
stopped using broland products. VCL is completely different.


Borland died because their main products, Paradox and Quattro Pro
could not compete with Foxpro or Excel.

They could not get themselves out of the DOS world cleanly, and was
never able to catch up in a Windows based realm.
 
T

The Real Andy

Jan 1, 1970
0
The said:
Jamie wrote: [...]
Borland has never implemented any of MFC in any of the produces to
the end user. I don't know where you got this information from but
it's clearly incorrect. Borland has there own set of class libraries
that simply sprang from the early days of OWL. they call it the VCL
now. VCL = Visual Control Library.

Ahh, remember when Borland dropped OWL, they licenced MFC? Remeber
that there was some condition regarding the approval that prevented
Borland from continuing with MFC? It was about this time that everyone
stopped using broland products. VCL is completely different.

IIRC, Borland licenced MFC around the time of C++ 5. It was only included
for compatibility reasons so that you could compile your MFC apps with BC++,
and it didn't always work 100% (due to the dependence of MFC on MSVC
undocumented extensions). OWL was still very much the focus of BC++ 5.

BCB was the next product in line, and this used VCL instead of OWL. OWL
wasn't dropped until BCB5, though it was (like MFC) included only for
compiling older projects with the newer compiler. MFC compatibility is
included all the way through the BCB line AFAIK, though it's for compiling
only. You can't use the designer to make MFC GUIs.

There was a big debate a couple of years ago in one of the borland NG's
about when/why/how Borland "lost" the C++ market. Their marketshare had
dropped substantially long before BCB was released, or OWL was ditched for
that matter. The basic problem was versions 4 and 5 of BC++ were pretty bad
(especially the IDE), and OWL was simply not being updated and fixed very
quickly. While they picked up some new people with the VCL (though more with
Delphi than BCB) they'd lost their momentum in the C++ market, and with MS's
aggressive pushing of MSVC (and later poaching of a significant number of
key Borland developers) it was pretty much impossible to come back again.

Sorry, I screwed up once again :( I meant to write that MFC licence
condition was valid only if Borland dropped OWL. That was some time
ago now, I cant really remember what happened.
[...]
I still cant see where you get slow and bloated from. You really
should spend some time using .net, you will be surprised.

You've never tried running a .NET application on a machine with 512MB of
RAM, I guess? :)

Most of our customers run 512mb ram (on PC's supplied by us).
Cold start times for .NET applications are terrible. Even a simple winforms
"Hello World" takes somewhere between 15-25 seconds (depending on the phase
of the moon) to start where the CLR isn't already loaded (for example, after
a reboot, or if you have 512 MB of RAM as the CLR files fall out of the
cache pretty quickly). Warm start times are better, though still in the
order of 3-4 seconds. Compared to, say, firefox, which cold-starts in a bit
under 10 seconds and warm-starts basically instantly. While this isn't a
problem for applications that run all the time, it prevents .NET from being
used for small utility applications - I don't want to wait for 3 or so
seconds while calc or notepad starts, for example. Similarly, meory usage is
terrible for .NET apps - a "Hello World" takes up around 7MB of RAM.

Ok, so the lowest CPU speed I have app's running on is around 2GHz.
These are AU$400 PC's shipped with 512mb RAM, running XPSP2. I have
never seen one take more than a few seconds to load the framework,
even after a reboot. BTW, there is tonnes of information out there on
how to reduce cold start times of app's. In fact MSDN mag did an
article on such not so long ago.
As MS forces more and more .NET stuff on people, these problems wil become
less significant since the framework will always be loaded - it's not really
a nice solution, though, as all that means is that you've got bloat loaded
all the time (taking up space that could be used for better purposes), not
just when you run an app that needs it.

Hardware is cheap, development time is quick, results are relatively
robust (you can still write bad code). The whole idea with .net and
java is that you sacrifice some resources for the huge benefits gained
from safe, secure and reliable code.
Performance-wise, it's a bit hard to compare. For complex FP stuff , .NET is
slower (at least on K7 Athlons and P4's), no questions there. It depends on
the exact algorithm, but I've typically seen anything from a 20% to a 100%
increase in computation time required. CPU-intensive stuff in general is
slower, but most of the tests I've done are FP-based things so I can't give
a decent range for other types. For I/O intensive stuff such as throwing
files through sockets, most of the time is spent outside the application, so
although the application may only be operating at half the speed of a native
app it doesn't really matter. I could go on and on ... basically, CLR is
significantly slower than C++ code compiled to native code, but unless your
application is CPU-bound in your code, it doesn't matter a whole lot.

Fair point. I don't do FP stuff. Things such as casting classes to
binary buffers can be slow, but by marshalling to unmanaged and back
it is real fast. What's great about that is the marshaller will not
let you exceed the bounds of the array. You cant overrun a buffer. Big
plus. Does not matter how bad you code, you cant do it. It won't let
you. This is just one of the benefits. I challenge anyone to tell me
that they have not had a buffer overrun, even if it was found before
production.
The biggest problem I've found is that, although you can code a .NET to be
fast, it's not encouraged. A lot of the things that make .NET development
easy also make the resulting application slow. The end result of this is
things like ATI's CCC - massive memory use, slow startup times, laggy
interface, etc etc. While I know that CCC is not representitive of a "good"
.NET app, it is representitive of a vast majority of .NET apps.

I wonder what agent uses. Currently in my process list (Sysinternals)
I have Agent at 10MB, followed by explorer(Win GUI shell) at 13MB, and
Visual Studio 2005 at 40Mb. SO I wonder what language agent is written
in? I have seen C++ app's (Borland and MS) that have been more bloated
than C# app's.
While I can't say I've run into a problem that *can't* be worked around,
some bugs (mainly in the 1.0 and 1.1 era) have required significant and/or
ugly workarounds (which had to be developed using trial and error). One of
the things I love about Borland's VCL is that you get the source code, which
means you can easily trace into the VCL and see where something is going
wrong. This makes it much easier to develop workarounds compared to
developing them for .NET where if you tell MS "{x} doesn't work correctly"
you just get the response "don't do {x}, and it may be fixed in a future
service pack". At which point, if doing {x} is important to your code, you
have to start the tedious process of black-box debugging the framework.
Reflector can help a bit if you've narrowed it down, but it's still nowhere
as nice as being able to trace into the code.

Maybe that's where I differ. I don't want the source code. I don't
care about it. The last thing I want to do is spend time learning my
way through some library. I just don't have time. My experiences with
..net have been good. What I cant do with it, I can do with Interop,
and its rare that I need to go there. This is especially so with .net
2. All I really care about is giving the business what it wants, and
if I can do that, on time with a product that does not have bugs, then
I keep the business happy. If I keep the business happy I get
rewarded, both financially and with more work.
 
T

The Real Andy

Jan 1, 1970
0
They were unable to compete in the "visual" based development realm.

I agree, and that is when most people gave up on Borland. MFC was
always ahead (even if it was crap) and the OWL compatibility debacle
in the early 90's (IIRC) was just a plain fucken pain in the arse.
 
M

Michael Brown

Jan 1, 1970
0
The said:
Michael Brown wrote: [...]
Sorry, I screwed up once again :( I meant to write that MFC licence
condition was valid only if Borland dropped OWL. That was some time
ago now, I cant really remember what happened.

Initially this was the case, which is why it took so long for BC++ to become
MFC compatible (Watcom, Symantic, etc had MFC support years before Borland).
MS finally relented and allowed Borland to use both - I have no idea why.
Presumably money was involved somewhere.

[...]
Ok, so the lowest CPU speed I have app's running on is around 2GHz.
These are AU$400 PC's shipped with 512mb RAM, running XPSP2. I have
never seen one take more than a few seconds to load the framework,
even after a reboot.

Are you sure that you're actually testing a "cold boot" scenario? For
example, if you use ATI graphics drivers, the framework gets loaded during
boot. The warm and cold start times are about the same on my main computer
because of this (and somewhere around 1-1.5 seconds due to better hardware).
The times I mentioned above are on my "clean test" machine, an XP1700 with
512 MB RAM. This is a cleaner machine than most when it comes to stuff in
RAM, since I'm only testing a single app at a time (more or less just XP +
..NET frameworks). On another machine that I use (P4 ~2GHz, 512 MB RAM, but
with lots of junk loaded like a virus scanner, firewall, web/email clients,
etc ) I observe similar or worse times - worse because when I exit a .NET
application the framework tends to fall out of the cache pretty quickly as
memory is tight. Resulting in times closer to cold starts than warm starts.
BTW, there is tonnes of information out there on
how to reduce cold start times of app's. In fact MSDN mag did an
article on such not so long ago.

Yes, there are things you can do to improve cold (and warm) start times ...
but these times are for a "Hello World" app, which doesn't leave many
options for improvement.

[...]
Hardware is cheap, development time is quick, results are relatively
robust (you can still write bad code). The whole idea with .net and
java is that you sacrifice some resources for the huge benefits gained
from safe, secure and reliable code.

Safe and secure, maybe, but reliable? Allowing people to be sloppy when
coding is just asking for reliability issues further down the line. The
"ideal" language (IMO) should be strictly typed (no magic float-to-int
conversions for you!), require explicit memory allocation and deallocation
(with a garbage collector there solely to slap you if you forget) and allow
you to get your hands dirty and bit-bash if you want to. Ideally it should
also treat fundamental types as fundamental types - an integer is an
integer, not an object. Basically, make the programmer think about what
(s)he is writing, not just spew out a whole lot of code and make random
changes until it works. Unfortunately, the trend seems to be away from every
one of these aspects and towards allowing - even encouraging - poor
programming practices. While in the short term this may seem like a good
solution, 5 years down the line you'll end up with millions of lines of
poorly written code just held together by comments such as "I don't know why
the following line is needed but things break if it's removed".

/me gets off his soapbox :)

[...]
Fair point. I don't do FP stuff. Things such as casting classes to
binary buffers can be slow, but by marshalling to unmanaged and back
it is real fast. What's great about that is the marshaller will not
let you exceed the bounds of the array. You cant overrun a buffer. Big
plus. Does not matter how bad you code, you cant do it. It won't let
you. This is just one of the benefits. I challenge anyone to tell me
that they have not had a buffer overrun, even if it was found before
production.

I can't recall the last time I had a buffer overrun in any of my Delphi
code. I have had the odd one when mixing Delphi and inline assembler (the
overflow in the assembler part), but assembler is assembler and those things
happen :) In my C++ code, I've had the odd one in parts which I've been
aggressively optimizing (as in "we need to squeeze more performance out of
this procedure, new is slowing us down, so lets coalesce all the unrelated
new calls into a single malloc and bitbash some things around" aggressive)
but not AFAICR in "normal" code. In these cases, a managed language would
have prevented the buffer overflows simply by not allowing me to optimize so
aggressively. Not exactly a plus in that case.

The reason for this IMO is that I've always been quite conscious of buffer
overruns and the like, coming from an assembly and software security
background. Of course, I can't say I've never had one - my memory doesn't go
back far enough, and I'm pretty certain that when I was starting programming
I overflowed a few buffers (either accidentally or on purpose ...).
Defensive programming beats a safety net any day of the week - a (prevented)
buffer overflow in a .NET application usually results in the application
crashing or being terminated. While this is better than a buffer overflow,
it's better still that the app figures out beforehand that the buffer is too
small and handles it gracefully. Additionally, most C/C++ compilers now
support buffer overflow detection with guard words. While this results in
guaranteed termination of the program (rather than possible recovery with an
exception), the result is not all that different to an exception firing
where you did not anticipate it happening.
I wonder what agent uses.

As far as I can tell, it uses MSVC (and wxWindows for the gui). It's a
combination of C and C++. Though this is just from a quick glance through
the executable using notepad - it may be being crafty :)
Currently in my process list (Sysinternals)
I have Agent at 10MB, followed by explorer(Win GUI shell) at 13MB, and
Visual Studio 2005 at 40Mb.

Heh, Explorer on this computer is at 17 MB - tis what you get when you don't
log off for 9 days ... Biggest memory users at the moment are Opera (103
MB), Delphi 7 (35 MB), OE (31 MB). However, I wouldn't consider Opera
bloated - I've got about 25 tabs open across 2 windows, and then the cached
renderings for the previous page, plus cached files ... Delphi and OE are
also quite "busy", and the memory is being put to good use. The award for
bloat (being defined as memory used for no good purpose) on my computer goes
to the annoying ATI tray icon that just won't go away. It's currently using
up 7 MB to display an icon in the tray that if I double-click on it starts
up CCC.

[...]
Maybe that's where I differ. I don't want the source code. I don't
care about it. The last thing I want to do is spend time learning my
way through some library. I just don't have time.

I'm coming somewhat from the same direction but with different experiences
.... I don't have time to be trying to second-guess what's happening inside a
library. If an application isn't behaving as it should, there's either a bug
in my code or a bug in the library (or very occasionally a bug in the
compiler). Maybe I've just been unlucky with hitting lots of .NET framework
bugs, but I'm pretty sure I've spent more time in the last couple of years
trying to isolate and work around .NET bugs than I've spent tracing through
the VCL source code (and it's not due to spending a lack of time with VCL).
Since I've written quite a few Delphi components I already knew (or had to
know) what a typical VCL component looks and acts like. Since the VCL
follows the same rules as the components I write, tracing through it is
pretty easy.

[...]
 
J

Joel Kolstad

Jan 1, 1970
0
Homer J Simpson said:
Removing and reinstalling software may lead to corruption.

True enough, although when that happens it's an easy way to know that the
piece of software is crap and you shouldn't bother using it if at all
possible!
 
J

Joel Kolstad

Jan 1, 1970
0
Say Andy,

The Real Andy said:
Every app I write now uses the .net framework. The other day I wrote
an app for one of the tech support guys in half a day that would have
taken me a week in MFC. The app is going to less susceptable to bugs
than an MFC equivelent, and the code is far more secure. Thats why
people use it.

What do you think of Python (with, say, wxPython for the GUI) vs, say, C#?
The idea behind .net is that you can install multiple versions of the
framework, and they will all work alongside each other. You could not
do that with DLL's.

Yeah... I understand peoples' frustration with needing all the various version
of the framework on their PCs, but at least they do appear to have eliminated
"DLL Hell."
 
T

The Real Andy

Jan 1, 1970
0
Say Andy,



What do you think of Python (with, say, wxPython for the GUI) vs, say, C#?

To be honest, i have never looked at python. I probably never will
either, as I have just taken a consultancy role at a 100% MS shop!
However, I have hearld lots about it, and I will endeavour to have a
look in my onw time, maybe when I buy my Mac.
 
T

The Real Andy

Jan 1, 1970
0
The said:
Michael Brown wrote: [...]
%<
[...]
Cold start times for .NET applications are terrible. Even a simple
winforms "Hello World" takes somewhere between 15-25 seconds
(depending on the phase of the moon) to start where the CLR isn't
already loaded (for example, after a reboot, or if you have 512 MB
of RAM as the CLR files fall out of the cache pretty quickly). Warm
start times are better, though still in the order of 3-4 seconds.
Compared to, say, firefox, which cold-starts in a bit under 10
seconds and warm-starts basically instantly. While this isn't a
problem for applications that run all the time, it prevents .NET
from being used for small utility applications - I don't want to
wait for 3 or so seconds while calc or notepad starts, for example.
Similarly, meory usage is terrible for .NET apps - a "Hello World"
takes up around 7MB of RAM.

Ok, so the lowest CPU speed I have app's running on is around 2GHz.
These are AU$400 PC's shipped with 512mb RAM, running XPSP2. I have
never seen one take more than a few seconds to load the framework,
even after a reboot.

Are you sure that you're actually testing a "cold boot" scenario? For
example, if you use ATI graphics drivers, the framework gets loaded during
boot. The warm and cold start times are about the same on my main computer
because of this (and somewhere around 1-1.5 seconds due to better hardware).
The times I mentioned above are on my "clean test" machine, an XP1700 with
512 MB RAM. This is a cleaner machine than most when it comes to stuff in
RAM, since I'm only testing a single app at a time (more or less just XP +
.NET frameworks). On another machine that I use (P4 ~2GHz, 512 MB RAM, but
with lots of junk loaded like a virus scanner, firewall, web/email clients,
etc ) I observe similar or worse times - worse because when I exit a .NET
application the framework tends to fall out of the cache pretty quickly as
memory is tight. Resulting in times closer to cold starts than warm starts.

IIRC the boxes i am using have an onboard video compliments of intel.

All my testing is done on clean installs. A PC that you use for dev is
always going to be bloated with crap, and any app you run on it is
going to be slow. Same for running CAD apps.

However, I do have a few .net applications that i do run on my dev
machine for support reasons, some of which are quite big, and the
start times of all of those are quite good to. Mind you, I am going to
go and test cold start times of those now!!

Yes, there are things you can do to improve cold (and warm) start times ...
but these times are for a "Hello World" app, which doesn't leave many
options for improvement.

If you are doing .net dev, its worth reading this MSDN mag article.
http://msdn.microsoft.com/msdnmag/issues/06/02/CLRInsideOut/default.aspx

There are some other good ones around too.

[...]
Hardware is cheap, development time is quick, results are relatively
robust (you can still write bad code). The whole idea with .net and
java is that you sacrifice some resources for the huge benefits gained
from safe, secure and reliable code.

Safe and secure, maybe, but reliable? Allowing people to be sloppy when
coding is just asking for reliability issues further down the line. The
"ideal" language (IMO) should be strictly typed (no magic float-to-int
conversions for you!), require explicit memory allocation and deallocation
(with a garbage collector there solely to slap you if you forget) and allow
you to get your hands dirty and bit-bash if you want to. Ideally it should
also treat fundamental types as fundamental types - an integer is an
integer, not an object. Basically, make the programmer think about what
(s)he is writing, not just spew out a whole lot of code and make random
changes until it works. Unfortunately, the trend seems to be away from every
one of these aspects and towards allowing - even encouraging - poor
programming practices. While in the short term this may seem like a good
solution, 5 years down the line you'll end up with millions of lines of
poorly written code just held together by comments such as "I don't know why
the following line is needed but things break if it's removed".

/me gets off his soapbox :)

You will always get programmers that write bad code, in any language.
..net and java are helping the cause by taking care of that aspect as
much as possible.
[...]
Fair point. I don't do FP stuff. Things such as casting classes to
binary buffers can be slow, but by marshalling to unmanaged and back
it is real fast. What's great about that is the marshaller will not
let you exceed the bounds of the array. You cant overrun a buffer. Big
plus. Does not matter how bad you code, you cant do it. It won't let
you. This is just one of the benefits. I challenge anyone to tell me
that they have not had a buffer overrun, even if it was found before
production.

I can't recall the last time I had a buffer overrun in any of my Delphi
code. I have had the odd one when mixing Delphi and inline assembler (the
overflow in the assembler part), but assembler is assembler and those things
happen :) In my C++ code, I've had the odd one in parts which I've been
aggressively optimizing (as in "we need to squeeze more performance out of
this procedure, new is slowing us down, so lets coalesce all the unrelated
new calls into a single malloc and bitbash some things around" aggressive)
but not AFAICR in "normal" code. In these cases, a managed language would
have prevented the buffer overflows simply by not allowing me to optimize so
aggressively. Not exactly a plus in that case.

The reason for this IMO is that I've always been quite conscious of buffer
overruns and the like, coming from an assembly and software security
background. Of course, I can't say I've never had one - my memory doesn't go
back far enough, and I'm pretty certain that when I was starting programming
I overflowed a few buffers (either accidentally or on purpose ...).
Defensive programming beats a safety net any day of the week - a (prevented)
buffer overflow in a .NET application usually results in the application
crashing or being terminated. While this is better than a buffer overflow,
it's better still that the app figures out beforehand that the buffer is too
small and handles it gracefully. Additionally, most C/C++ compilers now
support buffer overflow detection with guard words. While this results in
guaranteed termination of the program (rather than possible recovery with an
exception), the result is not all that different to an exception firing
where you did not anticipate it happening.
I wonder what agent uses.

As far as I can tell, it uses MSVC (and wxWindows for the gui). It's a
combination of C and C++. Though this is just from a quick glance through
the executable using notepad - it may be being crafty :)
Currently in my process list (Sysinternals)
I have Agent at 10MB, followed by explorer(Win GUI shell) at 13MB, and
Visual Studio 2005 at 40Mb.

Heh, Explorer on this computer is at 17 MB - tis what you get when you don't
log off for 9 days ... Biggest memory users at the moment are Opera (103
MB), Delphi 7 (35 MB), OE (31 MB). However, I wouldn't consider Opera
bloated - I've got about 25 tabs open across 2 windows, and then the cached
renderings for the previous page, plus cached files ... Delphi and OE are
also quite "busy", and the memory is being put to good use. The award for
bloat (being defined as memory used for no good purpose) on my computer goes
to the annoying ATI tray icon that just won't go away. It's currently using
up 7 MB to display an icon in the tray that if I double-click on it starts
up CCC.

Those values were for Vista.
[...]
Maybe that's where I differ. I don't want the source code. I don't
care about it. The last thing I want to do is spend time learning my
way through some library. I just don't have time.

I'm coming somewhat from the same direction but with different experiences
... I don't have time to be trying to second-guess what's happening inside a
library. If an application isn't behaving as it should, there's either a bug
in my code or a bug in the library (or very occasionally a bug in the
compiler). Maybe I've just been unlucky with hitting lots of .NET framework
bugs, but I'm pretty sure I've spent more time in the last couple of years
trying to isolate and work around .NET bugs than I've spent tracing through
the VCL source code (and it's not due to spending a lack of time with VCL).
Since I've written quite a few Delphi components I already knew (or had to
know) what a typical VCL component looks and acts like. Since the VCL
follows the same rules as the components I write, tracing through it is
pretty easy.

[...]
 
T

The Real Andy

Jan 1, 1970
0
The said:
Michael Brown wrote:
[...]

%<

BTW: WCF was microsofts benchmark test for using c# internally. WCF
was written completely in managed code. Its only a matter of time
before your PC will have to run the .net framework as MS ramps up
internal development in .net. It would be interesting to know if Vista
uses any .net framework, because I cant see it load. Vista starts
pretty quickly too, and .net apps seem to boot fast on vista.
 
F

Frithiof Andreas Jensen

Jan 1, 1970
0
Joel Kolstad said:
True enough, although when that happens it's an easy way to know that the
piece of software is crap and you shouldn't bother using it if at all
possible!

If the software is crap to begin with, why do you expect the uninstaller to
work??
 
Top