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

Orc*_*ris 10 c++ python qt qt4 pyqt

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

Sig*_*erm 18

使用本机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++中免费执行的非常繁重的列表/映射/数组操作可能需要5倍python中.10倍的时间.有些人可能会坚持认为这可以修复,但是,这种"修复"的成本可能会克服使用脚本语言带来的好处.不管我的偏好如何,我仍然使用Python来制作需要运行多个实用程序的实用程序脚本,拆分/拼接/解析它们的文本输出并用它做一些事情(C++在这种情况下不是很好),我仍然在必须可扩展的程序中提供Python绑定(假设Lua不好).

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

  • 很好的答案,虽然我想指出,python可用模块的数量是巨大的,并且C++具有更大自由度的论点是值得商榷的.对于任何性能密集型的C++,其余的可能更适合python恕我直言. (4认同)

Gre*_*ill 6

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

  • 定义相当巨大.在1995年,10MB的开销可能已经"巨大",但今天它是可笑的.今天,从应用程序分发的角度来看,将PyQT(或PySide)应用程序部署为本机应用程序或任何python应用程序同样容易. (10认同)
  • 开销远小于10MB.我相当复杂的PyQt应用程序被捆绑到一个大约11MB的独立exe中.其中大部分来自Qt运行时库.即使使用C++/Qt,您仍然需要以某种方式部署这些运行时. (2认同)

use*_*476 5

C++ 优化机器速度。

Python 优化程序员的速度。

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

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

GUI 很少关心其实现语言的速度 - 主要问题是最终用户键入和单击的速度有多快。

  • Qt 会为您处理(如果使用正确的话)内存管理,所以我不认为这是一个强有力的论据。Python 的鸭子类型也会导致 C++ 编译器发现的奇怪的运行时错误。因此有人认为,Python 在运行时错误方面比 C++ 更糟糕。我认为这个回答缺乏客观性。 (2认同)