雑種路線でいこう

ぼちぼち再開しようか

Ruby使いもCPUの知識はあった方がよい

うーん微妙。一般にThreadを使う理由として、n個あるCPUを効率的に使いたいといった意図がある場合があるが、Rubyは今のところネイティブスレッドをサポートしていないのでThreadを使ったコードを書いても複数CPUを利用できない。*1
複数CPUを効率的に使う必要があれば、JavaでもPythonでもいいけどネイティブスレッドに対応した言語で書くとか、Rubyを使うならThreadを使わず複数プロセスで実装してプロセス間通信を行うとか、そういう工夫が必要となる。
やはりid:shi3zさんが論じているように、最適化のためには一通りのレイヤに対して一定の知識を持っていないと解けない問題が少なからずあるのではないか。
弾さんの指摘するように「知っていると得」と、「知らなければ駄目」の間はあまりに離れているのだが、落とし穴はあちこちに空いていて、落ちた当人は往々にして何にハマったのかさえ気づかないものだ。

階層が一段違うが、例えばperlなら、fork()システムコールがないWindows上でもfork()関数が使えたり、RubyならPOSIX threadに頼らずともThread.newできたりといった具合だ。perlrubyを書くのにCPUの知識は必要だが、perlrubyで書くのに、CPUの知識は必須ではない。

*1:matzrubyの話。YARVでネイティブスレッドをサポートするようだし、JRubyIronRubyについても調べてみなきゃ