Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / New Users / March 2006

Tip: Looking for answers? Try searching our database.

.NET SUCKS --- READ FOLLOWING. MICROSOFT IS A SUCKY CO

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
consumer62000@yahoo.com - 09 Sep 2005 23:27 GMT
Let me tell you a scenario and you will see what I mean.
There is a large application that has communication with a real time
system . The app has to respond to the requests in no more than 1 s.
The app is a C# .NET app and everything is fine and everyone at
Microsoft is happy that they forced their "new" platform down someone's
throat.

Now imagine a scenario where the GC has to collect the memory. Well,
when GC runs all the threads are suspended and there is no response to
the incoming requests and application fails a critical requirement.

Well,any MS people here who can defend their sucky product,
I know they will say "don't use .NET for this or that...use C or C++
etc"
My q to them is why did you create .NET then?
Tim Wilson - 09 Sep 2005 23:59 GMT
> Microsoft is happy that they forced their "new" platform
> down someone's throat.
Wrong. In the "C" world you still have choice. C++ works just fine. No one
forces you to use .NET.

> My q to them is why did you create .NET then?
Simple... because not all applications require real-time behavior. In fact,
I would argue that most applications do not require real-time behavior. So,
yes, .NET *may* not be the best way to go in these scenarios. You answered
your own "q". Any architect, or developer for that matter, should do their
homework before deciding how an application should be written. Use the
proper tools for the proper tasks. Microsoft gives developers options and
it's your job to decide when and how to use them.

Signature

Tim Wilson
.Net Compact Framework MVP

> Let me tell you a scenario and you will see what I mean.
> There is a large application that has communication with a real time
[quoted text clipped - 11 lines]
> etc"
> My q to them is why did you create .NET then?
Prem Kumar - 21 Sep 2005 07:34 GMT
Hi,

I am a  software engineer in .net  since 3 years

I am huge supporter of each and every tech. developed from microsoft

But ...

Mr Tim Wilson , you must accept that your this .net fantacy is not mean for
real time software . no matter how less time the GC takes

Beacuse for realtime applicatons the most bigges reqirement is that its main
thread must not be paused  at any cause , but this is the frequent case in
any application developed using .net framework

U should accept that Microsoft is not really concetrating to produce a
really good programming platform.

they are just doing like

"Handing over a toy to a crying child"

Thats why   , even after the advent of .net (5 yeast elapsed) they could not
beat the  Java in market.

Event i am strongly attached with Microsoft and its technologies

Do reply me what do you think about this at

prem.kumar@lntinfotech.com ,
prem.net@gmail.com

Prem Kumar
Associate software Engineer
Larsen & Toubro Infotech Limited
Navi Mumbai
Vashi
India

> > Microsoft is happy that they forced their "new" platform
> > down someone's throat.
[quoted text clipped - 25 lines]
> > etc"
> > My q to them is why did you create .NET then?
Heath Stewart [MSFT] - 24 Sep 2005 04:39 GMT
Tim did say that architects and developers should consider what
languages/platforms are best for their needs. He did state that .NET isn't
really for real-time applications.

Performance can be better by following certain guidelines. If you leave all
your memory to be collected by the GC you will suffer performance penalties
at some point. If you free your memory - perhaps by following the disposable
pattern for managed memory as well as native handles - you can
deterministically free memory so that the GC doesn't lock the threads while
collecting later.

Rico Mariani's blog at http://blogs.msdn.com/ricom/default.aspx is a good
place to read about performance, not just for managed code but native as
well. So is Raymond Chen's blog at
http://blogs.msdn.com/oldnewthing/default.aspx.

Signature

This posting is provided "AS IS" with no warranties, and confers no rights.

Software Design Engineer
Developer Division Sustained Engineering
Microsoft

> Hi,
>
[quoted text clipped - 64 lines]
> > > etc"
> > > My q to them is why did you create .NET then?
Jon Skeet [C# MVP] - 24 Sep 2005 07:04 GMT
Heath Stewart [MSFT] <HeathStewartMSFT@discussions.microsoft.com>
wrote:
> Performance can be better by following certain guidelines. If you leave all
> your memory to be collected by the GC you will suffer performance penalties
> at some point. If you free your memory - perhaps by following the disposable
> pattern for managed memory as well as native handles - you can
> deterministically free memory so that the GC doesn't lock the threads while
> collecting later.

Um, how exactly do you propose to use the Disposable pattern to free
memory? Calling Dispose doesn't free memory, it just allows an object
to clean itself up.

As far as I know there's no way of explicitly freeing memory in .NET -
at least not in C#.

Signature

Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet   Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too

hB - 24 Sep 2005 17:44 GMT
When this topic-thread started, I thougt it is not going to be too
lenghty; programmers are mature enough.
But...
it still appearing on top counters... in
microsoft.public.dotnet.framework news group.

---
hB
Lloyd Dupont - 25 Sep 2005 01:11 GMT
> Um, how exactly do you propose to use the Disposable pattern to free
> memory? Calling Dispose doesn't free memory, it just allows an object
> to clean itself up.
>
> As far as I know there's no way of explicitly freeing memory in .NET -
> at least not in C#.

there are 2 ways....

- with using() there are probably some low-level optimisation going on but
it appears the object (and some other?!!) are freed straight away

- with GC.Collect()  ;-)
Heath Stewart [MSFT] - 25 Sep 2005 02:43 GMT
All using does is wrap the code block in a try-finally, with a call to
IDisposable.Dispose in the finally block. That is why a compiler error occurs
if you do not pass a disposable object to the using() statement.

Using ildasm.exe from the .NET Framework SDK or another disassembler or
decompiler like .NET Reflector is a good way to explore how your source code
compiles into MSIL.

Signature

This posting is provided "AS IS" with no warranties, and confers no rights.

Software Design Engineer
Developer Division Sustained Engineering
Microsoft

> > Um, how exactly do you propose to use the Disposable pattern to free
> > memory? Calling Dispose doesn't free memory, it just allows an object
[quoted text clipped - 9 lines]
>
> - with GC.Collect()  ;-)
David Bradley - 27 Sep 2005 05:14 GMT
> - with GC.Collect()  ;-)

I know you put a wink there, but GC.Collect should be used with care.
Realize that collecting all generations in an app that has memory paged
out can cause real performance issues.

In my experience adding generations to garbage collection only
marginally improves the performance in an app that is experiencing
memory pressure. Ofcourse a lot depends on the usage pattern of the objects.

It would be really nice if the VM developers would realize they're not
omnipotent and allow the application developer some control.

I'd really like to be able to create an object or objects outside of the
GC system that I want control explicity.  They may be large objects or a
web of large number of objects that have a shared, well defined life
time. Rather than having to jump to C++ it would be nice if I could just
declare them excluded.
Heath Stewart [MSFT] - 25 Sep 2005 02:40 GMT
True, it's not that you implement IDisposable and everything is taken care
of, but it's what you do in your Dispose method such as freeing native
handles or disposing of other objects that may free any memory they're using.
It just depends on how you're allocating memory, what you're instantiating
(and how that allocates memory), etc.

What's also require is that callers dispose your disposable objects. It all
just depends on what needs to be disposed. Supressing finalization also helps
performance, which implementations are support to do in the
IDiposable.Dispose implementation.

Will that make code suitable for a critical, real-time app? Perhaps not, but
it does help performance.

Signature

This posting is provided "AS IS" with no warranties, and confers no rights.

Software Design Engineer
Developer Division Sustained Engineering
Microsoft

