2021年4月17日土曜日

どうして Julia を作ったか

プログラミング言語「Julia」開発者さんの文章がとても好きなので、
雰囲気重視で訳しました結構意訳です

=================================================
「どうして Julia を作ったか」


それは、僕らが欲張りだからだ。

Matlab はめっちゃ使う。僕らの中にはLispの天才もいるし、PythonやRuby のすげー奴、Perl を巧みに使いこなす奴もいる。毛も生えない子供の頃からMathematica で遊んだ奴もいる。いまだにツルツルな奴だって仲間だ。Rではアホみたいにたくさんグラフを書いた。C言語からは、いつだって冒険の匂いがする。

ぜんぶ、大好きだ。面白いし、いろいろなことができる。何かをしたいと思った時--科学や機械学習、データ解析、どでかい行列の計算、分散計算、並列計算。いろんな言語は場面に応じて最高に上手く動いたり、まるでダメだったりする。それぞれに、良いところと悪いところがある。

足りない。もっと、もっとだ。

僕たちの欲しい言語はオープンソースで、ライセンスがゆるい。C みたいに早くて、Ruby みたいに動的で、さらに同図象性もある。Lisp みたいに本物のマクロが使えて、それでいて数式がMatlab みたいに綺麗にかける。Python みたいにコードが書きやすく、Rのように統計処理に強く、文字列処理をすればPerlと思うくらいやりやすい。Matlab みたいに線形代数に強く、Shell のように処理を繋げるのが上手。そして、めっちゃわかりやすくて、かつ本気のプロも使いたくなる。インタラクティブだけどコンパイルもできる。

(あ、あとC 言語の速度も欲しい・・・って言ったか)

欲しいものだらけだ。Hadoopのような分散処理だってしたい。でもJavaやXMLみたいに単純作業を繰り返すのは嫌だ。何百台のマシンの、何ギガとあるログをみてバグを探すなんてやりたいわけがない。だるくて複雑で、気が遠くなる思いをしなくても、パワーが欲しい。簡単なスカラーループを書いたら、CPU一つのレジスターをぶん回す機械語のコードがコンパイルされて欲しい。A*Bって書いたら、巨大な行列の演算を何千何万のマシンに勝手に分散して高速に計算して欲しい。

型なんて、必要な時以外は宣言したくない。いろいろな型を扱う必要があるときは、本質的なとこのアルゴリズムだけ書いて、あとは勝手に対応して欲しい。引数の型に応じて最適な機能を自動で選択してくれて、扱う型が結構違ってしまっても一つの機能を共有できて欲しいそしてこれだけいろいろできても、僕らの言語はシンプルで美しくあってほしい。


不可能だって?本当に?

認める。僕たちはとんでもなく欲張りだ。それでも、全部欲しいんだ。2年半ほど前、僕たちはこの欲にまみれた言語を創る旅に出た。まだ途中だけど、そろそろ最初のバージョンをお披露目する時だ。僕たちの言語は Julia と言う。実は欲しかったものの9割ほどは、もうすでにそこにある。だから今度は君の欲を頂きたい。欲がこいつを、 Julia をさらに成長させる。強欲で、さらなる不可能を求める人がいたら。ちょっとこいつで遊んでみてくれないかい?

========================================
むかし、計算機やインターネットがまさに「成長初期」にあったころ。
「技術はフリー(無料)で世の中を豊かにするためのもの」
というハッカー思想があり、僕はとても好きだった。

時代はうつろい空気は変わったが、上の「宣言」からは
久々に"昔の空気"の匂いがした。