Cython / Jython是一门独立语言吗?

时间:2016-06-05 14:44:55

标签: java python c jython cython

所以我花了很多时间试图弄清CythonJython是什么,而且我仍然(更多)对刚刚开始计算机编程的人感到困惑。我听说Cython是一个扩展,但是.. 也是和独立的语言?

认为我理解的是:

  1. Cython / Jython仅为Python,您可以分别使用CC++ / Java个库一点点Cython / Jython语法。

  2. 这意味着当在CC++ / Java中更有效地编写任务时,可以提高性能并提高代码可读性,并且已完成使用静态类型变量。

  3. Cython / Jython只是某种使用有时但不是独立使用的扩展名?我的意思是,您仍然会在Python中写下所有内容,然后,对于您宁愿使用CC++ / Java的任务,您需要请改用Cython / Jython? (我知道我仍然需要安装Python和类似的东西,因为它依赖。)

    因为如果它确实更好,除了它仍在开发的障碍,因为它相当新,不需要CC++ / Java 完全离开,因为它们就像Python一样简单,但与CC++ / Java一样强大?

4 个答案:

答案 0 :(得分:7)

Jython FAQ:

  

Jython是Java平台的Python语言的实现。 Jython 2.7 实现与CPython 2.7相同的语言,以及几乎所有的Core Python标准库模块。 (CPython是Python语言的C实现。)

编写Jython类似于编写标准Python。主要区别在于,由于它可以编译为Java字节码,因此您可以顺利地与Java库进行交互。当然它对JVM有要求,但没有全局解释器锁(Famous GIL)。

Cython

  

Cython是Python编程语言和扩展的Cython编程语言(基于Pyrex)的优化静态编译器

因此,Cython首先被认为是编译器。它将您的Python代码编译为C,然后编译(使用标准C编译器)并运行。

为了进一步促进与C/C++的集成,它还具有扩展语法,用于指定类型,定义不同类型的函数以及与C/C++代码的接口。这些,一方面允许Cython生成更高效的代码,绕过Python VM通常做的缓慢解释,另一方面,使Python的写入扩展在公园散步,因为您不需要熟悉Python C-API

所以,回答你的问题:

  

Cython / Jython只是Python,你可以分别使用C或C ++ / Java库,只需要一点Cython / Jython语法。

差不多,是的。 Jython Python,并使用Java Libraries基本import语句。 Cython与Python非常相似,如你所说,使用一些语法与C/C++接口。

  

这意味着当使用C或C ++ / Java编写任务更高效时,可以提高性能并提高代码可读性;这是通过使用静态类型变量来完成的。

对于Cython,这是目标,对于Jython则不是。这就是为什么Cython提供扩展语法来指定类型而Jython没有。

的原因

两种语言都是独立使用(就你的意思而言)但是,Cython通常在分析CPU绑定的Python代码并确定瓶颈之后进行部署。

答案 1 :(得分:2)

确定。 Jython是Python的一个实现,它将python源代码转换为java字节码或目标代码,就像大多数人所说的那样。所以你基本上使用python语法编写程序,但编译成目标代码时源代码的输出是java字节码

另一方面,Cython是一种实现,其中python语言中的标准模块已被翻译成C语言。所以在这里,当你基本上使用一个模块时,它是python标准模块,但为了提高效率,它的C语言或执行的代码

答案 2 :(得分:1)

CPython与Jython相当。他们是Python语言的实现。 CPython是事实上的标准,用C语言编写.Jython是用Java编写的,在JVM上运行。它还允许在很大程度上访问Java生态系统。还有其他语言实现,如PyPy或Pyston。

Cython完全不同。它允许我们在C语言或Pyrex中编写Python的扩展,这是Python语言的一个子集。 Cython加快了用它编写的部件的执行速度。

答案 3 :(得分:0)

Jython是Java虚拟机上的Python语言实现,因此Jython是Python但不是CPython。 Cython是CPython的扩展,除了Syntax中的一些相似之外,与Python没有多少共同之处。