C ++慢,python快? (就开发时间而言)

时间:2009-06-10 18:33:13

标签: c++ python

我正在考虑尝试制作一些简单的2D游戏,但我还没有选择一种语言。很多人推荐使用带有SDL的C ++或带有pygame的python。我一直听说C ++的开发速度相当慢,而Python的开发时间相当快。

无论如何,有人可以详细说明吗?究竟是什么让C ++开发变得如此耗时?我制作的节目一直是Project Euler风格,因为它们很短,基于数学,所以我没有大型项目的经验。

13 个答案:

答案 0 :(得分:23)

C ++和Python之间有两件相关的事情会影响你开发包括游戏在内的任何项目的时间。有语言本身和图书馆。我在某种程度上玩过SDL,并且看了PyGame,对于你的具体实例,我认为这些库并不是一个很重要的因素。所以我会专注于语言本身。

Python是一种动态类型的垃圾收集语言。 C ++是一种静态类型的非垃圾收集语言。这意味着在C ++中,您的大量开发时间将用于管理内存和处理类型结构。这为你提供了很大的力量,但问题是你真的需要吗?

如果你正在寻找一个带有一些基本图形和一些好游戏的简单游戏,那么我认为你真的不需要C ++会给你的所有力量。如果您正在寻找可以推动信封的东西,成为下一个A-list游戏,成为下一个MMO,适合控制台或手持设备,那么您可能需要C ++提供的功能。

答案 1 :(得分:15)

Python的强大之处在于它能够让您更专注于问题而不是处理测试内存分配等低级问题。我无法计算在C或C ++中追踪内存泄漏浪费了多少天的开发。所有高级语言的优势。

与C ++相比,Python非常容易学习,因此您可以更快地完成基本编程任务。因此,您也可以更快地进入高级任务。

与Python相比,C ++有很强大的功能,但有许多方法可以让自己陷入困境(不是说在Python中无法做到)。

编译/调试周期有时会在C ++中变老,具体取决于您要执行的操作。虽然从技术上讲,每次运行Python脚本时,它本身都会被“编译”,但它只是一个更快的循环。一个好的IDE可以通过在输入时自动检查代码中的语法错误来帮助缓解这种情况。

如果你想要在一个更大的项目中测试一些代码,有时候将它隔离进行测试是一件麻烦事。虽然像IPython这样的优秀Python解释器可以轻松测试一小段代码并查看语言的行为并将其粘贴到文件中。

Python还通过多种方式与现有的C / C ++代码很好地连接。这样,如果你创建的新的巨型Python模块真的很慢,那么你可以用C / C ++来解决它,然后通过ctypesBoost::PythonSWIG将它包装起来。

最重要的是,Python附带了一个很棒的标准库,其中包含很多东西。这只是完全放置碎片的问题!它背后有一个很棒的社区,所以如果它不在标准库中,那么很有可能有人解决了这个问题(PyGameNumpySciPy,{{3 }},Pyserial等)。您可以直接谷歌,抓住它并将代码直接放入您的程序中......远离你!

答案 2 :(得分:10)

我之前听说过有关C ++的这些抱怨,但事实是,使用您不熟悉的任何语言进行编程都非常耗时。

一个优秀的C ++程序员可能比一个好的Python程序员更快地创建应用程序,反之亦然。

我认为C ++经常会声名狼借,因为它可以让你获得更低的级别 - 指针,内存管理等,如果你不习惯这样的事情,可能需要一些时间。如果您习惯在该环境中工作,那么它可能成为第二天性。

除非您的公司,团队,客户等对您强加语言选择,否则我通常会建议人们使用他们最熟悉的语言或最有兴趣了解的语言。如果速度是您关心的问题,请查看每种语言的学习曲线和您过去的经验。 C ++往往具有更高的学习曲线,但这也取决于人。

我认识的非答案。

答案 3 :(得分:2)

Python比C ++等编程语言有一些很大的优势。我自己编写了很多C ++,C和其他编程语言。最近我也用Python编程,我非常喜欢它!

您可以快速开始使用Python。由于它相当简单易学(至少有一些编程经验和足够的抽象思维),你可以获得快速的成功。此外,类似脚本的行为使得启动变得简单,并且还可以快速测试集成shell中的某些内容。这也可以用于调试。

整个语言都包含强大的功能,并且拥有一套优秀且相当完整的库。

