«前の日記(2007-07-18) 最新 次の日記(2007-07-20)» 編集

Matzにっき


2007-07-19 [長年日記]

_ [言語] :gnuvince.net >> Blog Archive >> My 5 things I hate about Python

私がPythonで嫌いな5つのこと。

  1. listにdictのget相当(範囲外でNoneを得る)がない
  2. (x)rangeが終端を含まない 「for month in xrange(1,13)」とか
  3. (Cの)static変数相当がない
  4. メソッドだったり関数だったり。len()とかsort()とか
  5. lambdaが1行式しか書けない

まあ、大したことないって言えば大したことない。 逆にいうとそれ以外は嫌いじゃないってことだものな。 インデントの件は含んでないし*1。 この人は実はかなりPythonファンだと思う。

しかし、コメント欄ではそれらに対してかなり厳しい反論が付いている。 「真の」Pythonファンは、そのような批判に対しても反論せずにはおれないようだ。 いや、Rubyファンにもそういう人は多そう。

他山の石。

*1  コメント欄でインデントが消えてるサンプルコードがあるのが、(私から見ると)皮肉っぽい

_ Slash7 with Amy Hoy - Help Vampires: A Spotter's Guide

海外版「教えてクン」、その傾向と対策。

洋の東西を問わず、そういう人たちは居るのね。 でも、このエントリではそういう「Help Vampire」を 救済しようとする試みも含んでいる。

_ [言語] Buran Composition on-board computer

ソビエト版スペースシャトルであるBuranに搭載されている コンピュータは完全にオリジナルなものであったが、 彼らはそのためにBuran用の新言語、Prol-2とDipolと、 データ記述用言語Floksを開発した、という話。

ロシアの技術は侮りがたし。 コストを度外視した開発は時として驚くべきものを産み出す。 これも一種の蠱毒か。

_ [Ruby] IronRuby and Ruby.NET: The Differences and Benefits of Both

最近話題のIronRubyと、最初の実用的な.NET上のRuby処理系であるRuby.NETの違いについて。

  • IronRubyはDLR上で動く
  • Ruby.NETはCLR上で動く
  • IronRubyはRuby.NETのパーザーで動く
  • Ruby.NETは1.8.2添付のライブラリが動く。
  • IronRubyは現時点では機能的にまだまだ

_ [Ruby] まめめも - 高速 Bignum#to_s

桁数の多いBignumのto_sをkaratsuba系アルゴリズムを利用して Rubyで実装し直したらより高速になったという話。

Rubyの実行コストを考えると驚異的な話だと思う。 いや、ただ今使ってるアルゴリズムが効率悪すぎ、という話なのだが。

が、正直、アルゴリズムの説明を読んでもよくわかんなかった。数学苦手。

だれかCで実装し直してくれないだろうか。 喜んで取り込むから。イヤじゃなかったらChangeLogに名前を刻みこむから。

他力本願。

_ [Ruby] よしみ視点 - Ruby開発者:まつもとゆきひろ氏の集中授業

本題は私の集中を受けそこねた、という話なのだが、

野村総研、検索語に関連の深いキーワードを連想する「連想検索エンジン」を開発 インターネット-発表資料:IT-PLUS

この検索エンジンは、Ruby(正確には、Ruby on Rails)で開発されています。

というリーク(?)が。NRIがRubyに興味を持ってる話は知ってたけど(社内講演会もしたし)、 こういう風に使うとは知らなかった。

本日のツッコミ(全9件) [ツッコミを入れる]
_ maeda (2007-07-29 04:29)

>高速 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

_ maeda (2007-07-29 04:35)

あ、b**nもキャッシュしなきゃ…

_ muraken (2007-07-29 10:23)

glibc の fprintf は %e, %f, %g のときに karatsuba アルゴリズムを使ってますよ.

_ mame (2007-07-29 12:38)

まめめもの中の人です。<br>僕も最初は再帰で書いたのですが、halfbase の再計算が結構きくようだったので今の形に書き直しました。桁数を正確に半分にするのは面倒だったので試してません。<br>Math.log を使う方法は考えませんでした。大きすぎる Bignum (65536**65536 など) を Float に変換できないのが難点でしょうか。

_ mame (2007-07-29 12:42)

あ、Bignum 自体を Float に変換するわけじゃないですね。こっちの方がいいかも。

_ 水城徹 (2007-07-30 22:52)

>Buran Composition on-board computer<br>これは実はIBM360コンパチです。ですが同じページの上に何故かある4枚の画像の機種は、いづれもエキゾチックな独自Argonアーキテクチャ機です。上から3番目のArgon-11cは世界で最初に無人宇宙機を制御したコンピュータだったりします。<br>旧ソ連の言語ですと、ノーベル経済学賞受賞者カントロヴィッチが作った言語SOLOPOや、ソ連独自OSの中では最もメジャーなDispakを作ったトゥルチン作の言語Refalなどが面白いと思います。

_ 水城徹 (2007-07-30 22:54)

>Buran Composition on-board computer<br>これは実はIBM360コンパチです。ですが同じページの上に何故かある4枚の画像の機種は、いづれもエキゾチックな独自Argonアーキテクチャ機です。上から3番目のArgon-11cは世界で最初に無人宇宙機を制御したコンピュータだったりします。<br>旧ソ連の言語ですと、ノーベル経済学賞受賞者カントロヴィッチが作った言語PRORABや、ソ連独自OSの中では最もメジャーなDispakを作ったトゥルチン作の言語Refalなどが面白いと思います。

_ 水城徹 (2007-07-30 22:57)

すいません、最初のコメントは投稿失敗したものと思っていました。カントロヴィッチの言語は二番目のコメントのほうのPRORABが正しく、SOLOPOはミール宇宙ステーションの制御計算機Salyu-5B用の言語の名前です。

_ まつもと (2007-07-30 23:15)

すみません、なぜか、投稿がエラーになるんですよね<br>エラーが起きてもちゃんと書き込まれてるんですが。<br><br>それはそれとして、貴重な情報をありがとうございます。<br>ロシアにはまだまだ知られざるテクノロジーが隠れてそうですよね。<br>現在の基準で優れているかどうかはともかく。

お名前:
E-mail:
コメント:
[]

«前の日記(2007-07-18) 最新 次の日記(2007-07-20)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.