我想用 Qt 开发,我已经知道 Python。我正在学习 C++,那么用 C++ 编写 Qt 相对于 Python 有什么优势?C++ 似乎更复杂,而且似乎没有太大的收获。
4 回答
使用原生 C++ Qt 比 PyQt 有什么优势
速度/功率/控制。
PyQt 应用程序仍然需要 python。C++/Qt 应用程序编译为本机 exe。通过使用 C++,您将可以访问在 python 中不可用的 3rd 方库,此外,您将消除“中间人”——位于程序和 qt dll 之间的层,并且可能获得更好的性能。例如,我不会在 python 中编写存档器或 mp3 解压缩器,尽管它当然可以完成。
然而,这是有代价的——c++没有垃圾收集器,更复杂,开发“更慢”(编译时间),需要数年才能掌握,只有当你的瓶颈在解释器内时,你才能获得更好的性能(即脚本语言开销)。即 C++ 以更大的责任和更长的开发时间为代价提供更多的功能。如果您不需要它,那么您没有理由坚持使用 C++。
语言的选择取决于您的应用程序/情况和您的个人喜好。如果您需要尽快制作应用程序或制作模型,那么使用您熟悉的语言是合理的。如果您有严重的性能问题,那么聘请熟练的 C++ 程序员来完成这项工作是合理的——制作原生应用程序、对其进行分析、优化等。
请注意,语言是一种工具。如果你只是因为喜欢这种语言而想在所有事情上都使用你的语言,那么你的工作效率就很低。
- 编辑 -
就个人而言,我不会将 python 用于需要长时间维护的大型应用程序。然而,这是因为该语言与我的思维方式(依赖墨菲定律)并不完全兼容,并且(因此)我对此并不满意。有不同想法的人可能会更适应 Python,甚至可能认为 C++ 过于严格。
另一件事是,从我编写 Blender 插件和各种 python 脚本的经验来看,由于语言是脚本化的,因此出现了一些严重的性能开销,并且可以在 C++ 中免费执行 FAST 的非常繁重的列表/映射/数组操作可能需要 5 倍..10 倍的时间在 python 中。有些人可能坚持认为这是可以修复的,但是,这种“修复”的成本可能会超过使用脚本语言所带来的好处。不管我的偏好如何,我仍然使用 Python 来制作需要运行多个实用程序、拆分/拼接/解析它们的文本输出并对其进行处理的实用程序脚本(C++ 在这种情况下不是很好),我仍然会在必须可扩展的程序中提供 Python 绑定(假设 Lua 不好)。
最后归结为选择最合适的工具 - 如果与 Python 相比 C++ 不会给您带来任何好处,那么就没有理由切换。
如果您计划分发您的应用程序,与依赖最终用户首先安装 Python 和 PyQt 相比,交付一个独立的编译可执行文件要容易得多。但这可能是您的考虑因素,也可能不是。
C++ 优化机器速度。
Python 优化了程序员的速度。
C++ 相对冗长:每个想法表达的词更多。Bugs / Lines_of_code 大致是一个常数,所以简洁很重要。
C++ 的内存管理有时是手动的,这可能意味着奇怪的运行时问题http://stromberg.dnsalias.org/~strombrg/checking-early.html,包括段错误和内存泄漏。Python 将其从程序员手中夺走并自动化。
GUI 很少关心其实现语言的速度——主要问题是最终用户可以多快键入和单击。
总之,我认为除非你有很强的性能要求,否则你应该坚持使用 Python。此外,正如 Greg 所提到的,您的程序使用 Python 将比使用 C++ 更便携。
我喜欢 C++,但是现在,对于大多数项目,如果不是 Java,我大多会转向 Python。但是,如果我正在编写游戏或图形应用程序,我可能会考虑 C++。