使用本机C ++ Qt而不是PyQt有什么好处

时间:2012-04-12 21:53:11

标签: c++ python qt qt4 pyqt

我想在Qt中开发,我已经了解Python。我正在学习C ++,那么在C ++中编写Qt而不是Python有什么好处? C ++似乎更复杂,似乎没有太大的收获。

4 个答案:

答案 0 :(得分:17)

  

使用原生C ++ Qt而不是PyQt

有什么好处

速度/功率/控制。

PyQt应用程序仍然需要python。 C ++ / Qt应用程序编译为本机exe。通过使用C ++,您将可以访问python中无法使用的第三方库,而且您将消灭“中间人” - 位于您的程序和qt dll之间的层,并且可能会获得更好的性能。例如,我不会在python中编写归档程序或mp3解压缩程序,尽管它当然可以完成。

然而,这需要付出代价--c ++没有垃圾收集器,复杂得多,开发速度“慢”(编译时间),需要数年才能掌握,只有当你的瓶颈在于时才能获得更好的性能在解释器内(即脚本语言开销)。即C ++以更大的责任和更长的开发时间为代价提供更多的功能。如果您不需要,那么您就没有理由坚持使用C ++。

语言选择取决于您的申请/情况和个人喜好。如果您需要申请SOON或制作模型,那么使用您熟悉的语言是合理的。如果您遇到严重的性能问题,那么聘请熟练的C ++程序员来完成这项工作是合理的 - 制作本机应用程序,对其进行分析,优化等。

请注意语言是一种工具。如果你只是因为喜欢这门语言而想用你的语言,你就不能有效地工作。

- 编辑 -

就个人而言,我不会将python用于我期望长期维护的更大的应用程序。然而,这是因为语言并不完全符合我的心态(依赖于墨菲定律)和(因此)我对此并不满意。不同思考的人可能会更熟悉Python,甚至可能认为C ++限制性太强。

另一件事是从我编写Blender插件和各种python脚本的经验来看,出现了一些严重的性能开销,因为语言是脚本化的,并且可以在C ++中免费执行非常繁重的列表/映射/数组操作在python中可能需要5x..10倍的时间。有些人可能会坚持认为这可以修复,但是,这种“修复”的成本可能会克服使用脚本语言带来的好处。不管我的偏好如何,我仍然使用Python来制作需要运行多个实用程序的实用程序脚本,拆分/拼接/解析它们的文本输出并用它做一些事情(C ++在这种情况下不是很好),我仍然

在一个必须可扩展的程序中提供Python绑定(假设Lua不好)

最终归结为选择最合适的工具 - 如果C ++与Python相比不会给你任何好处,那么就没有理由转换。

答案 1 :(得分:6)

如果您计划分发应用程序,那么提供自包含的已编译可执行文件要比依赖最终用户首先安装Python和PyQt容易得多。但这可能是也可能不是你的考虑因素。

答案 2 :(得分:3)

C ++优化了机器速度。

Python优化程序员速度。

C ++相对冗长:每个想法表达的单词更多。 Bugs / Lines_of_code大致是一个常数,因此简洁至关重要。

C ++的内存管理有时是手动的,这可能意味着奇怪的运行时问题http://stromberg.dnsalias.org/~strombrg/checking-early.html,包括段错误和内存泄漏。 Python将这一点从程序员手中夺走并自动化。

GUI很少关心其实现语言的速度 - 主要问题是最终用户可以输入和点击的速度。

答案 3 :(得分:0)

简而言之,我相信除非你有强大的性能要求,否则你应该坚持使用Python。另外,正如Greg所说,使用Python比使用C ++更容易使用程序。

我喜欢C ++,但是现在,对于大多数项目来说,如果不是Java,我大多转向Python。但是,如果我正在编写游戏或图形应用程序,我可能会考虑使用C ++。