MOP是小型Matlab和八度到Python編譯器。
SMOP將matlab轉(zhuǎn)換為python。 盡管matlab和數(shù)字python之間有明顯的相似之處,但是在現(xiàn)實生活中有足夠的差異使手工翻譯不可行。 SMOP生成人類可讀的蟒蛇,這似乎也比八度更快。 只是有多快? 表1顯示了“移動家具”的計時結(jié)果。似乎對于這個程序,python翻譯導致了大約兩倍的加速,并且通過將SMOP運行時庫runtime.py編譯為C實現(xiàn)了另外兩倍的加速, 使用cython。 這個偽基準測量的是標量性能,我的解釋是標量計算對八度小組的興趣不大。
功能說明
少于五千行的Python代碼
SMOP不會假裝與matlab或八度等拋光產(chǎn)品競爭。然而,這不是一個玩具。有一個盡可能接近原始matlab語義的嘗試。 Matlab語言定義(從未發(fā)布afaik)充滿了黑暗的角落,SMOP試圖盡可能精確地遵循matlab。
也有一個價格。
生成的源代碼是matlabic的,而不是pythonic,這意味著圖書館維護人員必須流利地使用這兩種語言,并且老的開發(fā)環(huán)境必須被保留。
生成的程序是pythonic還是matlabic?
例如應該數(shù)組索引從零開始(pythonic)還是一個(matlabic)?
現(xiàn)在我相信,在生成的Python源代碼中,一些matlab的重音是不可避免的。想象一下matlab程序使用正則表達式,matlab風格。我們不打算把它們翻譯成python風格,并且這個代碼將永遠留下來提醒程序的matlab起源。
另一個例子。 Matlab代碼打開一個文件; fopen錯誤返回-1。 Pythonic代碼會引發(fā)異常,但我們不打算這樣做。相反,我們將與口音生活在一起,而smop把這個放到了極點 - matlab程序大部分保持不變。
事實證明,生成matlabic允許將大部分項目復雜性從編譯器(已經(jīng)足夠復雜)轉(zhuǎn)移到運行時庫中,在運行時庫中幾乎不存在庫部件之間的交互。
官方網(wǎng)站:https://pypi.python.org/pypi/smop/0.26.2
相關搜索:編譯