動的かつ高速!科学技術計算のための新言語Juliaについて、ちょっと触れておきたい
去年の2018年8月にバージョン1.0が公開された科学技術計算向けの新言語Julia、さまざまなプログラミング言語の良いとこ取りをしたといわれるJulia、もしかしら今後、触れることが多くなるかもしれないので、概要部分をメモとして、残したいと思います。
ちなみにQiitaでもJuliaの記事があったので、URLを張っておきます。
Juliaとは何か
2012年2月にバージョン0.1がWeb上で公開された比較的新しいプログラミング言語です。MIT発のこの言語は、動的言語でありながら極めて高速に動作し、科学技術計算の分野で高い関心を集めているとのこと。Juliaという1つの言語に、Rubyの動的実行、Pythonの汎用性、MATLABの数式処理、Perlの文字列処理、Rの統計処理、Cの実行速度、Lispのメタプログラミングといった既存の言語の良いところを詰め込んだ感じの言語です。
Juliaの特徴
型と関数を中心にした言語設計
Juliaに存在するすべてのオブジェクトはデータ型を1つ持ちます。オブジェクトが存在する間にその方は変わりません。なお、Juliaでは整数や真偽値のようなプリミティブな値もオブジェクトと呼びます。
実行時コンパイルによる高速化
Juliaはプログラムの起動後にコンパイルを行い、プログラムの実行を高速化できます。これをJITコンパイルと言います。JITコンパイルにより処理を高速化する処理系はJavaScriptのV8、RubyのCRuby、PythonのPyPyなど、ほかのプログラミング言語の処理系にも見られますが、Juliaでは当初からJITコンパイルを念頭に設計させているので特に強力です。
科学技術計算での利便性
Juliaはその初期の段階から、科学技術計算での利便性を意識して設計されてきました。結果として、ほかの言語ではあまり見られない機能を標準で提供しています。
メタプログラミング
Juliaはメタプログラミングのための機能も豊富です。メタプログラミングは、プログラムを使ってコードを書き換えるためのしくみです。メタプログラミングを使うことで、コードの記述を簡潔にしたり、複雑なコードの生成が可能になります。
ここまでざっくりと紹介してきましたが、動的で高速、しかもメタプログラミングでコストも抑えられる点はフロントエンド開発において、複雑な処理が必要な場合、選択肢の1つに入ってくるのかなというが印象です。機会があれば、サンプルプログラムを紹介出来れば思います。