#编程#首先这篇文章没有肯定的答案,就像开放式题目一样,每个人都有着自己的见解。也想着大家能对此有所讨论与交流,毕竟每个语言存在,他就有他所在的意义。在这里我找到了三个伙伴的观点,话不多说我们来看看吧。
首先是喜欢C#的小伙伴:
C#比C++更好,因为它是面向对象的纯语言。C#有一个巨大的标准库,其中包含许多有用的东西,它们易于实施且易于使用。C#具有本级垃圾收集。您可以轻松地在C#中制作GUI。而且,C#还提供了头文件,因此不会出现由#includeorder或#defines引起的奇怪错误。.Net框架中提供了适用于MicrosoftC#的现成类,这使编程更容易。在使用C++时,您必须自己做所有事情。
如果您想开始制作游戏,那么我建议您学习C#。如果您已经了解C++的基础知识,那么选择C#就不会有任何麻烦。使C#成为您的工具具有优势。它是一种易于学习的语言(与C++相比),是一种“托管语言”,这意味着它会自动为您完成内存检查(很多C++初学者,甚至不是初学者,都会遇到麻烦))。它还使您可以访问Microsoft的XNAFramework,它可以为您完成更多繁琐的工作。这样您就可以专注于诸如游戏周期和设计之类的事情,而不必担心(太多)使其工作。没错,所有这些繁琐的工作都有其开销,这意味着您可能不会制作行业级的3D游戏,但您只是在进行游戏编程。
好的,然后是C++爱好者的发言:
对于新程序员来说,C++比C#更具挑战性。C++使您可以很好地控制所做的一切,但是同时,如果您不小心,它也可以为您提供足够的绳索来上吊自己。要真正成为一名有效的C++程序员,您需要一些经验。您总是会听到人们说C++中的手动内存管理是不安全的。虽然这是事实,但过一会儿您就会习惯了。您开始使用智能指针,老实说,这几天我很少遇到无法快速解决的内存分配问题。
C#当然具有垃圾回收功能,这似乎会使您的生活更轻松。对于许多应用程序来说确实如此。但是,我发现GC通常可以掩盖代码的性能问题。有时C#程序员“重用”对象来解决这些问题,但实际上,这是解决您一直困扰于GC的黑客。自从我完成C#以来已经有一段时间了,我认为他们可能已经或者可能很快会在该语言中添加手动内存管理,因此即使尚未解决此问题,也可能会很快解决。但是,仍然有诸如“placementnew”之类的功能支持我几乎总是在C++中使用的自定义堆,这在C#中可能很难复制。
好了,有请最后一位发言者:
他们是完全不同的。
C#更类似于Java,而不是C++。改名“C#”让人想起“C”和“C++”。但是,C#的编程和执行模型与C++的根本不同,设计哲学也是如此(尽管它通常与Java相似)。
C#的设计假设其将在虚拟机上运行。这样做通常会从某种意义上说是“安全的”,因为它将捕获对对象范围进行读取或写入的尝试,将自动收集无法访问的分配等。这种设计选择使得优化C#代码更加困难,这通常是比同类(但惯用的)C++代码慢得多。
C++的设计假设是将其编译为机器代码。它使程序员负责内存安全和资源使用(可能通过库)。在实践中,这使得从C++生成的代码通常非常高效,但是错误可能会带来更加严重的后果。
本期到这里就结束了,欢迎大家发表各自看法。当然在我看来,存在即合理,谢谢大家。