MOP是小型Matlab和八度到Python编译器。
SMOP将matlab转换为python。 尽管matlab和数字python之间有明显的相似之处,但是在现实生活中有足够的差异使手工翻译不可行。 SMOP生成人类可读的蟒蛇,这似乎也比八度更快。 只是有多快? 表1显示了“移动家具”的计时结果。似乎对于这个程序,python翻译导致了大约两倍的加速,并且通过将SMOP运行时库runtime.py编译为C实现了另外两倍的加速, 使用cython。 这个伪基准测量的是标量性能,我的解释是标量计算对八度小组的兴趣不大。
功能说明
少于五千行的Python代码
SMOP不会假装与matlab或八度等抛光产品竞争。然而,这不是一个玩具。有一个尽可能接近原始matlab语义的尝试。 Matlab语言定义(从未发布afaik)充满了黑暗的角落,SMOP试图尽可能精确地遵循matlab。
也有一个价格。
生成的源代码是matlabic的,而不是pythonic,这意味着图书馆维护人员必须流利地使用这两种语言,并且老的开发环境必须被保留。
生成的程序是pythonic还是matlabic?
例如应该数组索引从零开始(pythonic)还是一个(matlabic)?
现在我相信,在生成的Python源代码中,一些matlab的重音是不可避免的。想象一下matlab程序使用正则表达式,matlab风格。我们不打算把它们翻译成python风格,并且这个代码将永远留下来提醒程序的matlab起源。
另一个例子。 Matlab代码打开一个文件; fopen错误返回-1。 Pythonic代码会引发异常,但我们不打算这样做。相反,我们将与口音生活在一起,而smop把这个放到了极点 - matlab程序大部分保持不变。
事实证明,生成matlabic允许将大部分项目复杂性从编译器(已经足够复杂)转移到运行时库中,在运行时库中几乎不存在库部件之间的交互。
官方网站:https://pypi.python.org/pypi/smop/0.26.2
相关搜索:编译