Originally posted by a2jfreak
Narrow-mindedness in programming is something that limits one's ability. By stating that C# is definitely better, then you are painting yourself into a corner in situations where C# is not advantageous.
I'm not saying don't use C#.
I think C# has a lot of good points to it and in time might actually be the "definitely" better language. Only time will show, but at this juncture C# is not the best language for most situations, simply because of it's immaturity and lack of native libraries.
As for your statement about IDEs.
I think Microsoft, as horrible a company as they are, makes the best IDE that I've tried and since C# shares the same IDE in Visual Studio .Net, I don't see where the IDE would hold C# back, except for the native-library area, but I guess if you're using .Net you don't truly worry about anything being "native."
Headers allow even more abstraction, but they do not have to be used. You can put the entire class definition inside of a .cpp file and nothing is stopping you. If you did not know this then perhaps you are not educated enough in C++ to issue an informed opinion.
If you're not talking about the usual .h/.cpp separation, then please clarify your stance.
Let me clarify even more what I mean. C++ is a better language because it has those native libraries you are talking about, and because it is widely used, and because it is compiled to native code, not to talk about there being C++ compilers for any platform you want.
C# Lacks theese kinds of things, but that is something that I consider has to do with other things that the actual language. What I mean when talking about the language is the actual syntax and nothing more, not the class library or anything like that.
I agree with you that Microsoft makes the best IDE:s, although I haven't tried some of the highly praised IDE:s on Mac and Linux (I am not talking Emacs here, more the likes of KDevelop). The reason for using IDE in my previous post was just to give examples of things that I didn't consider language related.
Code:
class myClass
{
private:
int myInt;
public:
myClass(int anInt);
void myMethod();
};
myClass::myClass(int anInt)
{
myInt=anInt;
}
myClass::myMethod()
{
.....
}
Code:
class myClass
{
int myInt;
public myClass(int anInt)
{
myInt=anInt;
}
public void myMethod()
{
.......
}
}
This is what I am talking about when talking about .h files (and the problem is almost as bad if you have the .h and .cpp in the same file), the first is C++ and the second the exactly same thing in C#. I think the C# one is alot more readable.
Lastly the problem that C# does not have native libraries. That is not a problem, since the loss of speed is not that great. And if you think it is too much, you can compile C# code to native code (pre jitting it with NGen, it speeds up the code a bit (you still need the framework though, as it will still run in managed mode).