Julia, Python and Cython - julia-dev | Google Groups
Cythonの開発者が、JuliaのMLに登場して議論している。
Cythonとは、PythonコードからCやC++への変換をするソフトウェアである。このため、独自の拡張により、PythonからCやC++のコードを簡単に呼び出せるようにもなっている。
なぜCythonを使うのかというと、速度である。Pythonのリファレンス実装、CPythonはバイトコンパイルによるインタプリターであり、JITはない。そのため、科学技術計算のためには、非常に遅い。Cythonは、科学技術計算をする研究者に人気がある。
The Julia Languageは、高速に動作することを目的とした動的プログラミング言語である。LLVMによるJITコンパイルにより、高速に動作する。また、数値演算ライブラリとして、BLASの代わりに、Intelのプロプライエタリなライブラリを用いることもできる。これにより、GCCと比べても、最低で数倍程度しか遅くならない、非常に高速な動的プログラミング言語を実現している。
さて、Cythonの開発者は、まず、Juliaが非常に高速で、科学技術計算の用途に耐えることを褒めたたえている。その上で、Juliaの現在の問題点を上げている。ユーザーとライブラリの欠如である。
Pythonで科学技術計算をすると言っても、すべてをPythonで行うわけではない。特にクリティカルな処理は、CやC++を使って書き、Pythonから呼び出す形を取る。また、Pythonにはすでに、豊富なライブラリがある。また、Python上級者のユーザーも多数いる。現時点でのJuliaには欠けている点である。
これを解決するために、JuliaとPythonを相互に呼び出せるようにしてはどうかと提案している。
なかなか興味深い話だ。動的な言語は、プロトタイプ的な実装が非常に簡単だという利点がある。科学技術計算というのは門外漢で全く分からないが、結局、すべてがクリティカルな処理ではなく、言語による分業があってもいいのだろう。
思うに、ハードウェアだけではなく、プログラミング言語も、どんどんHeterogeneousになっていくに違いない。すべての要求を満たす言語の設計は不可能だ。現在でも、並列演算に特化したGPUなどのハードウェア用には専用言語があるものだ。
吐き出すコンパイル済みバイナリがLLVMに吸収されて、JIT化されていくんでしょうかね。
ReplyDeleteLLVMの元締めがアップルというのが気に入らないですが。
金がどこから出ているかということは問題ではないのです。
ReplyDeleteオープンソースの理念に合致するライセンスで公開されてる以上、たとえ将来Appleの気が変わったとしても、すでに公開されているソフトウェアを止めることはできません。
自由なライセンスであることが望ましいのは当然ですが、LLVMの許諾的なライセンスは、十分にオープンだとは思います。