> Heath Stewart [MSFT] <HeathStewartMSFT@discussions.microsoft.com>
> wrote:
[quoted text clipped - 11 lines]
> As far as I know there's no way of explicitly freeing memory in .NET -
> at least not in C#.
Jon Skeet [C# MVP] - 26 Sep 2005 18:30 GMT
Heath Stewart [MSFT] <HeathStewartMSFT@discussions.microsoft.com>
wrote:
> True, it's not that you implement IDisposable and everything is taken care
> of, but it's what you do in your Dispose method such as freeing native
> handles or disposing of other objects that may free any memory they're using.
> It just depends on how you're allocating memory, what you're instantiating
> (and how that allocates memory), etc.

But any "pure .NET" types won't be able to free their own memory. At
best, they'll be able to null out a few members, which in a few very
rare cases will help, but not often.

> What's also require is that callers dispose your disposable objects. It all
> just depends on what needs to be disposed. Supressing finalization also helps
> performance, which implementations are support to do in the
> IDiposable.Dispose implementation.

You only need to suppress finalization if you have a finalizer, of
course - very, very few types should have finalizers IMO.

> Will that make code suitable for a critical, real-time app? Perhaps not, but
> it does help performance.

Making your types implement IDisposable where they don't need to won't
help though, and that seems to be what you're suggesting. You *cannot*
deterministically free managed memory in .NET.

Signature

Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet   Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too

Shailesh - 17 Mar 2006 07:49 GMT
Hi Jon,

I am developing a windows application using visual studio.net 2003. I am
using bundled version of Crystal Report for reporting purpose. I dont have
seperate licence version of Crystal Report.

My main concern is can I deploy this application at client side, bacause
client is only having licence version of .NET Frameword 1.1. So if I deploy
this application at client side, will my crystal report work properly? Or
client need licence version of Crystal Report.

Thanks in advance.
Shailesh

> Heath Stewart [MSFT] <HeathStewartMSFT@discussions.microsoft.com>
> wrote:
[quoted text clipped - 22 lines]
> help though, and that seems to be what you're suggesting. You *cannot*
> deterministically free managed memory in .NET.
Richard Grimes [MVP] - 15 Oct 2005 16:42 GMT
> Um, how exactly do you propose to use the Disposable pattern to free
> memory? Calling Dispose doesn't free memory, it just allows an object
> to clean itself up.
>
> As far as I know there's no way of explicitly freeing memory in .NET -
> at least not in C#.

Application.Exit()

<g>

Richard
Signature

http://www.grimes.demon.co.uk/workshops/fusionWS.htm
http://www.grimes.demon.co.uk/workshops/securityWS.htm

CT - 16 Oct 2005 07:32 GMT
LOL

Signature

Carsten Thomsen
Communities - http://community.integratedsolutions.dk

>> Um, how exactly do you propose to use the Disposable pattern to free
>> memory? Calling Dispose doesn't free memory, it just allows an object
[quoted text clipped - 8 lines]
>
> Richard
Shailesh - 17 Mar 2006 07:48 GMT
Hi Heath,

I am developing a windows application using visual studio.net 2003. I am
using bundled version of Crystal Report for reporting purpose. I dont have
seperate licence version of Crystal Report.

My main concern is can I deploy this application at client side, bacause
client is only having licence version of .NET Frameword 1.1. So if I deploy
this application at client side, will my crystal report work properly? Or
client need licence version of Crystal Report.

Thanks in advance.
Shailesh

> Tim did say that architects and developers should consider what
> languages/platforms are best for their needs. He did state that .NET isn't
[quoted text clipped - 80 lines]
> > > > etc"
> > > > My q to them is why did you create .NET then?
Jorgm - 12 Oct 2005 18:19 GMT
> Hi,
>
[quoted text clipped - 64 lines]
> > > etc"
> > > My q to them is why did you create .NET then?
Jorgm - 12 Oct 2005 18:21 GMT
> Hi,
>
[quoted text clipped - 66 lines]
> >
> > You are a software enginneer? You can't even spell!
Shailesh - 17 Mar 2006 07:49 GMT
Hi Tim,

I am developing a windows application using visual studio.net 2003. I am
using bundled version of Crystal Report for reporting purpose. I dont have
seperate licence version of Crystal Report.

My main concern is can I deploy this application at client side, bacause
client is only having licence version of .NET Frameword 1.1. So if I deploy
this application at client side, will my crystal report work properly? Or
client need licence version of Crystal Report.

Thanks in advance.
Shailesh

> > Microsoft is happy that they forced their "new" platform
> > down someone's throat.
[quoted text clipped - 25 lines]
> > etc"
> > My q to them is why did you create .NET then?
Chris - 10 Sep 2005 00:04 GMT
> Let me tell you a scenario and you will see what I mean.
> There is a large application that has communication with a real time
[quoted text clipped - 11 lines]
> etc"
> My q to them is why did you create .NET then?

Who would use an interpreted language for real time processing?  Doesn't
sound like someone knew what they were doing when they chose a language
to meet their requirements.

You shouldn't use .NET for this type of thing... you C or C++ or some
other language that you control every aspect of the language.
consumer62000@yahoo.com - 10 Sep 2005 00:33 GMT
So responding to a request in fixed amount of time is realtime. And may
I ask what kind of apps would your friends at Microsoft "recommend" for
.NET

Slow application with no user expectations?
Lloyd Dupont - 10 Sep 2005 02:26 GMT
I would say if your program has a 1 second latency it's probably due to poor
design (of the application itself) or extremely busy CPU already, than to
the GC.
I would recomend you start really investigate the cause of the problem
instead of randomly targetting the GC.

For example providing a code sample demonstrating your problem would be a
first step toward valuable & hinsightful feedback.

In case it's the GC, I will be .. amazed.
But well, in this case let's imagine the kind of scenario where the CG could
do that.
As some other poster said, he was able to alloc / GC more than 40.000.000
(40 millions) Object per second without trouble.

So I doubt it's the sheer number of object which cause the GC trouble.
Maybe it's the Dispose() method?
Dispose() should be quick, do you have lengthy operation (such as
Transaction.Commit()) in the Dispose() code of your objects?

Also to answer an other question: what kind of application needs .NET to be
developped.
Well I would say I have yet to see a case where .NET didn't improve
dramatically devlopment time and program reliability while, at the same
time, keeping comparable performance.
So it's probably a good solution for any developer on earth but you ;-)

Signature

If you're in a war, instead of throwing a hand grenade at the enemy, throw
one of those small pumpkins. Maybe it'll make everyone think how stupid war
is, and while they are thinking, you can throw a real grenade at them.
Jack Handey.

> So responding to a request in fixed amount of time is realtime. And may
> I ask what kind of apps would your friends at Microsoft "recommend" for
> .NET
>
> Slow application with no user expectations?
Ian Evitable - 10 Sep 2005 03:13 GMT
> So responding to a request in fixed amount of time is realtime. And may
> I ask what kind of apps would your friends at Microsoft "recommend" for
> .NET
>
> Slow application with no user expectations?

Solid application design requires a logical, systems oriented approach to
development. Perhaps if you weren't so loaded with emotion and anti
Microsoft sentiment you could determine the actual reasons for your
application not meeting its requirement definitions rather than spouting off
like a trantrum throwing child.

It might well be that the .NET framework is not for your project but more
often than not these crys of it being a buggy, unreliable, non performant
platform are in fact more indicative of piss poor application design and/or
development lacking in a "best practises" approach.

Perhaps if you learn to approach your projects, and your posts for that
matter, with a little more balance, maturity and professionalism you may not
find yourself having either choosen the wrong tool for the job nor blaming
it when you cant use it correctly.

Ian
Timothy Brandt - 27 Sep 2005 17:15 GMT
> Solid application design requires a logical, systems oriented approach to
> development. Perhaps if you weren't so loaded with emotion and anti
> Microsoft sentiment you could determine the actual reasons for your
> application not meeting its requirement definitions rather than spouting off
> like a trantrum throwing child.

Actually I found his childish rantings to be quite entertaining. It
certainly gave me a few chuckles.

But on a more serious note, since I am a lowly Junior Developer and utilize
these formus for learning experiences, I would like to echo what Mr. Loyd
Wrote

>For example providing a code sample demonstrating your problem would be a
>first step toward valuable & hinsightful feedback.

please do.

Timothy Brandt
Caliper Co.
Will Chamberlain - 27 Sep 2005 18:08 GMT
This thread can't die.

---
"Our enemies are innovating and resourceful, and so are we.  They never
stop thinking of ways to harm our country and our people, and neither do
we." - President George W. Bush
GooGoo - 27 Mar 2006 14:52 GMT
I don't come on here to read meaningless political soundbytes, dude.  If you
must have a signature, can't you think of something entertaining ?

> This thread can't die.
>
[quoted text clipped - 4 lines]
>
> *** Sent via Developersdex http://www.developersdex.com ***
Kumar Shetgar - 28 Sep 2005 22:10 GMT
Well...

I am pretty sure you have somthing else which is taking enough time to
execute rather than GC.
If you dont know what you are doing, just dont blame .NET.
One cant choose COBOL for writing a compiler and start blaming COBOL for its
inefficiency...!



Stewart - 01 Oct 2005 19:22 GMT
<consumer62000@yahoo.com> wrote in message
news:1126304861.816577.277870@o13g2000cwo.googlegroups.com...
>[.....]
> Let me tell you a scenario and you will see what I mean.
[quoted text clipped - 9 lines]
>
>[.....]

>[.....]

> Solid application design requires a logical, systems oriented approach to
> development. Perhaps if you weren't so loaded with emotion and anti
[quoted text clipped - 7 lines]
> development lacking in a "best practises" approach.
>[.....]

Yes quite, this sounds like bad work. Its also true that the original post
was lacking in decorum. ......Anyway.....Before jumping to conclusions you
need to specify what "has to", in "The app has to respond to the requests in
no more than 1 s." really means.  Will your reactor melt down? what / how
much does downtime cost you? is this system 365/24/7 or just in bursts? Are
thes systems distributed? (how?) Loads and loads of
stuff.......haha!......All these are crtical questions to the initial rather
loaded posting.

.NET C# still might not be the best choice in this mythical system.   Code
will inevitably be more platform bound than with skilfull C/C++ or Java. Java
offers comparable levels of programming safety built in to the language, also
syntactic ease and simplicity.........but commercially available Java
development tools / IDEs excel over Microsofts Visual Studio and you get a
cross platform product.

As to if it had to and was only ever going to run on windows...blah bah...
and it had to be real time .....then you could conceivably run this C# code
with managed memory et al resources in a process / that did not get
interrupted by long calls to GC.collect().....reuse resources.....don't
create and destroy thousands of String things read from XML files accessed on
a network drive in Hong Kong via a VPN ....blah......blah.

If ......which is hopefully the case....this compnent is in fact some kind
of client or client service. .......quite likely it would be very nice to get
a smooth throughput....and you can do a lot to get that .....in the case of
the client service the critical thing is that the component is robust
generally over time and scaleable. To my mind the combination of "scaleable"
and "robust" means its worth considering that your component be deployable
seamlessly accross many platforms. In a really critical system it would be
nice in the event of a serious security hazzard on a particular platform to
simply shut it down until the heats off.

In the case of the client aka...some sort of GUI stuff.. I would avoid .NET
C# really because of vendor lockin.  Most of us in our businesses have huge
software systems and fundamental in ensuring the ability to choose the
highest quality component over the long term is the ability to be able to
remove and replace a component so that the other parts of the system continue
to interoperate with the new chosen application / component.

Have you got humongous ammounts of data to deal with? Didn't they manage to
do some kind of Quake thing in managed code......sounds like you can get some
degree of smooth throughput. I just stumbled on this while I was downloading
the stuff needed to play with Half Life 2....looks like that is in C++ rather
than in C#.

If this .NET thing is actually doing data acquisition / storage then, back
to "has to.....1s".....how critical is it? If you had some sort of
application health monitoring  / recovery procedure there may be loads of
situations it'd do the job.  Of course you'd think that no one in their right
mind would run vital real time systems where the reliability of one or more
critical components was bound to a Windows platform - though I heard a story
a few years back that the British Navy were looking at moving to a W2K based
system on their bridges - dunno what came to that  one.
Nick - 10 Sep 2005 07:39 GMT
I have a real-time automation server written on .NET. Responding time is
about 300ms. Works fine.

> So responding to a request in fixed amount of time is realtime. And may
> I ask what kind of apps would your friends at Microsoft "recommend" for
> .NET
>
> Slow application with no user expectations?
Frank Hileman - 10 Sep 2005 22:37 GMT
I agree, real-time with 1 second response is no problem for .net -- it is a
poorly designed application or component causing the problem. The GC will
never take this long unless it is abused.

Regards,
Frank Hileman

check out VG.net: http://www.vgdotnet.com
Animated vector graphics system
Integrated Visual Studio .NET graphics editor

>I have a real-time automation server written on .NET. Responding time is
>about 300ms. Works fine.
Mehdi - 10 Sep 2005 13:10 GMT
> So responding to a request in fixed amount of time is realtime.

Yes, that's part of the definition of a real time application.

> And may
> I ask what kind of apps would your friends at Microsoft "recommend" for
> .NET

If you want to develop a true real time application, they would recommend
nor .NET neither Windows. Windows is not a real time OS because, among
other things, it uses pre-emptive multi tasking, hence preventing you to
know how long will a task in your program take. To do real time
application, you must use a real time OS to begin with. Real time
applications are a whole different world than desktop or server consumer
applications.
Cowboy (Gregory A. Beamer) - MVP - 12 Sep 2005 15:24 GMT
At first, I was under the assumption you really wanted to get an answer. Now,
I am more inclined to think you are a troll. If you are not, at least step
off the high horse and start responding in a civil manner.
Signature

Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA

***************************
Think Outside the Box!
***************************

> So responding to a request in fixed amount of time is realtime. And may
> I ask what kind of apps would your friends at Microsoft "recommend" for
> ..NET
>
> Slow application with no user expectations?
William Stacey [MVP] - 12 Sep 2005 19:48 GMT
> Now,
> I am more inclined to think you are a troll.

The email address is telling.

Signature

William Stacey [MVP]

Cowboy (Gregory A. Beamer) - MVP - 16 Sep 2005 14:05 GMT
Yeah, but I am a bit too dense to catch it. :-)

