.NET Forum / .NET Framework / New Users / March 2006
.NET SUCKS --- READ FOLLOWING. MICROSOFT IS A SUCKY CO
|
|
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 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. |
|