魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

パイパイと巨乳のジュリア

f:id:fxrobot:20141212190355p:plain

もし、きみがだね、マニアックな人間じゃないとして、生涯使えるプログラミング言語をひとつだけ教えてほしいというならば、ぼくは Python を勧めるだろう。

ところで、ぼくはあるプログラミング入門者に十進BASICを勧めたのだ。文系の人でプログラミング経験ゼロだと推測してのことだったが、ポケコンのプログラミング経験者だったことをあとになってわかった。

その彼はあれよあれよという間に十進BASIC(Full BASIC)に馴れていった。そして彼にはあるニーズが生まれた。それは、多倍長演算ができるコンパイラ言語だ。つまりスピードがほしい。それでまずぼくは Full BASIC と親和性のある FreeBasic を調べた。うん、できるできる。GMP が使えるじゃないか。

しかしなぁ、これじゃ C言語やってるのと同じじゃないか。だったら C のほうがいいよ。まさか彼もこんなプログラミングはしたくないだろう。

f:id:fxrobot:20141212223416j:plain
(↑ 説明略だがいろいろすごいぞ巨乳のジュリア ↑)

またところでだけど、ぼくはつい先日、Julia というプログラミング言語を見つけた。うん、こいつはまだ日本のみんなは知らないんじゃないかと、ぐるぐる in Japanese(Googleで日本語サイトを検索 ← 最初からそう言えよ)してみると、出てきたのは、アダルトビデオ、AV女優、巨乳動画などのサイト。

あっ、そっかと、Julia言語で再検索。そうしたら出てくる出てくる。ぼくは遅れたやつだったのだ。で、まぁ、気にせず、ぼくは Julia のドキュメント(英文)を読んだ。

そしたら、まぁ、欲張りな言語だこと。

小さな処理系を好むぼくには、このジュリアは巨乳過ぎるぞ。しかしそれでも数学のお供にジュリアの巨乳を弄くり回してやろうじゃないか。と、欲求不満気味のぼくは決めたのだった。

 で、話は戻って、彼のニーズにはどう応えたらいいだろう。

ぼくは Lua を思いついた。Lua は速いと聞いていたぞ。ぼくは Lua素数を吐き出させてみた。その結果は、上限数100万までの素数全出力が、8秒。上限数1千万だと、1分33秒だった。十分速いじゃないか。

Lua は難しいことさえしなければ、非常にシンプルで美しい。Full BASIC からの移行も抵抗がないだろう。しかし、コンパイラと比べると見劣りがする。LuaJIT でもその不満は解消できないようだ。

なにかないか。で、ぼくは PyPy という高速版 Python を見つけた。ぼくは遅れたやつなのだ。ぜんぜん知らなかったよ。早速ダウンロードして試した。

http://pypy.org/ f:id:fxrobot:20141212190437j:plainこんかいは Python 2.7 互換の PyPy 2.4.0 を選んだが、Python 3.2.5 互換の PyPy もあるので、好きなほうを選べばよい。

で、Lua とおなじように PyPy でも素数を吐き出させてみたよ。つぎのような結果だった。

上限数100万までの素数全部     →     2秒
上限数1000万までの素数全部   →    19秒
上限数1億までの素数全部         → 3分8秒

速いね。ぼくは満足したよ。ぼくはこんかいはじめて、パイパイを弄ったのだけど、気持ちよかったというか気分がよかった。下ネタはやめて。

で、Julia にも吐き出させてみた。PyPy には及ばなかったがこの速さはそうとうなものだね。

上限数100万までの素数全部     →       4秒
上限数1000万までの素数全部   →      32秒
上限数1億までの素数全部         → 4分24秒

さて、ぼくは彼に巨乳(Julia)を勧めてみたいとも思ったが、まだなんだかよくわからないものを勧めるわけにもいかず、そもそも彼は、やれ Ruby だ、やれパイパイだ巨乳だとあれこれ弄くるような不真面目な男ではないのである。

うん、そうだ。PyPy を勧めよう。Python ならば一生涯使える言語だからね。まじめな彼にはもってこいだと思う。

これも一種のコンパイラだしね。JIT(実行時コンパイラ)だけど。

【おまけ】
Python 3.3.2 で 3347670493571081 を素因数分解f:id:fxrobot:20141212200253j:plain

「PyPy 2.4.0 で 3347670493571081 を素因数分解f:id:fxrobot:20141212200311j:plain

こんなにちがうんだね。

うちの巨乳の Julia は、0.234438088 秒だったので素因数分解は PyPy よりも速かったね(黒い画面の画像に注目)。っていいたいけど、それは実装の問題だね。Julia のほうは組み込み関数だから。