“These are syntactically interesting features, not life-changing events. Most programmers who’ve spent a few years in the industry learn large numbers of languages. C# is just a particularly interesting addition to the pack.” Read the article at ZDNet.
A number of the reasons made me shudder.
but hey, each to their own.
M$ who created VB, Windows 98 mellinium and windows NT.
C# is scary
so that I can build and deploy applications only on a single platform, with submarine legal EULA’s, that are incredibly insecure, have huge upfront costs for the tools required to write even a single line, and insure that any distributed applications I build are so enourmously, outrageously expensive that 5 licenses of Windows is just not enough for my distributed app.
Finally, the last reason is so that I can use C#, a product that serves no useful purpose on .Net, except to kill Java and sell more Microsoft software.
Did I leave out anything? I must be ranting again. Oh geeze, look at that, another ranter:
http://mattschwartz.net:9000/msversus/index.php
-Hack
1. MS patents covering technology of underlying CLR supporting C#
2. C# Windows only for production use
3. C++ more mature
4. C++ better performance
5. “equivalent” C++ app has smaller memory footprint
6. templates
7. MI
8. Overloaded operators
9. higher availability of C++ developers
10. Unpoluted by VB style language constructs
Seriously though, these “top ten” lists are bogus. How about posting some articles on why C++ is a better language choice on balance? Perhaps MS wont pay for articles like that.
8. More flexible source code organization.
OMG what a bad reason. How to make your code rapidly unreadable in one easy step. Don’t use naming conventions? Arrrgh.
1. foreach:
this is funny because I have used foreach for years. Maybe he has never used another language than Java or C#?
I thought most of his points were pretty good, arguably minor improvements over Java. But keeping the C preprocessor around is a major concession to pragmatism over best practices. It’s true that the preprocessor has some uses, like conditionally commenting out large blocks of code. The problem is that people get lazy and start using it in all sorts of places where they shouldn’t. For example, the Visual Studio C++ wizards typically generate reams of code littered with complex, nested macros. This may be a case where less would have been more.
“4. C++ better performance”
Performance is a property of the implementation, not the language. There is no reason, as far as I know, why you couldn’t have a C# compiler that produced code as fast or faster than a C++ compiler.
“5. “equivalent” C++ app has smaller memory footprint”
Ditto, probably. Especially considering what can happen if templates aren’t used carefully.
“8. Overloaded operators”
C# has operator overloading. Actually, it was C# that persuaded me that operator overloading isn’t necessarily a good idea, after I saw how it was used in .NET.
.Net and C# as the language of .Net is not a bad idea if you are using a vendor platform. If I had to use that platform (Microsoft) than I would want to build throw away solutions where the vendor has done the research and development. An applications serves a purpose, and that purpose is especially attractive on vendor platforms where quality of software is not that important, but keeping up to the technology is essential.
Is C# an MS-only thing? I could’ve swore that you could use it with QT and GTK as well ?
It’s middleware. .Net is middleware and C# is a subset of the intermediate language.
GTK is a widget toolkit, so it can’t compile and execute in user mode. Someone is developing Linux middleware though, called mono.
“5. “equivalent” C++ app has smaller memory footprint”
Ditto, probably. Especially considering what can happen if templates aren’t used carefully.
Almost true, C# (and Java) requieres a larger runtime then C++.
C++ relays on no APIs, its just a language, Java (and I would guess C#) requere some (the base Object + loading classes + small set of support classes).
C# (and again Java) both assume a GC will be running, which will take up a small chuck of memory, this is not true in C++.
C# is just a language, with a compiler you can compile it to any runtime enviroment it can compile to.
I’m happy in any language that is reasonably dynamic and allows me to get stuff done without worrying about nitty-gritty details like manual memory management, etc. (except when absolutely necessary).
My favorite language, from the standpoint of pure practicality and syntax, is ruby. On Windows, I use .NET and ruby. On my Mac, I use Objective C and ruby.
I don’t give a rat’s ass about cross-platform capabilities. For those that want it, voilà Java. I’ll take C# and .NET over Java any day (and ruby, too, for that matter).
What middleware application servers offer that is better than Microsofts MFC wapper of the system interface (Win32) is an object oriented API (framework). The framework promotes reusable design through inheritance and class organization provided by a namespace heirarchy. It’s a great environment for rapid application development. The intermediate langauge process facilitates security and integration with any architecture for which there is a virtual machine runtime implementation.
I can only say that Standard C++ is a more mature langauge definition than C#, however they have different valences. One is for system implementation the other for solution implementation.
Linux’s X protocol that establishes communication between the Xserver and Xclient defines a primitive API (xlib), so a developer might very well have a much easier time developing a native widget set implemented as object oriented frameworks. This is almost true of Gtk+. Gtkmm and Gtk+ are more valuable libraries than anything out there, because they are open source projects, and are controlled by the user community. There is nothing stopping someone from creating powerful applications with Gtk+ or it’s Standard C++ binding (Gtkmm). Yet I don’t believe this solution is available to vendors, who need to compete with each other and make big money. So the answers require thought, what API to use, and why.
And of course C. Why bother with C ‘hash’?
If you are using a vendor platform like Microsoft, why piss around with C++. It’s not logical. And if too many people did, than Microsoft would just take it all away because they want to sell things. You have no control so pay your rent and use .Net or Java and build throw way solutions. On the other hand, when using an open source platform, where quality software is the most important thing rather than sales and hype, the options are native widget toolkits or the developing but still immature open source middleware project, Mono. One migration path could be to learn Gtk+2.0 and Gtk#.
Web services makes more sense on an open source platform. I’m not going to justify that statement, but I believe it nonetheless.
It’s not C ‘hash’. It’s Chash, like Cash.
I think C# is somewhat good, but I don’t encourage its use ’cause it’s from Microsoft. Yes, I know, that’s a lame reason, but I don’t want to encourage a monopoly even further, hehe.
Amen brother, I was thinking the exact same thing. Ruby and Python are my two favorite languages, and I’m yet to find something that one or the other cannot do. If you like static typing, you should check out O’Caml or Standard ML. They’re both fantastic languages as well and encourage good functional style. I find the reasons cited in the article to be less than convincing since they seem redundant to the languages I use for work and hobby programming (Ruby, Python, O’Caml, Lisp). To each his own I suppose, but I encourage all programmers out there to keep an open mind.
[grant@EV8 grant]$ g## test.c##
bash: g##: command not found
What’s this C# crap?
.. and yes jaded, I too am under the sneaking suspicion that OSNews (C# != OS) is slowely but surely becoming MSOsNews.com.
Where News = M$ + FUD + PR.
For big/speed-critical applications I havent found anything that beats C++, no java or .net JIT can match the speed
of properly compiled/used critical C++ code. I do audio and game (graphical) programming and java/.net are useless here. I find c++ to be really powerful in the sense that you can emulate a lot of the features of java/.net using templates properly, but the only drawback is that C++ is so featured that it takes a long time to become comfortable with it.
For non critical apps, I am fine with python, it’s simple, nice and powerful.
I cant talk much for multithreading, as it is not that useful in the kind of things I write..
I thought most of his points were pretty good, arguably minor improvements over Java. But keeping the C preprocessor around is a major concession to pragmatism over best practices. It’s true that the preprocessor has some uses, like conditionally commenting out large blocks of code. The problem is that people get lazy and start using it in all sorts of places where they shouldn’t.
Java actually has conditional compilation, just use a constant in your code like this:
if (DEBUG) {
// …
}
and the compiler will remove the condition and enclosed code if DEBUG is set to false. One caveat though: the constant has to be defined in the same class or in an interface implemented by that class.
Calling C# “a particulary interesting programming language” is stretching it a bit wouldn’t you say? It’s a very ordinary, no thrills, mundane, dull, unimaginative, uninventive language. Much like the entire .NET environment. Nothing to see here, move along people.
Most of the new ‘language features’ of middleware seem to be the result of the architecture. The short amount of time that these abstractions have taken to progress, makes me suspicious of their value. I belive that at some critical date they will be repackaged in a new format and resold. I don’t think that anyone can know their value outside of the position taken by logic, that these features compete as the best way to solve a problem from the one angle that the vendors are looking at.
The one angle is motivated by tools. The more that the vendor can make people dependant on their tools, the more rent they can justifiably charge, and at the same time maintain the illusion that you are getting ahead.
Pffff…ten reason to write this kind of stuff:
(in the mind of the author who wrote the article)
1. i get paid
2. i did not had anything else to do
3. Heh i click and it does click. Wow!
4. Euuhh..hail Microsoft
5. I was spit out by the Java community
6. My dog likes Bonzo
7. 7? oh 1,2,3,4,5,6..7 right!
8. My god, my M$ stocks are have to go up!
9. C# whats that, oh who cares i will suck my thumb
and do some googling on it..
10.I hate those long haired, big belly, bearded guru’s…aaarggghhh!
Just one reason to not use it ever:
1. It is a Microsoft product.
Bas
Microsoft can take their research that they collected over many years and simply maintain it so that it can be repackaged and presented in a new and popular format. They can force you to buy it because they will introduce barriers to other paths by consolidating and integrating all of their servers and accessories into the new presentation model. They are in complete control over their closed source platform and your wallet.
‘Performance is a property of the implementation, not the language. There is no reason, as far as I know, why you couldn’t have a C# compiler that produced code as fast or faster than a C++ compile’
Maybe because C# and Java use runtime environments? Thus needing to translate code to the runtime? C++ compiles to binaries, C# needs a runtime to function – so more overhead and much slower.
I like c#. I like it more than java even though with tools like Eclipse and IDEA programming in java is a joy. The good news for java developers is that Sun actually has an incentive to add some new features to java as seen in the forthcoming 1.5.
Java zealots always get their panties in a bundle when .NET is mentioned. Java isn’t going anywhere on the server side of things, but java is dead on the client(was it ever there?). The good news for java and c# developers is that it’s not a big leap to learn and use the other language.
> I don’t give a rat’s ass about cross-platform capabilities.
This level of indifference towards cross-platform developement will cost you dearly my friend: Making things work across platforms is paramount for staying alive in the world of software. Please, reconsider your opinion on this.
For those among us that hate the preprocessor and numerous other ugly features of C/C++, consider the D language at http://www.digitalmars.com/d/index.html. C# should be implemented as D#, but that’s probably not going to happen.
This level of indifference towards cross-platform development will cost you dearly my friend: Making things work across platforms is paramount for staying alive in the world of software. Please, reconsider your opinion on this.
I love sarcasm.
[sarcasm]You know, you’re right. I’ve reconsidered, and I now realize that every major, top-selling, widely-used software product runs on every platform! You’ve changed my mind![/sarcasm]
common lisp. to date, i have found no other language that i can hack up more usable code in less time. amazing stuff. debug in half the time. now if i could just find an easy way to tie it to a gui, i’d be set.
when you speak of c# as good for production not performance, then the argument of “lisp is too slow” goes out the window. arguably that argument sux anyway, but thats a whole ‘nother issue.
Is there any way to play around with C# without investing a ton of $$?
Why is MS even in the language business!
It’s time for them to face facts,
we don’t need this crap.
Rip Off design, low quality, low reliability, low adaption rate.
MS should get back on the Java bandwagon and stop shipping this crap.
Enterprise shops don’t want a language that only runs on MS desktops.
To each his/her own.
After years of trying and using a number of “new” languages and tools, I went back to using scheme and lisp for most of my development. I find the lisp (and forth) family of languages to be more expressive/malleable and stable than most other “new” languages. My productivity, which was always considered high by past employers/clients, has increased. I spend less time debugging and programming is more fun now.
So you don’t have to follow the crowd to be successful. In fact, most “new” proprietary/commercial software today is purely created to make a profit off of the next bunch of unsuspecting suckers anyway.
> I love sarcasm
Me too.
>I’ve reconsidered, and I now realize that every major, >top-selling, widely-used software product runs on every >platform!
Just bare with me, these top-selling software products turn into dinosaurs sooner or later, take my word for it. At the end of the day, open source cross-platform software will prevail as the new Homo Sapiens of all software. We are talking about the ability to adapt.
10. If you want to use foreach loops, use VB instead.
9. Other language constructs like properties that reveal how closely wed C# and .NET are to Windows
8. “More flexible code organization” == sloppy coding that is worse than sloppy documentation
7. C# ain’t cross-platform– Mono and DotGNU are subsets of CLR, and the full implementation will never run on anything but Windows.
6.Which means, if you want to develop server components, you have only one platform choice– Windows.
5. Which means, if you adopt .NET, you lock yourself into Windows, forsaking the opportunity to port your applications.
4. If you’re developing web applications, .NET is a poor choice due to a lack of a middleware infrastructure: http://www.computerworld.com/developmenttopics/development/story/0,…
3. C# as a language and as part of the .NET platform, is immature compared with Java and other languages and platforms.
2. Columnists like John Carroll who put on the “starry-eyed dreamer” spiel to tell you how wonderful .NET is
And the number one reason not to use C# is…
1. It’s from Microsoft… ’nuff said.
There are plenty of ways to try it out. If you only do server side stuff, mono <www.go-mono.com> is your best option. It has quite good performance and there is also a fully functional asp.net webserver called xsp written in mono.
If you like doing GUI stuff, there is qt# and gtk# for mono. There are some screenshots on the mono site.
For Windows, there is the .NET platform SDK, which comes with a C# compiler. As an IDE you can use SharpDevelop <www.icsharpcode.net>. It is really quite nice. The only thing that is missing is an integrated debugger, but the .NET platform SDK comes with a graphical debugger.
If you want to write non-portable windows applications, there is the Windows.Forms GUI toolkit which comes with the platform SDK. But IMO it is not as good as gtk# (no decent layout management).
From article:
C# is a language for writing .NET applications. It is not exclusive in this role (Visual Basic, C++, Java, COBOL, Python and Perl, among others, all have compilers that generate code that runs inside a .NET runtime
Is that true – JAVA has a compiler that runs in .NET. He isn’t talking about J# now is he?
Never have I heard this much crap in one discussion…
I don’t mean to get personal, but honestly, you all seem a bit too anti-Microsoft (or the very childish and highly inhumourous version: M$) and Open Source zealot’ish. I must say that I am lacking respect for opinions such as “Linux rulez, M$ sux, etc. etc. etc.”.
How many times have I not seen “I don’t use it, solely because it’s Microsoft”?
Personally, I’m using Linux, primarily because I’m a geek, I love the “intimacy” with my computer. But saying the Microsoft is producing low-quality software and that the .NET platform is unstable and that the world in general would be better off without, would be untrue. (surely, Windows 98 and lower were unstable as hell, but XP+ is getting there)
I am an amateur C# programmer, programming against the Mono framework. I have been looking at Java for a while, but I got tired of the forced directory stucture (mentioned in the article), the naming conventions, and the speed of the CLR.
I have also tried C++, but it is very hard for beginners to produce anything useful (especially when I’m only in high school and don’t have much spare time). And I must say I am willing to sacrifice the extra milliseconds for guaranteed stability (I know it isn’t guaranteed, but bugs are much less likely to occur when you don’t have to do everything yourself) and ease of use.
C# is not “owned” in that way by Microsoft, as it is an ECMA standard (and ISO too, IIRC), and anyone is free to implement the CLR on any platform.
I honestly don’t know why so many people are so mad just because Microsoft invented it. Paranoid single-minded zealots is what you are.
“Ignite flame-throwers… and… FIGHT!”
– Simon
From the article:
In my experience as a Java programmer, it is very common to get an exception that is NOT the real cause of the problem.
Then don’t throw:
catch (Exception e) { return e.StackTrace(); }
as the exception DOH!
You took the words right out of my mouth man.
Honestly, I’m betting C# will end up having a fairly large impact on the computing world. Java is a nice evolution over legacy languages such as C and C++. However, it some areas it’s seriously lacking. First off, it’s terrible for concurrent code. So far C# looks to be much much better in this area. Second, many people find Java a little too restrictive. While C# is more restrictive than C or C++, as any managed language will be, it provides more flexibility than Java. A good example is operator overloading. Some hate this feature, others love it. Personally I like it, and it’s nice to be able to use it.
C# is also exposes more of the underlying operating system. While this does impact portability, it also allows it to easily interconnect with other librarys. Take, as an example, what ximian has done with GTK#. A C# article here on OS news does not mean “let’s bash Microsoft”. It would be nice to have an actual *intelligent* discussion here. In that light let’s have no more posts about the following,
C# is inhibited by Microsoft’s patents: Due to standardization, anyone is free to implement the said standard. Microsoft surely can deviate from the standard, but that does not invalidate the entire language.
C# is a java clone: C# improves on many aspects of Java and also has features Java does not. It is in no way a clone. While much of the class library may look *similar* to Java’s, this is due to the fact that both libraries are modern Object Oriented designs. There are only so many design patterns that are effective, so it’s not surprising they look similar.
C# is slow: Probably it’s slower than C and C++, but supposedly early tests show that managed code can be run *almost* as fast as unmanaged code. For typical application development this is perfectly fine.
C# runs only on Windows: See the Mono project which has made very impressive progress. Eventually, like gcc, mono will bring C# (and visual basic I think) to all platforms.
Please ignore any grammar or spelling errors I’ve made, I’m still working on my second morning coffee.
Is there any way to play around with C# without investing a ton of $$?
If you have Windows then you can just download the .Net SDK. The C# compiler comes with it.
Or you can mess around with Mono. That much at least gives you C#, though not full compatibility.
There is a BSD port of the shared-source version of .Net as well (including the compiler), but I’ve heard that it doesn’t run very well.
Mono’s mcs (C# compiler) is 100% compatible with Microsoft’s! Dammit! 😉
(alright, maybe there’s a difference of 0.0001%, but…)
Oh, and Mono doesn’t include System.Windows.Forms (e.g. no GUIs, unless you mess with Mono CVS and Wine hacks – or Gtk# or Qt#, which are getting better and better)
– Simon
> 10. If you want to use foreach loops, use VB instead.
What’s wrong with foreach? BTW: VB isn’t the only language with foreach.
>9. Other language constructs like properties that reveal how closely wed C# and .NET are to Windows
Properties are used in other languages as well. In Java’s case, they are presented as private variables with public getVariable() and setVariable() functions. In C# properties are defined as proper properties, and not pseudo-properties like in Java.
>7. C# ain’t cross-platform– Mono and DotGNU are subsets of CLR, and the full implementation will never run on anything but Windows.
C# is cross-platform. Some of the functionality in the libraries in the .NET framework will probably not be ported, but the C# language will be.
What is all this crap?
Just because C# and .NET were created by Microsoft does not detract from their usefulness.
C# is a GREAT language, no, as others have commented, it is not revoltionary, but that doesn’t prevent it from being a GREAT language to get things done in.
No offense, but virtually no non-trivial piece of software will be automatically cross-platform out of the box, we’re constantly told about new cross-platform solutions that are “write once, run anywhere” the list of such “solutions” are enormous…Java, wxWindows, QT, Perl, Web applications, etc. etc.
However, if you are careful, you can write portable code with whichever language you use. Just because a feature is specific to Microsoft’s implementation of C# and .NET does not require you to use that feature, it will always be possible to write code that works on both the MS version and the Mono version.
The guy who designed C# (Anders Hejlsberg) is also the author of Turbo Pascal and various other great programming tools from Borland.
Some people need their blinders ripped off. C# is just a programming language, nothing to fear, and who cares if MS makes it proprietary down the line…it’s open right now and standardized…(more than i can say for Java)…and that is something MS can never take away from us.
-bytes256
that ZDNet.be (like many other sites) by M$ then it’s no wonder why any reason is a good reason to be nice to M$… I’m not saying that C# is bad, it’s just another one in the row…
-fredo
C# is cross-platform. Some of the functionality in the libraries in the .NET framework will probably not be ported, but the C# language will be.
Who really cares if the language is ported but the libraries aren’t? I mean, would anyone be excited about Java getting ported to xOS if java.io and java.util weren’t there? The libraries are the key – at least in the real world.
One of the reasons why almost every discussion involving Microsoft on OSNews isn’t regarded as serious is the wildly exaggerated use of $’s instead of proper S’s.
Please, stop it. It just isn’t funny any longer. We all know Microsoft makes a lot of money and, as a business, one of their primary interests is to make more of exactly that, which by no means is unique to Microsoft.
I would like to see some more arguments other than those in the style of “M$ sux big time”.
And fredo-, I am pretty sure ZDNet’s articles aren’t influenced too much by the fact that ZDNet receives some funding (or whatever it is they’re receiving) from Microsoft. Stop being so suspicios to everything that’s got money involved…
– Simon
But the libraries are ported to other platforms… Come back when you have checked out http://www.go-mono.com , then you might have a clue of what you’re talking about…
– Simon
You nailed it, Jedi Jeff. It’s not the language that is so important but what you can do with it. The libraries define what you can do with any programming language. The lack of a full port of the CLR libs to any non-MS version of C# means a much more restricted sphere in which that language can be used. MS has no interest in porting it to another platform. I would expect Redmond to introduce “enhancements” to the .NET framework that would make Miguel’s Folly, er, Mono and DotGNU incompatible.
There is always one great reason why NOT to use C#. It’s from Microsoft. Just say no.
>>Please, stop it. It just isn’t funny any longer.
Its not to meant to be funny..its serious..M$, stands for a money hungry company that will do everything, everything to get more and more money. If you do not play fair you get burned and the will burn.I dislike M$ very much for the way they do business you on the other hand think that is logical for them to do, fine! that is your opp. but please stop asking me to stop doing my thing, for me its M$ and if you do not like it read ahead..i, other than M$, do not force you to do anything..
I didn’t claim that C# libraries aren’t being ported to other environments. Please come back when you can take the time to actually read my post.
I think the main point is what you can do with the libraries that are (or will be) ported.
My guess is that Mono will port enough (and probably more) functionality to equal Java.
Which arena are we talking? Just the server side stuff (utilities, networking, messaging)? Enterprise stuff like JDO and Servlets/JSP? Client stuff?
I ask this because I am not exceedingly familiar with the .NET framework, nor am I familiar with the projects to port the libraries to non-MS platforms.
re:Performance Marcel
Maybe because C# and Java use runtime environments?
This is not a propertie of the language, you can write a compiler which compiles to native (GCJ for example).
C# and Java have properites which make them slower and bigger than C++ (a small set of required classes, and a GC). But both have advantages.
re: the language of choice.. (the old guy)
I’ve tried to learn Lisp a few times, I might have a go again at some point
re: Any cheap way to try it out?
Yeah, download the free SDK from microsoft.com
Or download Mono
Anyway, what would I know, i’ve move almost entirely to bash scripts =)
Performance is a property of the implementation, not the language. There is no reason, as far as I know, why you couldn’t have a C# compiler that produced code as fast or faster than a C++ compiler.
This is true if you believe a language is nothing but a bunch of syntactic sugar. However, C++ and C# both define order of operations as well as operations that must be performed when objects come in and go out of scope. It is entirely possible that you can not write a C# compiler that generates native binary that will ever be as fast as a C++ implementation (and vice-versa).
In C# you have nice little things like garbage collection which make controlling memory size and time of deallocation impossible. Sometimes garbage collection can speed a program up, but more often it slows it down.
There are several floating point optimizations that can’t be performed on C++ code (though you can override them if you know what you’re doing with say, the Intel compiler) because of how the language was specified.
I do audio and game (graphical) programming and java/.net are useless here.
I assume you have seen none of those distributed games with AI and 3D graphics written in .NET out there? and yes, I’m serious
Who really cares if the language is ported but the libraries aren’t?
Ahem…
I agree that the libraries are very important, however, IMHO they shouldn’t be taken into too much consideration when evaluating the language. I primarily prefer C# because of it’s syntax, which is a delight… (it’s like C/C++, just “cleaned” – e.g. no semicolon after class declarations, and no pointer operators).
And Bas,
I’m just saying that if you want to be taken seriously on discussions like this, use the proper name for the company… Like I said, we all know Microsoft is money-hungry, it isn’t that much of a surprise – Because every company is. For instance, I would say Coca-Cola is many many times worse than Microsoft. (I heard a story about a guy who got kicked out of college because he wore a Pepsi-shirt on “Coca-Cola Day”! That’s scary!)
– Simon
I’ve never used C# myself, but I think his 10 reasons are big advantages over Java.
I still like programming C and/or C++ best, since it doesn’t tell me what to do, but let’s ME decide how to programm (and if *I* think I need to follow a NULL pointer, than it’s MY fault, however why remove such useful things like pointers? (and I know about references, thanks))
And when I needed to program in java for university, I really hated a lot of things which he says.
—
First of all, i really LIKE the preprocessor.
Second, I was FORCED for NO reason to put every class in a predefined filename/directory – WHY???
And there more things which are little bit better than in Java, however I really hope that no managed language will become popular on my desktop, but rather go back to REAL languages like Delphi or C, which still compile to native code.
C# has pointers when you use an unsafe code mode…
“I do audio and game (graphical) programming and java/.net are useless here.”
Ever hear of managed DirectX? Probably not, it came out with the release of DirectX 9 and supposedly it is almost as fast as unmanaged DirectX.
Hey Windows is not the only os present in this world. Somethings Microsoft likes to forget. Even developer see according to their perpective. Hey choose language according to application requirement. It will remove most of your debate.