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

17 c++ python

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

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

Lee*_*Lee 24

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

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

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


Jay*_*son 15

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

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

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

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

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

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

最重要的是,Python附带了一个很棒的标准库,其中有很多东西可供您使用.这只是完全放置碎片的问题!它背后一个伟大的社会,因此,如果它不是在标准库中,有一个很好的机会,有人在那里已经解决了这个问题(pygame的,与NumPy,SciPy的,Pyserial,PyWin等)为您服务.你可以只是google它,抓住它并将代码直接放到你的程序中......远离你!

  • 请记住,现代C++中的内存管理通常是使用智能指针的问题. (6认同)

Jam*_*aro 11

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

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

我认为C++通常会得到一个糟糕的代表,因为它允许你获得更低的级别 - 指针,内存管理等,如果你不习惯于考虑这些事情,它可能需要一些时间.如果您习惯在该环境中工作,它可能成为第二天性.

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

我知道,这是一个非答案.

  • 除了缺乏内存管理之外,C#或Java和许多脚本语言的最大生产力增益是标准类库.语言本身并没有那么不同,标准库的功能虽然是白天和黑夜.对于以前的C++程序员,我敢打赌,在C#中工作时,我在大多数应用程序中的平均生产率要高2-3倍.当然,YMMV.此外,在大多数情况下,当您进行苹果与苹果的比较(优秀的C++程序员和优秀的Python程序员)时,Python开发人员将在完成速度方面打败C++程序员. (4认同)
  • @Serapth:我不相信这些论点,虽然我听了很多,我在一家C++公司工作,我们有很多(非标准)库来加速生产.如果你想苹果进行苹果比较,那么将Python开发人员与C++开发人员与一组不错的库进行比较.我希望更快的将是其库最接近问题的那个.我们的图书馆非常适合我们的地区所以MMDV(我的里程确实有所不同). (4认同)

Sil*_*rom 2

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