有人认为,对于“正确的库”,您可以使用C ++和Python一样快速地开发。这可能(部分)是,但我自己从未经历过,因为这样的图书馆很少见。我手边还有一个大型库,但在C ++中仍然缺少许多有价值的功能。在我看来,所谓的“标准模板库”STL让事情变得更糟。它是一个非常强大的库。但它也很复杂,它为C ++增加了额外编程语言的复杂性。我真的不喜欢它,在我工作的公司里,很多工作时间都丢失了,因为编译器在STL出错时无法提供有用的错误输出。

Python不同。而不是将“程序的速度”放在宝座上 - 牺牲所有其他东西(如C ++,尤其是STL) - 它将“发展速度”放在第一位。该语言为您提供了强大的工具包,并附带了一个庞大的库。当你需要速度时,你也可以用C或C ++实现时间关键的东西,并用Python调用它。

至少还有一个用Python实现的大型在线游戏。

答案 4 :(得分:2)

在几乎所有高级语言中编写相同代码所需的时间大致相同。胜利是在某些语言中使用其他人的代码更容易。在许多Python / Ruby / Perl应用程序中,您编写10%的代码并导入库以执行其他90%的代码。这在C / C ++中更难,因为库具有不同的接口和其他不兼容性。

C ++ vs Python是一个非常个人的选择。我个人觉得我没有更多的时间没有C / Java类系统(更多的运行时错误/调试时间,没有任何接近良好的自动完成,需要做更多的文档和优化)比我获得(没有编写接口/存根函数,并且能够更少担心内存管理)。其他人则完全相反。

最终可能取决于游戏的类型。如果您的处理器密集型转到C ++(如果有意义,可能使用脚本语言)。否则,请使用您喜欢的任何语言

答案 5 :(得分:1)

这很耗时,因为在C ++中你必须处理更多低级别的任务。 在Python中,您可以自由地专注于实际游戏的开发,而不是处理内存管理等。

答案 6 :(得分:1)

有很多东西可以使c ++开发得更长。它的低层次,有指针,不同系统的不同库,类型系统,还有其他我确定我不知道。

答案 7 :(得分:1)

简答

是的,python在开发时间方面更快。现实生活中有许多案例研究表明了这一点。但是,您不希望在Python中使用3D图形引擎。

答案 8 :(得分:0)

我更专注于选择构建游戏的框架而不是选择语言。除非目标是了解游戏内外的运作方式,否则您将需要使用框架。尝试一对,并选择一个符合您要求的人,并对您感觉很好。

一旦你选择了框架,语言选择变得容易 - 使用编写框架的语言。

C ++中的游戏框架有很多选择 - pygame适用于python。有许多可以与其他语言/工具一起使用(包括.NET,Lua等)

答案 9 :(得分:0)

你有任何编程经验吗?如果没有,我会从Python开始,这更容易学习,即使它不是一个更好的游戏开发工具。如果你决定要为生活编程游戏,你可能需要在某个时候切换到C ++。

答案 10 :(得分:0)

请注意,SDL目前很慢,因为它基本上不使用硬件加速。 SFML是另一种选择,也可以在Python中使用。

答案 11 :(得分:0)

为什么要限制自己这两种选择?使用C#或Java,您可以访问大量有用的库以及垃圾收集和(在C#的情况下)JIT编译。

此外,你说你正在寻求进行游戏开发,但从你的任务描述来看,听起来你也在考虑编写你自己的引擎。这是演习的一部分吗?否则你一定要看看那里有可用的独立引擎 - 很多便宜的免费和开源。

毋庸置疑,使用现有引擎工作肯定比从头开始更快:)

答案 12 :(得分:0)

有些人认为,与Python相比,C ++的开发时间较慢。

在python中开发应用程序(或游戏)时节省的时间是不是你开发后用于提高性能的时间?当你剩下最少的选择时,在后面的部分?

这在很大程度上取决于您开发应用程序的目的。

如果你正在考虑一个企业应用程序,在这种情况下它将受到数百万(web-app)或一个专注于低占用空间,更快加载到内存,更快执行的应用程序的攻击,那么你的选择就是C ++ 。

如果您将应用程序预测为不在此级别使用,那么Python肯定是您的选择。

可维护性相当可观,但有纪律的代码可以克服这一点。

很大程度上取决于长期预测。关于应用程序的严肃性和重要性。