Open6

Python風の言語からネイティブコードを生成するやつ

だめぽだめぽ

Pythonは速度がウリの言語ではない。しかし需要は高いので、「Python風の文法を持ち、高速なネイティブコードを出力できるコンパイラー・言語」が色々開発されている。

注目したい部分:

  • 型ヒント
    • Pythonは型のない言語だが、型ヒントを書けるようになっている(PEP 484)。Pythonとの互換性を目指している言語の場合は型ヒントを利用することが考えられる。
  • 変数のスコープ
    • Pythonの変数のスコープは基本的には関数スコープのみである(let以前のJavaScriptと同様。例外的に関数スコープ以外の変数を導入できる構文(リスト内包表記)があるのもJavaScriptと同様)。これは不便なので、Pythonと似ているが同一ではない言語を作る際にブロックスコープ等を導入することは十分考えられる。
  • Pythonとの相互運用性
    • Pythonの資産を利用できるか。ネイティブコード化されたコードをPythonから呼び出せるか。
    • numpyを呼び出せるか。
だめぽだめぽ

Cython

PythonのC拡張をPython風の文法で書けるやつ。Pythonのスーパーセットを目指す。

Cを経由してコンパイルする。

歴史が古いせいか、PEP 484ではない独自の型宣言構文を持つ。PEP 484スタイルの型宣言もできる。

Numba

Python、特にNumPy利用コードに対するJITコンパイラー。Pythonのサブセットで記述する必要がある。

Pythonから透過的に呼び出せる。

マルチコア並列化、SIMD、GPUなどに対応する。

だめぽだめぽ

Nim

Python風の文法を持つが、別にPythonとの互換性・相互運用性をウリにしているわけではないはず。「Python風の文法を持ちネイティブコードを出力する」のでこのリストに加えた。

だめぽだめぽ

Codon

Pythonのサブセットをコンパイルする。独自のデコレーターにも対応している。

Mojo

LLVMやSwiftでお馴染み、Chris LattnerがCEOの会社が出してきた言語。

AIアクセラレーター(もちろんCPUも)を有効活用できることを目指すっぽい。

Python流の暗黙の関数スコープ変数の他に、letvar で変数を宣言できる。