私がPythonで嫌いな5つのこと。
まあ、大したことないって言えば大したことない。 逆にいうとそれ以外は嫌いじゃないってことだものな。 インデントの件は含んでないし*1。 この人は実はかなりPythonファンだと思う。
しかし、コメント欄ではそれらに対してかなり厳しい反論が付いている。 「真の」Pythonファンは、そのような批判に対しても反論せずにはおれないようだ。 いや、Rubyファンにもそういう人は多そう。
他山の石。
*1 コメント欄でインデントが消えてるサンプルコードがあるのが、(私から見ると)皮肉っぽい
海外版「教えてクン」、その傾向と対策。
洋の東西を問わず、そういう人たちは居るのね。 でも、このエントリではそういう「Help Vampire」を 救済しようとする試みも含んでいる。
ソビエト版スペースシャトルであるBuranに搭載されている コンピュータは完全にオリジナルなものであったが、 彼らはそのためにBuran用の新言語、Prol-2とDipolと、 データ記述用言語Floksを開発した、という話。
ロシアの技術は侮りがたし。 コストを度外視した開発は時として驚くべきものを産み出す。 これも一種の蠱毒か。
最近話題のIronRubyと、最初の実用的な.NET上のRuby処理系であるRuby.NETの違いについて。
桁数の多いBignumのto_sをkaratsuba系アルゴリズムを利用して Rubyで実装し直したらより高速になったという話。
Rubyの実行コストを考えると驚異的な話だと思う。 いや、ただ今使ってるアルゴリズムが効率悪すぎ、という話なのだが。
が、正直、アルゴリズムの説明を読んでもよくわかんなかった。数学苦手。
だれかCで実装し直してくれないだろうか。 喜んで取り込むから。イヤじゃなかったらChangeLogに名前を刻みこむから。
他力本願。
本題は私の集中を受けそこねた、という話なのだが、
野村総研、検索語に関連の深いキーワードを連想する「連想検索エンジン」を開発 インターネット-発表資料:IT-PLUS
この検索エンジンは、Ruby(正確には、Ruby on Rails)で開発されています。
というリーク(?)が。NRIがRubyに興味を持ってる話は知ってたけど(社内講演会もしたし)、 こういう風に使うとは知らなかった。
This work is licensed under a Creative Commons License.
>高速 Bignum#to_s<br><br>素直に再帰で書くとこんな感じ?<br><br>class Bignum<br> def to_s(b = 10)<br> digits = 1<br> halfbase = b<br> while halfbase.size * 2 < size do<br> digits += digits<br> halfbase *= halfbase # halfbase == b ** (2 ** digits)<br> end<br> (high, low) = divmod(halfbase)<br> return high.to_s(b) + low.to_s(b).rjust(digits,"0")<br> end<br>end<br><br>桁数を正確に半分ずつにしていないのと、halfbaseを何度も計算しなおすので、すこし効率悪いですが...<br><br>もう少し凝るとこんな感じでしょうか。<br><br>class Bignum<br> alias to_s_org to_s<br> DIGITS = (0..36).map{|x| {}}<br><br> def to_s(b = 10)<br> if size <= 8 then<br> return to_s_org<br> end<br> n = DIGITS[b][size] ||= (Math.log(256.0) / Math.log(b.to_f) * size / 2.0).ceil<br> (high, low) = divmod(b ** n)<br> return high.to_s(b) + low.to_s(b).rjust(n,"0")<br> end<br>end
あ、b**nもキャッシュしなきゃ…
glibc の fprintf は %e, %f, %g のときに karatsuba アルゴリズムを使ってますよ.
まめめもの中の人です。<br>僕も最初は再帰で書いたのですが、halfbase の再計算が結構きくようだったので今の形に書き直しました。桁数を正確に半分にするのは面倒だったので試してません。<br>Math.log を使う方法は考えませんでした。大きすぎる Bignum (65536**65536 など) を Float に変換できないのが難点でしょうか。
あ、Bignum 自体を Float に変換するわけじゃないですね。こっちの方がいいかも。
>Buran Composition on-board computer<br>これは実はIBM360コンパチです。ですが同じページの上に何故かある4枚の画像の機種は、いづれもエキゾチックな独自Argonアーキテクチャ機です。上から3番目のArgon-11cは世界で最初に無人宇宙機を制御したコンピュータだったりします。<br>旧ソ連の言語ですと、ノーベル経済学賞受賞者カントロヴィッチが作った言語SOLOPOや、ソ連独自OSの中では最もメジャーなDispakを作ったトゥルチン作の言語Refalなどが面白いと思います。
>Buran Composition on-board computer<br>これは実はIBM360コンパチです。ですが同じページの上に何故かある4枚の画像の機種は、いづれもエキゾチックな独自Argonアーキテクチャ機です。上から3番目のArgon-11cは世界で最初に無人宇宙機を制御したコンピュータだったりします。<br>旧ソ連の言語ですと、ノーベル経済学賞受賞者カントロヴィッチが作った言語PRORABや、ソ連独自OSの中では最もメジャーなDispakを作ったトゥルチン作の言語Refalなどが面白いと思います。
すいません、最初のコメントは投稿失敗したものと思っていました。カントロヴィッチの言語は二番目のコメントのほうのPRORABが正しく、SOLOPOはミール宇宙ステーションの制御計算機Salyu-5B用の言語の名前です。
すみません、なぜか、投稿がエラーになるんですよね<br>エラーが起きてもちゃんと書き込まれてるんですが。<br><br>それはそれとして、貴重な情報をありがとうございます。<br>ロシアにはまだまだ知られざるテクノロジーが隠れてそうですよね。<br>現在の基準で優れているかどうかはともかく。