自作アプリC言語化計画

プログラミング言語を以下の基準で分類してみよう。

  • 高級 or 低級
  • 高速 or 低速


高級言語の代表格はPythonでしょう。高速言語の代表格はC/C++でしょう。逆もその通り(低級=C/C++、低速=Python)。
JavaC#などのVM言語は、その中間と言えるでしょう。


しかし、その他の面、「実績」や「言語対応」(ライブラリなどがその言語で使えたり、64bit対応が早かったりなど)を考えた場合、ダントツで、C/C++が最有力となる。
例えば、Python2.7ではpsycoが対応していなかったり、PyOpenGLのPython3版がなかったりなど。
結論として、C/C++は世界の中心言語」と言えるでしょう。


次に、言語組み合わせを考えてみよう。
基本的に、「低級言語 ←(call) 高級言語」となっている。例えば、CとPythonの場合、CからPythonの関数を呼ぶのではなく、PythonからCの関数を呼ぶのが普通。できない訳ではないが、基本的に一方通行なのである。
また、VM言語は言語を結合するのが簡単な場合が多い。例えば、C#IronPythonJavaJythonの組み合わせは非常に簡単。


私は、Luaの「ANSI-Cで書けば、どの環境でも動く」というコンセプトが好きである。なので、自作アプリのベース部分をC言語にポーティング(移植)することにした。
本当は、高級言語でありながら速度も犠牲にしないというGo言語が食べ頃になるのを待っていたのだが、いつまで経っても、それがやってこない。なので、C言語を選択することにした。
C++を使うという手もあるが、Cを利用しておけば、C++と組み合わせも可能なので、Cで作っておいた方が汎用性が高い。それは、最高の組み込み用言語であるLuaが証明してくれている。