2018年2月14日水曜日

Why We Created Julia 何故我々はJuliaを作ったか

Why We Created Julia 何故我々はJuliaを作ったか
14 February, 2012

In short, because we are greedy.
端的に言えば,我々は欲張りだからだ.

We are power Matlab users. Some of us are Lisp hackers. Some are Pythonistas, others Rubyists, still others Perl hackers. There are those of us who used Mathematica before we could grow facial hair. There are those who still can’t grow facial hair. We’ve generated more R plots than any sane person should. C is our desert island programming language.
我々はMatlabのパワーユーザーだ.LispハッカーやPython使いやRuby使いもPythonハッカーもいる.髭が生える前からMathematicaを使っていたのもいるし,未だに髭が生えてない仲間もいる.常識的な人にはオススメしないくらい多くのグラフをR言語で描いてきた。そしてC言語は僕らのユートピアだ.

We love all of these languages; they are wonderful and powerful. For the work we do — scientific computing, machine learning, data mining, large-scale linear algebra, distributed and parallel computing — each one is perfect for some aspects of the work and terrible for others. Each one is a trade-off.
いま挙げた言語は大好きだ,どれも素晴らしいしパワフルだけど,科学計算,機械学習、データ・マイニング,大規模な線形代数演算,分散・並行コンピューティング,といった僕らがやるようなものにはどれも一長一短で,仕事に完璧にはまる機能もあれば何とも使い物にならないものもある.どれもトレード・オフなんだ.
We are greedy: we want more.
僕らは欲張りだ.これじゃ十分じゃない.
We want a language that’s open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that’s homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled.
僕らが欲しい言語はこんな感じだ.まず、ゆるいライセンスのオープンソースで,Cの速度とRubyの動的さが欲しい.Lispのような真のマクロが使える同図象性のある言語で,Matlabのように分かりやすい数学の記述をしたい.Pythonのように汎用的に使いたいし,Rの統計処理、Perlの文字列処理,Matlabの線形代数計算も要る.シェルのように簡単にいくつかのパーツをつなぎ合わせたい.チョー簡単に習えて、超上級ハッカーも満足する言語.インタラクティブに使えて,かつコンパイルできる言語が欲しい.
(Did we mention it should be as fast as C?)
(そういえば、C言語の実行速度が必要だってのは言ったっけ?)
While we’re being demanding, we want something that provides the distributed power of Hadoop — without the kilobytes of boilerplate Java and XML; without being forced to sift through gigabytes of log files on hundreds of machines to find our bugs. We want the power without the layers of impenetrable complexity. We want to write simple scalar loops that compile down to tight machine code using just the registers on a single CPU. We want to write A*B and launch a thousand computations on a thousand machines, calculating a vast matrix product together.
こんなにもワガママを言った上だけど、Hadoopみたいな大規模分散コンピューティングもやりたい。もちろん、JavaとXMLで何キロバイトも常套句を書きたくないし、数千台のマシンに分散した何ギガバイトものログファイルを読んでデバッグするなんて論外だ。幾層にも重なった複雑さを押しつけられるようなことなく、純粋なパワーが欲しい。単純なスカラーのループを書いたら、一台のCPUのレジスターだけをブン回す機械語のコードが生成されて欲しい。A*Bと書くだけで千の計算をそれぞれ千のマシンに分散して実行して、巨大な行列の積をポンと計算してもらいたい。
We never want to mention types when we don’t feel like it. But when we need polymorphic functions, we want to use generic programming to write an algorithm just once and apply it to an infinite lattice of types; we want to use multiple dispatch to efficiently pick the best method for all of a function’s arguments, from dozens of method definitions, providing common functionality across drastically different types. Despite all this power, we want the language to be simple and clean.
型だって必要ないなら指定したくない。もしポリモーフィックな関数が必要な時には、ジェネリックプログラミングを使ってアルゴリズムを一度だけ書いて、あとは全ての型に使いたい。引数の型とかから自動的にメソッドを選択してくれる多重ディスパッチがあって、共通の機能がまったく違った型にも提供できるようにして欲しい。これだけのパワーがありながらも、言語としてシンプルでクリーンなものがいい。
All this doesn’t seem like too much to ask for, does it?
これって、多くを望みすぎてるとは思わないよね?
Even though we recognize that we are inexcusably greedy, we still want to have it all. About two and a half years ago, we set out to create the language of our greed. It’s not complete, but it’s time for a 1.0 release — the language we’ve created is called Julia. It already delivers on 90% of our ungracious demands, and now it needs the ungracious demands of others to shape it further. So, if you are also a greedy, unreasonable, demanding programmer, we want you to give it a try.
僕らがごまかしようのないほど欲張りなのは分かってるけど、それでもぜんぶ欲しいんだ。二年半ほど前、この欲にまみれた言語を作り始めた。まだ完成してないけど、そろそろ1.0のリリースの時期だ。僕らが作った言語の名前はJulia。すでに僕らの無礼な要求に9割方は応えてくれてるけど、ちゃんとした形になるためには僕ら以外の要求も聞かないといけない。だから、君がもし欲張りで理不尽でわがままなプログラマなら、ちょいとこいつを試してもらいたいんだ。

0 件のコメント :

コメントを投稿