Visual C++.net vs Visual C#.net

Started by
49 comments, last by Drilian 16 years, 11 months ago
There is also the Tao Framework which is cross-platform.
Advertisement
ejele012, you really need to stop proliferating all this incorrect, unverifiable or just plain idiotic information. You're not helping anybody by spreading misinformation, and you're only making yourself look foolish.

Quote:
With C# and XNA, what Microsoft call Cross Platform is just that you can write a game that can be run over windows and Xbox 360.

That does technical fit the definition of "cross platform," you know. As for C# code in general, since it can be made to execute on multiple platforms than it is, itself, cross platform too. Calling C# "cross platform" is not a marketing ploy by Microsoft, it's a fact.

Quote:
The .NET technology was develop by Microsoft, it runs only on Windows and Xbox 360 and they have a variety of projects with it. You need MONO to be able to use it on other systems. The Mono Project is an open development initiative sponsored by Novell to develop an open source, UNIX version of the Microsoft .NET development platform. So, it can't be 100% compatible.

Microsoft's .NET technology is a all-encompassing term that covers a variety of technology, among them an implementation of the ECMA standardized Common Language Runtime. Mono is another implementation of the CLR, it is not strictly a ".NET clone."

Of course it's not 100% compatible, but if you actually possessed any relevant knowledge on any of the subjects you continue to try to pontificate on, you'd realize that C++ cannot claim even close to 100% compatibility across any implementation either.

Quote:
You have more control over C++, you can make unmanaged and managed code with it.

No, C++ is an unmanaged language. You can leverage compiler-specific extensions (in Visual Studio 2003) to augment the language with managed code, or you can use C++/CLI (which is its own language with its own language standard document) to write mixed-mode code. This is hardly "more control," in any case. Please try to look beyond the end of your nose. And how to do you believe you can have control over a language with so many explicit cases of undefined behavior?

Quote:
And if you want to use C# with XNA you'll be tied with Microsoft C# Express Edition. Is good, but you don't have more choices.

You only need C# Express installed to actually proceed with the XNA installation; an unfortunately little snag, I agree. However, once installed, you can reference the XNA framework assemblies from any C# IDE, so you're wrong again. There are number of C# development environments out there, although you're correct in noting that Microsoft's tools are good (probably the best currently available).
Hi jpetrie;

Sorry if I hurt your feelings with my opinion.

Just make this clear for me. With a yes or no is enough.

A game made with XNA can be run over Linux, BeOs or Mac?

You said that "No, C++ is an unmanaged language." So, correct me if I'm wrong.

.NET is not tied to any particular language. Microsoft oficially supports four different .NET languages:

.- Managed C++.
.- C#.
.- Visual Basic.NET.
.- J#.


And lastly, please tell me how can I compile an XNA game in a C# IDE on Linux?

Thanks for your patience.
Quote:Original post by ejele012
A game made with XNA can be run over Linux, BeOs or Mac?
Maybe. I haven't checked up on the Tao.Xna project lately. Besides, whether or not XNA is cross platform has nothing to do with whether C# is cross platform.
Quote:.NET is not tied to any particular language. Microsoft oficially supports four different .NET languages:

.- Managed C++.
.- C#.
.- Visual Basic.NET.
.- J#.
This is correct, more or less. Managed C++ and C++/CLI are two separate supported entities.
Quote: And lastly, please tell me how can I compile an XNA game in a C# IDE on Linux?
How do I compile a DirectX game in a C++ IDE on Linux?

Do you see the problem with your question? XNA is not C#. C# is not XNA. You use XNA if you want to run on the Xbox 360. If you want to run on Linux, you probably ought to use something that runs on Linux, like say OpenGL.

You don't see anybody complaining that C++ is not cross platform because DirectX and Win32 don't work on BeOS.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Quote:
Just make this clear for me. With a yes or no is enough.

I will do no such thing, because you've crafted your questions such that a simple yes or no answer undermines entirely the points I was trying to make by avoiding them altogether. Whether you've done this because you're conniving or because you simply fail to understand me, I don't know. However:

Quote:
A game made with XNA can be run over Linux, BeOs or Mac?

No. However, I never claimed as much. I said that XNA being deployable to the PC and to the 360 does technically qualify as cross platform and that C# itself is perfectly cross platform.

Quote:
.NET is not tied to any particular language. Microsoft oficially supports four different .NET languages:

More, actually. But yes, .NET is a buzzword -- a name for a suite of things, some of which include the CLR implementation (I mentioned this already), some of which include the implementations of the CLI and type system, some of which are tools, et cetera.

