C(P)ython或D中的多平台gui应用程序

2024-09-29 23:22:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我真的很喜欢D(2)语言,并希望将其用于多平台GUI应用程序,但我发现它的生态系统并不是很发达。从Linux迁移到(免费)PC-BSD之后,我发现端口中甚至没有64位编译器准备就绪,人们不确定任何GUI库(QtD、gtkD、wxD)是否准备好进行严肃的项目,我们希望尽快开始该项目。在

Otoh,我之前被建议尝试使用Python,它是成熟的,有很多工具,GUI库等等。但是有一个关于速度的问题-我们必须使用一个C库来计算星历表,并编写几个库来使用这个C-lib。在

然而,对于Cython来说,这可能是一个好的(完美的)工作,所以我的问题是,您认为用Python(Qt,EFL)编写GUI部分,并使用Cython来处理性能关键的东西(绑定外部C库并编写我们自己的库),而不是(等待)D为严肃的项目做好准备?在


Tags: 项目端口语言应用程序编译器linuxbsdgui
3条回答

用动态语言编写GUI,用另一种语言编写性能敏感的代码是编写应用程序的好方法。这可以用Python实现,也可以用Tcl/Tk和其他几种脚本语言非常容易地实现。在

这对我来说是个有趣的问题,因为D是我最喜欢的编程语言,Python是我第二喜欢的编程语言。现在,尽管我很喜欢D,但我不得不承认生态系统有些不成熟。在

GtkD已经为相当严肃的项目做好了准备,但是还没有完全达到其他语言的GUI工具包的标准,尤其是在文档方面。我用它做了一个绘图库,它工作得很好,但是有一些小问题。DWT最近刚刚增加了对D2的支持。AFAIK WxD只是一个绑定,而不是一个D-ified包装。QtD仍然有一些其他问题,比如某些特性需要补丁编译器。一般来说,你现在可以在D2中做一个GUI项目,但这并不是一帆风顺的。在

虽然Cython是缓解纯Python缓慢性的一个很好的尝试,但它有几个显著的缺点,使我在需要性能或执行低级工作的能力时更喜欢D:

  • 如果您希望从中获得类似C的性能,那么它需要显式的类型声明。如果您试图编写泛型代码,您将付出显著的性能损失。使用D,您可以通过使用模板非常容易地编写高效的泛型代码。

  • Cython没有/没有正确实现让Python有趣的一些很酷的特性。例如,它最近才得到闭包的支持。我不知道这种情况的改善有多快,也不知道还有什么局限性。

  • 如果涉及线程,您仍然拥有Python的全局解释器锁。

  • 必须同时使用Cython和常规CPython解释器,并将Cython代码与常规Python代码分别保存在不同的模块中,这让人有点不知所措。在语言之间的接口上通常会有摩擦,特别是当你关心效率的时候。例如,Numpy类型don't "just work" efficiently in Cython.

作为一个Cython核心开发人员,我显然有偏见,但我当然可以推荐它。CPython和Cython的结合在开发速度、平台稳定性、可移植性、低级别编码和FFI功能以及执行性能方面提供了一个很难达到的水平,包括一个非常容易的优化路径,从快速、简单到C速度的高度调整代码。在

我还可以热烈推荐Qt作为GUI工具包。它与Python配合得非常好。在

相关问题 更多 >

    热门问题