この記事を読むのに必要な時間:およそ 1 分
世の中には既に様々なプログラミング言語が存在します。
プログラミングと一口に言っても,目的や用途も様々です。ちょっとした文字列処理といったライトユースから,少し複雑な数値計算,統計処理やAIなどの高度な数学演算,またスマホアプリ・Webアプリや業務システムなどのアプリケーション開発にももちろん用いられます。他にも実に様々な目的・用途が存在します。
用途や目的が異なれば,それに合ったプログラミングスタイルや,求められる機能・特徴も変わってきます。ライトユース寄りなら,文法もわかりやすく書きやすい方が良いですし,書いた傍から実行されてすぐに結果が分かるインタラクティブ性が欲しいでしょう。アプリケーション開発寄りなら,コンパイルされて高速に動作することが求められますし,保守性や堅牢性の観点からしっかりとした型システムやモジュールシステムも必要とされがちです。両者は一見相反する(少なくとも方向性の異なる)要望であり,どの機能・特徴に特化するか,ひいてはどのような用途・目的として扱いやすい(扱いやすくしたい)かによって,それに合ったプログラミング言語が選択され,その方向性に沿って機能が発展し,もしくはそれに特化・適合した新言語が誕生したりします。
ところで,2012年に投稿された以下のようなブログ記事があります(一部抜粋,著者による私訳)[1]。
我々は貪欲だ。こんなものでは物足りない。
自由なライセンスでオープンソースな言語が欲しいのだ。それはCのように高速だけど,Ruby のようなダイナミズムを併せ持っていてほしい。同図像性のある言語で,Lisp のような真のマクロを持ちながら,MATLAB のような直感的な数式表現もできるものが欲しい。Python のように総合的なプログラミングができて,R のように統計処理も得意で,Perl のように文字列処理もできて,MATLAB のように線形代数もできて,shell のように複数のプログラムを組み合わせることもできるものが欲しい。超初心者にも習得は容易でありながら,ハッカーの満足にも応えられるものであってほしい。インタラクティブな動作環境もあって,コンパイルもできるものであってほしい。
(Cと同じくらい高速に,はもう言ったっけ?)
記事のタイトルは "Why We Created Julia"(「我々はなぜ Julia を作ったのか」)。新言語 Julia がβ版として最初に公開された頃に開発者によって投稿されたブログ記事です。
Julia は,元々 MATLAB・Python・R などの数値計算・AI・統計処理等に強い言語を使ってきた開発者たちが,既存の言語で満足できなくて作り出した新しい言語です。しかも,その理由は上記の通り,貪欲だから,なのです。ライトユースにも使いたい,けれどもそれで高速性を犠牲にしたくない。総合的な開発の出来るものにしたい,けれども初心者にも敷居の低いものにしたい。つまり特定の目的・用途に特化するのではなく,どのような目的用途にも使える実用的なものにしたい。そういう思いで誕生した言語なのです。
2018年に Julia の正式安定版 ver.1.0 が公開されました。この時 Julia は,6年前にこの記事に書かれた「欲求」のほとんどが取り込まれた形で発展した言語として成長を遂げています。例えば,Ruby のように動的(ダイナミック)ですが,Cのように高速です。Python のように文法も比較的平易で学習コストが低く,また MATLAB のように直感的な数式表現の記述もできますが,Lisp のような真のマクロやコンパイル言語に似た洗練された型システムを持ち,総合的な開発にも耐えうるものになっています。元々が MATLABやPythonなどの言語の後継として開発された経緯から,AI や数値計算,またデータサイエンスの方面で特に注目されがちですが,上記の通り多方面の用途に有用な言語であり,色々な応用のポテンシャルを持っています。
特に私が注目しているのは,「超初心者にも習得は容易でありながら,ハッカーの満足にも応えられるもの」という点です。文法は平易で他言語から取り入れた文法・機能もあるため,習得は比較的容易です。しかし Julia という言語の奥深さは表面的なものではなく,少し掘り下げれば色々な可能性に満ちていることが実感できるはずです。本書は入門書という立ち位置ですが,Julia のコアな部分にも立ち入ってそういった可能性を拡げられるよう気を配っています。「私は Julia をもうだいぶ使いこなしている」と思っている中級者以上の方にもきっと手に取って満足していただけると思います。
皆さんも,Julia で新しい体験を始めませんか?
[1]: https://julialang.org/blog/2012/02/why-we-created-julia