Signature

Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA

***************************
Think Outside the Box!
***************************

> > Now,
> > I am more inclined to think you are a troll.
>
> The email address is telling.
Ravichandran J.V. - 17 Sep 2005 09:25 GMT
Yeah, I kinda think that i too am dense and it is not because of the
stylish cigar that dangles from my lips with a lazy, curl of smoke
threatening to increase the density of the air around my head!!

with regards,

J.V.Ravichandran
Signature

- http://www.geocities.com/
 jvravichandran
- http://www.411asp.net/func/search?
 qry=Ravichandran+J.V.&cob=aspnetpro
- http://www.southasianoutlook.com 
- http://www.MSDNAA.Net 
- http://www.csharphelp.com
- http://www.poetry.com/Publications/
 display.asp?ID=P3966388&BN=999&PN=2
- Or, just search on "J.V.Ravichandran"
 at http://www.Google.com

Shailesh - 17 Mar 2006 07:49 GMT
Hi William,

I am developing a windows application using visual studio.net 2003. I am
using bundled version of Crystal Report for reporting purpose. I dont have
seperate licence version of Crystal Report.

My main concern is can I deploy this application at client side, bacause
client is only having licence version of .NET Frameword 1.1. So if I deploy
this application at client side, will my crystal report work properly? Or
client need licence version of Crystal Report.

Thanks in advance.
Shailesh