"Managed C++" is not C++, it was the term used for the set of nonstandard, non-crossplatform, compiler-specific extensions Microsoft shipped with Visual Studio 2003, prior to the standardization of the C++/CLI language. Managed C++ itself is primarily available only in VS 2003; VS 2005 provides C++/CLI.

Quote:
And lastly, please tell me how can I compile an XNA game in a C# IDE on Linux?

I never said you could, this is yet another case of you ignoring or failing to grasp my point. I addressed two related issues, however:
1) C# itself (no mention of XNA) can be compiled on, and executed under, Windows, MacOS and various *nix systems trivially. There also exist tools other than those supplied by Microsoft to write and compile C# code.
2) XNA does not require VS C# Express beyond the install phase. Once installed, you can reference the XNA framework DLL's from any C# toolchain. You'll only lose out on some of the VS integration Microsoft has provided for VS, but any other C# toolchain could offer the same integration if they chose to.
Just my $0.2:

1) C++.NET will be your choice if you are coming from the C/C++ background and dont like anything else. C++.NET has a lot of sample codes fro Managed DirectX 9.0

2) C#.NET is pushed by Microsoft to beat Java, so even most of the gaming libraries exist only for C#, and not for C++. New XNA libs are mostly for C# with some examples in VB. So, you have no choice, but follow the M$ crowd and code in C#. BTW, XBox 360 XNA Studio is only available in C# (as far as I know), so if you are planing to developing games for your XBox 360, you have no other choice. ;)

Cheers
--------------------------------FunGameVideos.com - videos from gamers, always fun to watch ;)Free Game: Paris Hilton Jail Time
My two cents (from someone who has coded in and out of .NET):

First generally C++ is more useful to you as an up and coming game programmer. C# can be neat to work in, and it has supposedly been getting faster, but unless you get fancy you'll also end up learning far less about direct memory control.

The deal with both C++ and C# .NET is that you will be wasting time/performance on massaging data to get it compatible with the various 3rd party subsystems and api's.

I'd say (and I'm assuming you're using Visual Studio) go with C++ but stick with unmanaged/Win32 C++. This is possible in Visual Studio 8. It used to take some careful editing of some files to get Win32 going, but I believe it is now just included in the full version. In any case if it isn't immediately available, Microsoft provides a guide on its website on how to enable Win32 projects as an option.

I know you mentioned you'd like a more simple approach (e.g. forms), but really if you spend just a little time up front, I think you'll find it far more rewarding when you're in the middle of actual development.
Haha, like I said, ask 10 different people, and get 10 different answers.

Seriously, Shrek2, just ignore most of the posts here and try both.

The short and simple answer is this: C++ and C# are both perfectly valid choices. For that matter, so is vb.net, python, or pascal. It's all about personal preference. Besides, knowing multiple languages is NEVER a bad thing.
Quote:Original post by thrawn42
I'd say (and I'm assuming you're using Visual Studio) go with C++ but stick with unmanaged/Win32 C++. This is possible in Visual Studio 8. It used to take some careful editing of some files to get Win32 going, but I believe it is now just included in the full version. In any case if it isn't immediately available, Microsoft provides a guide on its website on how to enable Win32 projects as an option.


That is the case for Visual C++ 2005 Express, not Visual Studio. All (non-free as in expensive) versions of VS support plain old C++ and ASM out of the box
Quote:BTW, XBox 360 XNA Studio is only available in C# (as far as I know), so if you are planing to developing games for your XBox 360, you have no other choice. ;)

No offense to you, azito, or anyone else, but there is a lot of uninformed "advice" in this thread, though I think Promit and jpetrie addressed most of it.

You can develop for XNA in any .NET language that you like... XNA is a .NET library like any other. The entire purpose of .NET is to allow different languages to work together by compiling to a language-agnostic Common Intermediate Language. Some parts of the build/deploy process--especially for XB360--will require VC# Express, but you can code and link against the XNA assemblies in any language you like.

Quote:I know you mentioned you'd like a more simple approach (e.g. forms), but really if you spend just a little time up front, I think you'll find it far more rewarding when you're in the middle of actual development.


I think you're the first person I've ever heard singing the praises of Win32 over Forms. Forms offers MUCH faster development time in almost all cases, and--contrary to your point--.NET in general reduces the number of architecturally inconsistent libraries and APIs, because they are all built into a standard framework.

I suppose some will favor win32, just for "old time's sake", but Win32 is the past and WinForms is the future. If managed isn't an obstacle, there shouldn't be any thought given to learning win32 over Forms in my opinion.

This topic is closed to new replies.

Advertisement