ジュリアに夢中
ツリのようなタイトルで申し訳ありません。ジュリアは女性の名前ではなく、Juliaというプログラミング言語のことです。Juliaは最近知名度が上昇しつつある比較的新しいプログラミング言語です。Juliaの開発はMITが中心となっているようです。
現在のプログラム開発には、CやC++などのコンパイラや、Pythonなどのインタープリタが使われます。コンパイラは実行速度は速いのですが、いちいちコンパイルした後でないとプログラムの実行ができません。その点、インタープリタのPythonは逐次実行が可能ですが、計算速度が遅いという問題もあります。そこで現れたのが、Juliaです。JuliaはPythonのような扱いやすさと、CやFortranなどのような高速計算を両立させようとした野心的なプログラミング言語です。
この、良いトコ取りみたいなJuliaを支えているのが、JITコンパイラと言われる技術です。JITは Just In Time の略で、命令(プログラムコード)を打ち込むごとに、効率の良い機械語に翻訳されて行きます。簡単な例ですが、x=2*3 のようなコードは、JITコンパイラで翻訳され、コンピュータの内部では、”x=6”と解釈されます。”2*3”の部分はコンパイル時に処理されるので、あとで計算しなくて良いのです。
また、Juliaには『多重ディスパッチ』という他の言語には無い特徴があります。これは、違う内容の計算を同じ名前で何種類も登録できる機能です。これが何の役に立つかをここで説明するのは難しいのですが、プログラムの多態性や簡潔性に役立ちます。
Juliaの特徴を表現することはできませんが、サンプルプログラムに素因数分解するプログラムを載せます。これは、整数を入力すると小さい順に素因数を出力するプログラムです。アルゴリズムは単純で、素因数が見つかるまでひたすら除算を続けます。Juliaのプログラムは、関数化するのが高速化の基本です。試しに”1234567898654321”という大きな整数の素因数分解をしてみたら、あっという間に終わって素因数が見つかりました。
Julia> function PrimeFactorization(n)
while n > 1
for i=2:n
if (n % i) == 0
println(i)
n=div(n,i)
break
end
end
end
end
Julia> PrimeFactorization(160401)
3
127
421
Julia> PrimeFactorization(12345678987654321)
3
3
3
3
37
37
333667
333667
Julia>
Juliaの使い方は、本やWEBサイトなどを参考にして下さい。今日は休日だというのに、Julia言語の勉強をしました。いま、Juliaに夢中です。