> > Now,
> > I am more inclined to think you are a troll.
>
> The email address is telling.
Jon Skeet [C# MVP] - 10 Sep 2005 07:00 GMT
> Who would use an interpreted language for real time processing?  Doesn't
> sound like someone knew what they were doing when they chose a language
> to meet their requirements.

Um, .NET isn't interpreted... I'd agree that it's not suitable for
real-time work, but it still runs as native code (after JITting).

Signature

Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too

Paul - 23 Sep 2005 17:35 GMT
Ahem,

I have not had any issues with .NET when writing applications in C#.  .Net
2.0 beta performance has been an issue from time to time for me, but hey,
it's in Beta and I expect the final release to be good.

The person who started this thread really needs to re-evaluate what they are
saying and look at the code they are trying to produce before ranting on
about Microsoft sucking.

Paul
darisole - 14 Sep 2005 16:11 GMT
> Who would use an interpreted language for real time processing?  Doesn't
> sound like someone knew what they were doing when they chose a language
> to meet their requirements.
>
> You shouldn't use .NET for this type of thing... you C or C++ or some
> other language that you control every aspect of the language.

BTW .NET languages are not interpreted. IL is like Java bytecode. When a
.NET app starts, the JIT compiler, translates the IL code into Win32 native
code and launch it.
Arthur - 23 Sep 2005 14:02 GMT
While the original post indicates a lack of maturity it does suggest that
there are developers who expect to be able to use .NET in ways that were not
anticipated, e.g., real time systems.  Java, a language comparable to C#, has
extensions for developing real time applications.  Rather than dismiss this
developers frustrations it might be better to determine if there is a way to
enhance future versions of C#.

Please see: http://java.sun.com/products/embeddedjava/real-time.html

> > Let me tell you a scenario and you will see what I mean.
> > There is a large application that has communication with a real time
[quoted text clipped - 18 lines]
> You shouldn't use .NET for this type of thing... you C or C++ or some
> other language that you control every aspect of the language.
msafiullah - 29 Sep 2005 15:54 GMT
> > Let me tell you a scenario and you will see what I mean.
> > There is a large application that has communication with a real time
[quoted text clipped - 18 lines]
> You shouldn't use .NET for this type of thing... you C or C++ or some
> other language that you control every aspect of the language.

Microsoft said when releasing C#, tat C# is as easy as visual basic yet
powerfull as C++. But, if C++ is to be used for stuff tat C# can't do...
wat's the point of introducing C# when, c# suckier than c++?
Kevin Spencer - 29 Sep 2005 16:57 GMT
> Microsoft said when releasing C#, tat C# is as easy as visual basic yet
> powerfull as C++. But, if C++ is to be used for stuff tat C# can't do...
> wat's the point of introducing C# when, c# suckier than c++?

First, Chris is mistaken. C# is as powerful as C++, if you know how to use
it. And, in fact, you can use C++ and C, and even Assembler with C# any time
you need to (and I have done this myself, so I know what I'm talking about).

Second, "suckier" is a characterization, not an argument. It means nothing,
other than implying that you have a negative opinion of it. If you are a
programmer, you should know the difference between logic and rhetoric. If
you do not know the difference, you are a "sucky" programmer.

Third, the .Net platform, like any other software, was developed to fulfill
certain requirements. It fulfills them beautifully. Among these requirements
are cross-platform compatibilty, cross-language compatibility, better
avoidance of memory leaks in complex applications, and productivity.

The cross-platform compatibilty aspect is achieved in the same way that Java
achieves it: The software is compiled to a byte code that is
non-machine-specific, and compiled to native machine language at runtime.
However, this introduces a latency in run-time compilation, which has been a
long-time problem with Java. The .Net platform minimizes this by a
sophisticated caching mechanism, which makes it run faster than Java
overall. The proof that the .Net platform is cross-platform-compatible can
be seen in the Mono project (http://www.mono-project.com/Main_Page), which
is an open-source project for a number of different OS versions of the .Net
platform.

Cross-language compatibility is one thing Java has never had. This enables
developers to write .Net code in virtually any language of their choosing.
There are more .Net languages than there are for any other platform. Period.

Avoidance of memory leaks is achieved primarily through Garbage Collection.
While you seem to think that Garbage Collection is a bad thing, it happens
to be quite common to object-oriented technologies, including Java, Perl,
Lisp, Smalltalk, Flash MX, and quite a few others (see
http://www.memorymanagement.org/articles/lang.html for a more complete, but
not comprehensive list). Comparing apples to apples, the .Net platform
employs the most up-to-date, fastest, and most powerful Garbage Collection
available today. No other technology that uses GC has the quality that the
.Net platform has. You may benefit from reading the following FAQ about
Garbage Collection: http://www.iecc.com/gclist/GC-faq.html. You can find
much more complete information about the subject at
http://www.memorymanagement.org/.

Productivity is the final point I wish to discuss, as you think that C# is
"suckier than c++". C# is designed along the same lines, and to fulfill the
same requirements as C++, and C before that. It is concise. It is
strongly-typed. And it is easier to use than C++, with a more concise
syntax. It includes constructs that are designed to enable the developer to
spend less time writing code, which enhances productivity, such as
NameSpaces, Attributes, delegates, and so on. In addition, the .Net 2.0
platform introduces several new constructs, the most notable is Generics. C#
is less cryptic than C++ as well. It is important to note that C++ is over
10 years old, and was developed as one of the first object-oriented
languages. Programming has come a long way since then, and programming
languages and technologies have had to adapt. Fortunately, C is extensible.
And while the extension of C known as C++ was a good start, 10 or so years
ago, C# is the next logical extension of C, enabling programmers to write
much larger applications in a much shorter time.

The bottom line of all this is, ignorance may be bliss, but it doesn't pay
the bills. You sound like a young, lazy guy who doesn't want to learn and
adapt. Well, I'm almost 50, and I hope I never stop learning. Knowledge is
power. Yes, it's work, but if you don't like work, you shouldn't be a
programmer. If you don't enjoy solving new problems, you won't get far in
this business. And if you don't love programming, don't quit your day job.
Real-world programming is a pain in the butt, but it's a love-hate
relationship for those of us who are successful at it, and I wouldn't do
anything else if I had the chance. Yes, you bleed a bit on the cutting edge,
but what a view!

Signature

HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Big things are made up of
lots of little things.

>> > Let me tell you a scenario and you will see what I mean.
>> > There is a large application that has communication with a real time
[quoted text clipped - 22 lines]
> powerfull as C++. But, if C++ is to be used for stuff tat C# can't do...
> wat's the point of introducing C# when, c# suckier than c++?
Lloyd Dupont - 30 Sep 2005 00:36 GMT
Nice test Kevin!
Richard Grimes [MVP] - 15 Oct 2005 16:58 GMT
> First, Chris is mistaken. C# is as powerful as C++, if you know how
> to use it. And, in fact, you can use C++ and C, and even Assembler
> with C# any time you need to (and I have done this myself, so I know
> what I'm talking about).

No. Platform Invoke is not the same as being able to use inline assembly
code like many C++ compilers can do. So I refute your arguement that C#
is as powerful as C++. However, C# is better because it does not have
all of the complicated 'power features' of C++.

> Third, the .Net platform, like any other software, was developed to
> fulfill certain requirements. It fulfills them beautifully. Among
> these requirements are cross-platform compatibilty, cross-language
> compatibility, better avoidance of memory leaks in complex
> applications, and productivity.

It depends on who you ask. I think Microsoft's requirements for what it
wanted .NET to do has changed considerably over the last 5 years (in
fact I *know* so). I guess it fills your requirements, and that is fine.
However, it would be nice if Microsoft would make public what their
requirements are. They won't.

> The cross-platform compatibilty aspect is achieved in the same way
> that Java achieves it: The software is compiled to a byte code that is

Nope. .NET is not cross platform and Microsoft have never claimed it to
be.

> run faster than Java overall. The proof that the .Net platform is
> cross-platform-compatible can be seen in the Mono project
> (http://www.mono-project.com/Main_Page), which is an open-source
> project for a number of different OS versions of the .Net platform.

So what? This does not mean that it is cross platform - it is not the
official .NET product. The official Microsoft .NET product is not cross
platform. Try and run an assembly written for the desktop on a PDA with
the .NET compact Framework and you'll see that is the case.

> Avoidance of memory leaks is achieved primarily through Garbage
> Collection. While you seem to think that Garbage Collection is a bad

<sigh> you've not been following the conversation. The problem is that
the .NET heap is memory hungry and the GC nmechanism is processor
hungry.

> And it is easier to use than C++, with
> a more concise syntax.

Yup, I agree. But bear in mind that VB6 was also easier to use than C++
;-)

Richard
Signature

http://www.grimes.demon.co.uk/workshops/fusionWS.htm
http://www.grimes.demon.co.uk/workshops/securityWS.htm

Mike Hofer - 15 Oct 2005 22:29 GMT
<DISCLAIMER>This is not a flame or an argument for the sake of arguing!
I know that sometimes my posts come off that way, so I'd like to clear
it up now.</DISCLAIMER>

[snip]
> > Third, the .Net platform, like any other software, was developed to
> > fulfill certain requirements. It fulfills them beautifully. Among
[quoted text clipped - 7 lines]
> However, it would be nice if Microsoft would make public what their
> requirements are. They won't.

You *know* so? How? What information sources do you have that we do
not? Can you please post them so we can be equally as informed? Thanks.

Don't get me wrong. I'm fairly certain myself that their requirements
for it have evolved (but perhaps not *changed* altogether). But I
wouldn't tell anyone that I *knew* something without being able to back
it up with facts.

> > The cross-platform compatibilty aspect is achieved in the same way
> > that Java achieves it: The software is compiled to a byte code that is
>
> Nope. .NET is not cross platform and Microsoft have never claimed it to
> be.

I'm sorry, but I have to disagree with that point. The shared source
CLI (available at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/f
aq111700.asp
)
compiles and runs on Windows and FreeBSD.

>From the referenced Microsoft page:

The Microsoft® Shared Source CLI Implementation is a file archive
containing working source code for the ECMA-334 (C#) and ECMA-335
(Common Language Infrastructure, or CLI) standards. These standards
together represent a substantial subset of what is available in the
Microsoft .NET Framework. In addition to the CLI implementation and the
C# compiler, the Shared Source CLI Implementation contains a cornucopia
of tools, utilities, additional Framework classes, and samples. It will
build and run on the Microsoft Windows® XP and the FreeBSD operating
systems.

According to WikiPedia:

FreeBSD is a free, open source, Unix-like operating system descended
from AT&T UNIX via the Berkeley Software Distribution (BSD) branch
through 386BSD and 4.4BSD. It runs on processors compatible with the
Intel x86 family, as well as on the DEC Alpha, the UltraSPARC
processors by Sun Microsystems, the Itanium (IA-64) and AMD64
processors. It also runs on the PC-98 architecture. Support for the
ARM, MIPS and PowerPC architectures are in development.

Sounds fairly cross-platform to me. But that may depend on what you
mean by PLATFORM. To me, it means a different CPU or operating system.
Again, it's that whole issue of getting two geeks to agree on what a
word means.

<CONJECTURE>
Despite its small share of the desktop computer market, Microsoft has
continued to dump lots of money into the development of software for
Apple computers (which are (1) now running Unix [the core of OSX] and
(2) soon coming to Intel chips). It would be far more economical for
Microsoft to be able to write one codebase for Office and deploy it to
both operating systems without having to recompile.

Just something to think about.
</CONJECTURE>

> > run faster than Java overall. The proof that the .Net platform is
> > cross-platform-compatible can be seen in the Mono project
[quoted text clipped - 4 lines]
> official .NET product. The official Microsoft .NET product is not cross
> platform.
Oh, now that's just splitting hairs. :) .NET is a platform, not a set
of binaries. Further, it is an open standard, and you can obtain the
source from Microsoft itself.

Now brace yourselves for this: .NET itself is not Microsoft .NET.
Microsoft .NET is Microsoft's implementation of the .NET standard (the
CLI and the BCL). It is conceivable that one day there will be Apple
.NET, Google .NET, and so forth, each providing an implementation of
the .NET standard that differs internally from Microsoft's
implementation. While that's conjecture at this point, you *can*, in
fact look at Mono for a perfect example of it. Microsoft .NET is
Microsoft's implementation of the .NET standard; Mono is an open-source
implementation of .NET for several different operating systems and
CPUs.

So on the one hand, you're right. Microsoft .NET isn't platform
independent. But .NET itself is. It helps to keep them separate.

> Try and run an assembly written for the desktop on a PDA with
> the .NET compact Framework and you'll see that is the case.

Trying not to laugh out loud at this one. :)

Let's be realistic. You can't POSSIBLY expect to design an application
for a desktop whose minimum display size these days is 800x600 and
expect them to run on PDAs. Further, look at all the equipment you can
connect to a desktop that can't be connected to a PDA. And no one in
their right mind would constrain the design of a desktop application to
the constraints of a PDA application. That's not even CLOSE to being
realistic.

However, let's think about that. You still wrote the application in
.NET. You compiled it with the same tools. You used a set of classes
from specific namespaces, but who wouldn't? If every platform used the
same namespace and classes for its UI and functionality, you'd be right
back to the least common denominator scenario that generated those
hideous, terrifying, sluggish, loathesome interfaces common to Java
during the pre-Swing era. You can count me out on that one.

> > Avoidance of memory leaks is achieved primarily through Garbage
> > Collection. While you seem to think that Garbage Collection is a bad
>
> <sigh> you've not been following the conversation. The problem is that
> the .NET heap is memory hungry and the GC nmechanism is processor
> hungry.

Can you back that up with facts? Links? Statistical data? Under which
particular circumstances is it processor hungry?

I thought we had previously beat this to death and determined that it's
overally pretty darned sophisticated, and only gets processor hungry
when you do things with the specific intent of breaking it. (Someone
correct me if I'm wrong there.)

> > And it is easier to use than C++, with
> > a more concise syntax.
>
> Yup, I agree. But bear in mind that VB6 was also easier to use than C++
> ;-)

Yup, I agree too. :)
Jon Skeet [C# MVP] - 16 Oct 2005 08:18 GMT
> > It depends on who you ask. I think Microsoft's requirements for what it
> > wanted .NET to do has changed considerably over the last 5 years (in
[quoted text clipped - 4 lines]
> You *know* so? How? What information sources do you have that we do
> not? Can you please post them so we can be equally as informed? Thanks.

Richard is the author of many books about Microsoft products. I think
it's fair to say he's got better sources than most people. I dare say
most of what he knows is under NDA in this respect however.

> > > The cross-platform compatibilty aspect is achieved in the same way
> > > that Java achieves it: The software is compiled to a byte code that is
[quoted text clipped - 7 lines]
> dndotnet/html/faq111700.asp)
> compiles and runs on Windows and FreeBSD.

That's not .NET. That's the CLI.

> >From the referenced Microsoft page:
>
[quoted text clipped - 7 lines]
> build and run on the Microsoft Windows® XP and the FreeBSD operating
> systems.

Note the "substantial subset" bit there.

> > So what? This does not mean that it is cross platform - it is not the
> > official .NET product. The official Microsoft .NET product is not cross
[quoted text clipped - 6 lines]
> Microsoft .NET is Microsoft's implementation of the .NET standard (the
> CLI and the BCL).

Where exactly is this ".NET standard" specified? One would think that
the CLI/BCL standards would refer to .NET. Certainly the CLI standard
doesn't.

.NET is an implementation of the CLI and BCL standard (and more
besides, of course), but it is not in itself a standard.

<snip>

> So on the one hand, you're right. Microsoft .NET isn't platform
> independent. But .NET itself is. It helps to keep them separate.

No, it helps to keep Microsoft .NET and the CLI/BCL separate - which is
why they're not both called ".NET".

Signature

Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet   Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too

Mike Hofer - 16 Oct 2005 17:05 GMT
Jon wrote:
> > > It depends on who you ask. I think Microsoft's requirements for what it
> > > wanted .NET to do has changed considerably over the last 5 years (in
[quoted text clipped - 8 lines]
> it's fair to say he's got better sources than most people. I dare say
> most of what he knows is under NDA in this respect however.

I wasn't aware of that. Thanks for pointing it out. I'll have to look
up some of his books on Amazon. :)

> > > > The cross-platform compatibilty aspect is achieved in the same way
> > > > that Java achieves it: The software is compiled to a byte code that is
[quoted text clipped - 9 lines]
>
> That's not .NET. That's the CLI.

Semantics shoot me again. :) I was always under the impression that
".NET" was the CLI, not the CLI plus whatever Microsoft strapped on for
Windows support. If ".NET" is strictly Microsoft's implementation of
the CLI, then my whole post was complete crap. (Not that that's
anything unusual, but I *am* trying to do better.)

