secretbase.log

.NET/C#/Pythonなど

Julia Studio で始める Julia 入門

f:id:cointoss1973:20140102212844p:plain

julia とは

ハイレベルでハイパフォーマンスの動的プログラミング言語です。文法は他の言語と似ているようです。
去年くらいからたまに話題にならないレベルで、周りでも話にも聞かないレベルですが、将棋の電王戦のあるプログラムが juliaで実装されているという話を聞いて興味を持ちました。

R は新しいExcel。 Python は新しいR。julialang は新しい Python とかいうつぶやきもあり、あまり話題に上がらないけど、ベンチマークとかみると非常に優秀なので気になっていた julialangを少し触ってみることにしましょう。*1

Julia Studio

インストール

Julia Studio をダウンロードして入れましょう。Qtで実装されているようなので、Windows, Mac, Linux があります。ここでは Windows で進めますね。

f:id:cointoss1973:20140102211904p:plain
f:id:cointoss1973:20140102211909p:plain
f:id:cointoss1973:20140102211914p:plain
f:id:cointoss1973:20140102211918p:plain
f:id:cointoss1973:20140102211922p:plain
f:id:cointoss1973:20140102211930p:plain
Finish。これといって問題なし。

julia studio を入れると、julia 自体も下記インストールされるようなので、これ一本でとりあえず julia を始めることができます。
インタプリタの設定もできますので、別に入れた julia のバイナリを指定することもできます。
現時点の 0.4.3 を入れると、julia の 0.2.0 (最新)が入ったのでひとまずこれでOK。

起動

では、Julia Studio を起動してみましょう。
ふむ、Packages とかいろいろあるようですねぇ。
f:id:cointoss1973:20140102212019p:plain
Githubからメタパッケージらしきものをひっぱってきて、どうやらパッケージリストを作成してくれるみたいです。これはJulialangとしてサポートしている機能なんだろうか、それとも Studioの機能なんだろうか... いきなりIDEから入る弊害ですね。あとで調べてることにして先にいきます。

チュートリアル

julia studio に チュートリアルのページ があるので実行してみる。

Hello World

println("Hello, World!")

をhello.jl というファイルで新規作成すればOK。 console (いわゆる REPL)があるので、そちらに入力してもOKですが、まぁチュートリアルに従ってみます。
f:id:cointoss1973:20140102212033p:plain
F5 を押すと実行されます。F5 で Run って個人的に身体に馴染んでいていい感じです。

fizzbuzz

さて、チュートリアルは続きますが英語を読むのも飽きますね。
ということで、文法もよくわからぬまま、fizzbuzz を実装してみます。
Julia Documentation — Julia Language 0.2.0 documentation この辺に、ドキュメントがあります*2

関数定義は、function で始まり、 end までのようですね。
条件分岐は、if else elseif end ですね。
演算子 は、だいたいPythonと一緒ですね

さくさくとエディタに書いてみます。
もっともベタな実装で、こんな感じですね。

f:id:cointoss1973:20140102212231p:plain
インデントは 8 タブなんだけど、これが標準なんだろうか。ちょっときもい*3

なかなか手軽で性能が良いのであれば良さそうですね。
Pythonなみのコミュニティやライブラリが充実するような流れになれば主流になるかもしれませんね*4

環境

  • Windows 7 64-bit
  • Julia Studio Version 0.4.3 (Julia 0.2.0)

*1:2014年も始まり、なにか新しいことをやってみたいですよね

*2:お、Sphinxで記述されているようですね

*3:Python の 4スペースがいいなぁ

*4:卵ニワトリのような関係かもしれませんね