The source of some of my confusion may be as follows:

"When Microsoft released the C# programming language and the .NET
platform, it also crafted a set of formal documents that described the
syntax and semantics of the C# and CIL languages, the .NET assembly
format, core .NET namespaces, and the mechanics of a hypothetical .NET
runtime engine (known as the Virtual Execution System, or VES). Better
yet, these documents have been submitted to Ecma International as
official international standards (http://www.ecma-international.org)."
[Andrew Troelsen, Pro C# 2005 and the .NET 2.0 Platform]

See, the way I read that is that the CLI describes the .NET platform in
an OS and/or CPU neutral way. I may--as has been the case in the
past--be reading more into it than was actually written. Or, this text
(in the 3rd edition of the book) may be misleading. Either way, I'm
*very* interested in clearing this up.

(It would help if we could get a clear, definitive answer in one
document, published by Microsoft. It would be really nice [and
therefore completely improbable] if Microsoft could say, "Yes, we
intend to port .NET to other platforms.")

> > >From the referenced Microsoft page:
> >
[quoted text clipped - 9 lines]
>
> Note the "substantial subset" bit there.

Yep. Noted that. It doesn't include System.Windows.Forms, System.Web,
System.Data, etc.

> > > So what? This does not mean that it is cross platform - it is not the
> > > official .NET product. The official Microsoft .NET product is not cross
[quoted text clipped - 13 lines]
> .NET is an implementation of the CLI and BCL standard (and more
> besides, of course), but it is not in itself a standard.

Again, that will be cleared up when it gets through my thick skull:
when I finally understand the difference between .NET, the CLI, and
which is intended to be platform independent.

> <snip>
>
[quoted text clipped - 3 lines]
> No, it helps to keep Microsoft .NET and the CLI/BCL separate - which is
> why they're not both called ".NET".

Acknowledged. :)

I think, for me, this is like the chicken and the egg. Which came
first? The CLI or .NET?
Jon Skeet [C# MVP] - 18 Oct 2005 07:00 GMT
<snip>

> (It would help if we could get a clear, definitive answer in one
> document, published by Microsoft. It would be really nice [and
> therefore completely improbable] if Microsoft could say, "Yes, we
> intend to port .NET to other platforms.")

Yes, that would be lovely, wouldn't it? I can't see it happening. I
believe MS designed the whole thing so that it *could* be portable to
other architectures. That doesn't mean they want to port it to
different operating systems.

> > Note the "substantial subset" bit there.
>
> Yep. Noted that. It doesn't include System.Windows.Forms, System.Web,
> System.Data, etc.

Indeed. MS have standardised just enough to make it a reasonable
standard, but not enough to really make it a useful platform for real
work on its own.

<snip>

> I think, for me, this is like the chicken and the egg. Which came
> first? The CLI or .NET?

For me, they came together - .NET is just an implementation of the CLI
and more.

Signature

Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet   Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too

Richard Grimes - 16 Oct 2005 11:47 GMT
> You *know* so? How? What information sources do you have that we do
> not? Can you please post them so we can be equally as informed?
> Thanks.

I first was given access to longhorn builds in mid 2002 (ie a year
before the first public release) I had been asked to write a book about
WinFS (you may have read my article on WinFS for MSDN Magazine). Of
course that's all history now. My 'minder' at Microsoft told me that the
developers on the LH team were told that *all* development in LH (note,
I say Longhorn, not Whidbey), had to be managed code. They were told
that if they wanted to write *any* native code they had to make a good
case for it. I was told that unmanaged wrappers would be supplied for
'VB6 developers to use'.

I have just finished an analysis of Vista and I find that there is very
little .NET in the operating system. Clearly, when the big change
happened, when the code base was changed from XP to Win2003 they also
took the decision to do the majority of Longhorn development in native
code. That is a huge shift, in just a few years. As a .NET enthusiast,
and someone who has spent 5 years persuading people to use .NET that
comes as a complete disappointment to me.

> wouldn't tell anyone that I *knew* something without being able to
> back it up with facts.

Is this enough for you?

http://www.grimes.demon.co.uk/dotnet/vistaAndDotnet.htm

>> Nope. .NET is not cross platform and Microsoft have never claimed it
>> to be.
[quoted text clipped - 3 lines]
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/f
aq111700.asp
)
> compiles and runs on Windows and FreeBSD.

Go on, give me a quote *anywhere* on microsoft.com, or from *any*
Microsoft person where they use the term 'cross platform'. They are
studiously careful *not* to say that, because that is not their
intention. .NET is a Windows technology and that is the way they want it
to remain. Yes, Rotor has PAL so therortically you can compile it for
other platforms, but it is a research tool, and it is not supported for
production code.

> Despite its small share of the desktop computer market, Microsoft has
> continued to dump lots of money into the development of software for
> Apple computers (which are (1) now running Unix [the core of OSX] and
> (2) soon coming to Intel chips). It would be far more economical for
> Microsoft to be able to write one codebase for Office and deploy it to
> both operating systems without having to recompile.

Oh yes. That's the way that I thought 5 years ago. But Microsoft are
showing no intentions to make products like Office based on .NET. I have
asked Microsoft many times (most recently I asked Eric Rudder about
this) and Microsoft have always replied that Office will remain a native
application, although parts of it may have .NET code. Clearly their
intention is to use .NET for RAD (in particular - RAD for *you*) and
keep their code base native.

> Oh, now that's just splitting hairs. :) .NET is a platform, not a set
> of binaries. Further, it is an open standard, and you can obtain the
> source from Microsoft itself.

If only. Rotor is an altered version of .NET, yes, the library is very
similar, Reflector shows that, but the unmanaged code? As I said above
Rotor is just a research tool. It is not a reference standard.

> Microsoft's implementation of the .NET standard; Mono is an
> open-source
> implementation of .NET for several different operating systems and
> CPUs.

Here's a question: will mono code run under Microsoft's runtime, and
visa versa?

Microsoft are putting huge efforts into Web Services (SOA), why do you
think that is? It is because the code stays in one place - running under
the platform that it was designed to run. Microsoft have *never* said
that their intention is for 'mobile' code, that is, code that will run
on multiple platforms. I know because I have spent 5 years trying to
find such a statement!

> Trying not to laugh out loud at this one. :)
>
[quoted text clipped - 6 lines]
> the constraints of a PDA application. That's not even CLOSE to being
> realistic.

You have amply killed your own argument: .NET is *not* cross platform.
You cannot take code written for one platform and get it to run in
another one.

The point is that the Compact Framework does not support the entire .NET
framework that the desktop does. Most of the overloads are missing. Many
of the classes are missing. For example, I wanted to use a SHA hash on
my iPaq but there aren't any crypto classes in the CF, so I had to write
my own. This means that any utility code written for the desktop that
uses SHA, but does not use *any* hardware features, will not work on a
CF machine.

>> <sigh> you've not been following the conversation. The problem is
>> that the .NET heap is memory hungry and the GC nmechanism is
>> processor hungry.
>
> Can you back that up with facts? Links? Statistical data? Under which
> particular circumstances is it processor hungry?

Been following the argument? When the GC occurs it suspends all threads.
It does a walk of all objects from the roots it determines. All objects
in the finalization queue are finalized. You're telling me that all of
that is tivial and uses infitessimally small amounts of CPU cycles? I
have written .NET code that has frozen the entire machine, sure, I
didn't intend it to do that, and a bug created 10 times more objects
that I intended, but it certainly froze the machine when a GC occurred.
The GC is great for what it does, but don't ever imagine that it is some
pice of magic that will solve all of your software problems.

Richard
Signature

http://www.grimes.demon.co.uk/workshops/fusionWS.htm
http://www.grimes.demon.co.uk/workshops/securityWS.htm

Mike Hofer - 16 Oct 2005 17:36 GMT
> > You *know* so? How? What information sources do you have that we do
> > not? Can you please post them so we can be equally as informed?
[quoted text clipped - 9 lines]
> case for it. I was told that unmanaged wrappers would be supplied for
> 'VB6 developers to use'.

First and foremost, I apologize if it seemed like I was questioning
your credentials. I wasn't. I was asking for the information because I
have an interest in it. I am sorry if I offended.

Mr. Skeet pointed out to me that you're the author of several books. I
wasn't aware of that. I I see that you've written "Professional ATL COM
Programming," and "Developing Applications with Visual Studio .NET".
I'm sure there are more, but Amazon isn't listing them. I have no
doubts about your credentials.

Sadly, my company is cheap. I'm still arm wrestling them to get an MSDN
subscription. If we had one, I'd have seen your article in the online
libraries.

> I have just finished an analysis of Vista and I find that there is very
> little .NET in the operating system. Clearly, when the big change
[quoted text clipped - 3 lines]
> and someone who has spent 5 years persuading people to use .NET that
> comes as a complete disappointment to me.

Now that *is* disappointing. And completely justifies what you were
saying. I wonder what drove that decision on their part.

<snip>

> Is this enough for you?
>
> http://www.grimes.demon.co.uk/dotnet/vistaAndDotnet.htm

Quite. Thank you very much. I'm printing it now. :)

<snip>

> Go on, give me a quote *anywhere* on microsoft.com, or from *any*
> Microsoft person where they use the term 'cross platform'. They are
[quoted text clipped - 3 lines]
> other platforms, but it is a research tool, and it is not supported for
> production code.

Okay, you got me there. (Smacks of "plausible deniability," doesn't
it?) But it *seemed* to me that since Microsoft itself was publishing
the shared-source CLI on MSDN, that they were opening it up for
cross-platform development. It *seemed* to be a logical inference.

I'm going to have to stop doing that.

(PAL?)

<snip>
> I have asked Microsoft many times (most recently I asked Eric Rudder about
> this) and Microsoft have always replied that Office will remain a native
> application, although parts of it may have .NET code. Clearly their
> intention is to use .NET for RAD (in particular - RAD for *you*) and
> keep their code base native.

Now that's just cheating on Microsoft's part. It means that their
applications will always perform better unless you precompile
everything to native code.

And it is really sad that they don't plan to port Office to .NET. It
would be nice if IT folks only had to worry about one product, running
on two different OSes. It would make it easier to move between Mac and
PC as well. But, again, that kind of ease makes it *highly* improbable
that Microsoft will do it.

<snip>

> Here's a question: will mono code run under Microsoft's runtime, and
> visa versa?

That's a really good question. I feel an experiment coming on.

> Microsoft have *never* said that their intention is for 'mobile' code,
> that is, code that will run on multiple platforms. I know because I
> have spent 5 years trying to find such a statement!

I'll defer to your experience on that one, then.

But I really wish folks--including Microsoft--would stop treating the
Web as the silver bullet of application development. Web applications
are a pain in the a.s to develop, don't have anywhere near as rich a
UI, and are slow as hell. My users keep asking why web applications
can't do things that desktop apps can. Explaining why to them is like
pulling chicken teeth.

But I digress.

<snip>

> You have amply killed your own argument: .NET is *not* cross platform.
> You cannot take code written for one platform and get it to run in
> another one.

You'll find that I do that a lot. I'm working hard at becoming more
informed, and writing more accurate, knowledgeable posts, though.

> The point is that the Compact Framework does not support the entire .NET
> framework that the desktop does. Most of the overloads are missing. Many
[quoted text clipped - 3 lines]
> uses SHA, but does not use *any* hardware features, will not work on a
> CF machine.

Okay, I can see that.

> > Can you back that up with facts? Links? Statistical data? Under which
> > particular circumstances is it processor hungry?
[quoted text clipped - 8 lines]
> The GC is great for what it does, but don't ever imagine that it is some
> pice of magic that will solve all of your software problems.

I'd argue -- at the risk of shooting myself in the foot -- that that
was a defect that would have been rooted out in development or QA. I
think that the garbage collector can be expected to do odd things on a
development box, but not on a production box. Those kinds of bugs would
certainly have been rooted out before the product went live.

Right?

<ducking!>
Richard Grimes - 17 Oct 2005 12:23 GMT
>> Go on, give me a quote *anywhere* on microsoft.com, or from *any*
>> Microsoft person where they use the term 'cross platform'. They are
[quoted text clipped - 6 lines]
> Okay, you got me there. (Smacks of "plausible deniability," doesn't
> it?)

Oh I agree. Its a statement I have expected Microsoft to make ever since
they released the first beta. But theu have *never* said that .NET is
cross platform. They have always been careful to avoid it. I think the
reason is that Java's "write once, run anywhere" adage has received a
lot of flak. In any case, they don't really want people developing for
linux and the Mac is such a small market compared to PCs its irrelevant
to them. Why do they need to make it cross platform?

> I'm going to have to stop doing that.
>
> (PAL?)

Platform Adaption Layer. Essentially it is a C++ abstraction layer used
by the unmanaged code. The idea is that if you compile Rotor for a new
platform you only need to replace the API calls in the PAL - the rest of
the code uses the PAL functions (well its more complicated than that,
but you see the principle).

> And it is really sad that they don't plan to port Office to .NET. It
> would be nice if IT folks only had to worry about one product, running
> on two different OSes. It would make it easier to move between Mac and
> PC as well. But, again, that kind of ease makes it *highly* improbable
> that Microsoft will do it.

Clearly they have a business reason for their decision. My opinion is
that the security aspect of .NET alone makes it a reason for Microsoft
ot make all new development managed. But someone in Microsoft disagrees.

> But I really wish folks--including Microsoft--would stop treating the
> Web as the silver bullet of application development. Web applications
> are a pain in the a.s to develop, don't have anywhere near as rich a
> UI, and are slow as hell. My users keep asking why web applications
> can't do things that desktop apps can. Explaining why to them is like
> pulling chicken teeth.

Oh I agree. Recently I installed a new firewall on my machine and I ran
ntbackup and the firewall told me that ntbackup was trying to access the
internet. Why? This is plain daft, and the alarm bells started ringing,
suggesting to me that there was a Trojan. I suspect that it was the
initialization of the help system, but Microsoft really has to start
thinking about core functionality rather than bells and whistles.

> I'd argue -- at the risk of shooting myself in the foot -- that that
> was a defect that would have been rooted out in development or QA. I
> think that the garbage collector can be expected to do odd things on a
> development box, but not on a production box. Those kinds of bugs
> would certainly have been rooted out before the product went live.

That's what I have thought for a long while, but I now keep hearing
conflicting opinions, and Microsoft's own action of practically removing
all .NET apps out of Longhorn/Vista makes me suspicious.

The point is that the managd heap is extremely cheap to allocate memory,
far cheaper than C++. But garbage collection and finalization is
expensive because it happens at one time.

Richard
Signature

http://www.grimes.demon.co.uk/workshops/fusionWS.htm
http://www.grimes.demon.co.uk/workshops/securityWS.htm

Mark Harris - 21 Oct 2005 08:29 GMT
Yes, The mono mcs or the .net csc compiler can produce an application that
will run under the .net runtime and the Mono runtime will run the app under
windows and Linux. Now im not saying that every namespace is compatible from
one to the other but in the last few builds of Mono with their implementation
of windows forms has been an amazing eye opening experience for me. I have
found that most simple windows forms apps will work on both operating systems
and mono just gets better with each release. Just install Microsoft Virtual
PC (Richard I know you have a copy of this), install suse version of linux
(the iso is free), and the mono runtime, after that read a small amount of
documentation on how to use the mono runtime on linux and you can run the
app. It is that easy!
Signature

-Mark

> <snip>
>
> > Here's a question: will mono code run under Microsoft's runtime, and
> > visa versa?
>
> That's a really good question. I feel an experiment coming on.
Kevin Spencer - 16 Oct 2005 02:18 GMT
> <sigh> you've not been following the conversation. The problem is that the
> .NET heap is memory hungry and the GC nmechanism is processor hungry.

I'm afraid YOU haven't been following the conversation. That message, and
all of the replies to it, and most of this thread, are over a week old. It's
ancient history, and I don't want to revisit it.

Signature

HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Ambiguity has a certain quality to it.

>> First, Chris is mistaken. C# is as powerful as C++, if you know how
>> to use it. And, in fact, you can use C++ and C, and even Assembler
[quoted text clipped - 47 lines]
>
> Richard
Richard Grimes - 16 Oct 2005 11:44 GMT
> I'm afraid YOU haven't been following the conversation. That message,
> and all of the replies to it, and most of this thread, are over a
> week old. It's ancient history, and I don't want to revisit it.

Oh, right. So I haven't been able to get to the groups for a few days
and so *you* bar me from correcting some issues. Wow, how open minded
does that make you?

Richard
Signature

http://www.grimes.demon.co.uk/workshops/fusionWS.htm
http://www.grimes.demon.co.uk/workshops/securityWS.htm

Kevin Spencer - 16 Oct 2005 13:24 GMT
> Oh, right. So I haven't been able to get to the groups for a few days and
> so *you* bar me from correcting some issues. Wow, how open minded does
> that make you?

You were replying to a comment I made some time ago, and which was already
discussed to my satisfaction some time ago. This thread is no longer of
interest to me. It was going on for awhile when I jumped into it, and I have
more fish to fry. How does that reflect on my "open mindedness?"

I've been putting in 60-hour weeks now for a month, and debating is not
something I have the time or inclination for at this point.

Good heavens, dude, isn't "I'm no longer interested" a good enough reason
for me to move on to other things, or does it make me "bad" somehow?! And if
you think it does, how hopen minded does that make YOU?

Signature

HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Ambiguity has a certain quality to it.

>> I'm afraid YOU haven't been following the conversation. That message,
>> and all of the replies to it, and most of this thread, are over a
[quoted text clipped - 5 lines]
>
> Richard
Rob Perkins - 16 Oct 2005 16:58 GMT
> Oh, right. So I haven't been able to get to the groups for a few days
> and so *you* bar me from correcting some issues. Wow, how open minded
> does that make you?

Conversation died out a couple of weeks ago, actually. No matter,
though, IMO, because your comments are welcome here, as far as I'm
concerned.

Rob
NormD - 05 Feb 2006 07:52 GMT
Kevin,

I fully endorce and agree with your writings.  WHile I have recently
committed to VS .Net for all current and future applications (primarily fat
client WIndowsForm apps), the learning curve for .Net is only steep based on
the number of Objects available.

My only frustration is the IDE performance.  I have been hoping that there
are some configuration settings that would make my interaction with the IDE
more responsive, but to date no one has been able to help me locate them.  
Some contributors to these threads have talked about 3-5 second compile
times.  I can only assume that these are for class projects that do not
involve forms.  If I am wrong (which I would like to be), I am still seaching
for the best IDE configuration settings.

Signature

NormD

> > Microsoft said when releasing C#, tat C# is as easy as visual basic yet
> > powerfull as C++. But, if C++ is to be used for stuff tat C# can't do...
[quoted text clipped - 95 lines]
> > powerfull as C++. But, if C++ is to be used for stuff tat C# can't do...
> > wat's the point of introducing C# when, c# suckier than c++?
Kevin Spencer - 05 Feb 2006 14:27 GMT
Hi Norm,

Visual Studio.Net's IDE is one of the most massive applications that
Microsoft makes, in terms of what it does in real time, and what it does in
general.

With any software, the more work it does, the more resources (memory and
processor) it consumes. So, one easy way to improve performance is to
upgrade your memory and/or processor.

In addition, you can fine-tune what Visual Studio.Net does while you're
working with it. Use the Tools menu, and the Options dialog box. You can
disable various types of options in there, which, while disabling the
options, does improve performance, as these operations (especially real-time
operations) are no longer being performed.

You can set up the IDE to start with an empty environment to speed up the
load time when you launch Visual Studio.

The following link is about hardware requirements, but also contains a few
other performance tips:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/v
xoriVisualStudioNETSystemRequirements.asp


Signature

HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Who is Mighty Abbott?
A twin turret scalawag.

> Kevin,
>
[quoted text clipped - 14 lines]
> seaching
> for the best IDE configuration settings.
Lloyd Dupont - 06 Feb 2006 12:09 GMT
NormD

3-5 seconds is very reasonable.
I'm working on a multi project solution.
One of the main project which I recompile hourly is about 1.5Mb of source
code (in ~ 100 C# class).
It compiled in 3~5 seconds.
Of course C++ is much slower to compile, one of the reason I favor C#.
But anyway I have a C++ projecvt, as long as I don't modify too many
critical headers it recompile in the same amount of time.

Perhaps you should add some memory to your computer?

> Kevin,
>
[quoted text clipped - 150 lines]
>> > do...
>> > wat's the point of introducing C# when, c# suckier than c++?
Tyrant Mikey - 29 Sep 2005 17:02 GMT
That doesn't mean that C# is a bad language or that it's less powerful
than C++. I'd actually argue that C# is just as powerful, but far more
productive.

What makes software written in C# unsuitable for "real time
applications" isn't the language--it's the platform. .NET is not a
platform suitable for developing real-time applications.

As for why they did that with C#? Well, first off, C# is far more
NATIVELY object-oriented than C++. Originally, C++ was an extension of
C, and came with lots of baggage from C (manual memory allocation and
cleanup, for one). C# is a brand new language, designed from the ground
up to be object-oriented. It isn't an existing language that had
object-oriented features strapped on top of it. Its primary similarity
to C and C++ is the syntax, but that's about it.

Also, you have to place all this stuff in its proper context.
Conspiracy theorists might somewhat justifiably draw the conclusion
that Microsoft developed C# because it got slapped on the wrists for
messing with Java. When designing C#, Microsoft didn't have to abide by
Sun's rules about what it could and could not add to the language. So
they built an entirely new language, designed to be object-oriented
from the ground up, using C-style syntax, but incorporating many of the
features that made VB such a productivity boon. The pervasive
familiarity with the C-style syntax makes it appealing to a *very*
broad number of users (C, C++, and Java programmers at the least),
while the productivity enhancements from VB make it likely that many VB
developers will take a look at it.

I think that if I was Billy Boy, I'd see that as a really good thing,
and more than enough justification for creating the language. And then,
I could look like a really good guy if I made them standards.
Kevin Spencer - 29 Sep 2005 23:51 GMT
> What makes software written in C# unsuitable for "real time
> applications" isn't the language--it's the platform. .NET is not a
> platform suitable for developing real-time applications.

That statement just flies in the face of statistical fact. And personal
experience.

Signature

HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Big things are made up of
lots of little things.

> That doesn't mean that C# is a bad language or that it's less powerful
> than C++. I'd actually argue that C# is just as powerful, but far more
[quoted text clipped - 28 lines]
> and more than enough justification for creating the language. And then,
> I could look like a really good guy if I made them standards.
Jon Skeet [C# MVP] - 30 Sep 2005 05:25 GMT
> > What makes software written in C# unsuitable for "real time
> > applications" isn't the language--it's the platform. .NET is not a
> > platform suitable for developing real-time applications.
>
> That statement just flies in the face of statistical fact. And personal
> experience.

What statistical fact are you talking about? What *exactly* do you mean
by real-time applications? I suspect you're not thinking of the same
kind of thing as I am and some other posters are, in terms of
*guaranteed* response times etc.

It's not just .NET either - Windows itself is simply not a real-time
operating system.

Signature

Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet   Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too

Kevin Spencer - 30 Sep 2005 13:57 GMT
Sorry Jon. I misunderstood your use of "real-time." You are, of course,
correct.

Signature

HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Big things are made up of
lots of little things.

>> > What makes software written in C# unsuitable for "real time
>> > applications" isn't the language--it's the platform. .NET is not a
[quoted text clipped - 10 lines]
> It's not just .NET either - Windows itself is simply not a real-time
> operating system.
Tyr