スキップしてメイン コンテンツに移動

投稿

9月, 2007の投稿を表示しています

遅いPCはいらない

仕事なりプライベートなりでPCはよく使う。しかし、最近特に動作の遅いことにイライラすることが多い。前に比べて自分が短気になったとかそういうことじゃないと思う。以前からも動作が遅いときにはイライラすることは普通にあったし。そういえば自分が子供のころはクソゲーの条件で最初に挙げられていたのが「動作が遅い」だったな。その当時から、とにかく動作が遅いだけですべてを台無しにすると思っていた。 まず、いつまでもHDDをカリカリ読み込んでいる時点で終わっていると思う。CPUだけ速くてもだめだ。これからのPCはこれを何とかしないと将来に期待が持てない。すべてオンメモリにするとか。それに肥大化したアプリケーションを何とかしないと。中間言語を使うソフトウェアもひどい。JITコンパイラも最悪だ。Javaと聞いただけで背筋が寒くなる。とにかくどれもこれも初期化に時間がかかるのだ。 また、起動や終了もひどい。自分の使っているノートPCを起動してすべてのスタートアップを読み込んでHDDが静かになるまで(ここが重要!)5分かかり、シャットダウンが完了するまでに2分半かかった。いい加減にして欲しい。つけて消すだけで7分半ですよ。飯が食い終わります。 とにかく、これがサクサクスイスイ動くのなら、今の10倍以上の速さで仕事をこなせると思う。そんな素敵なPCでないかな。少々値が張っても絶対買うと思う。 そういえばこの記事を書いていて一つ気が付いたことがある。CUI、いわゆるコマンドラインでのプログラムにイライラすることはほとんどない。それはプログラムに時間がかかったとしても、それを待っている間にほかの事ができるからだ。実行する前のコマンドライン入力自体で待たされることがないからだ。一方、GUIだとまず画面が表示されるまでに待たされる。その間、何もできない。この違いは決定的だ。 一つのプログラムだけ利用するならばGUIでも問題ない。しかし、PCは一つのプログラムだけで使うものではない。複数の様々なプログラムを同時に利用するのだ。

Folding@Homeはどうやって病気を治すのか?

PS3の Folding@Home は、ついに 1Pflopsの大台に乗った 。いやはや数の力は偉大だ。ところでこのFolding@Homeだが、これがどのようにして病気の治療に役立つのかちゃんと理解している人がどれだけいるだろう。ただなんとなく人の役立つから動かしてみてるだけという人がほとんどじゃないだろうか。そこでここではその仕組みについて簡単に解説したいと思う。 まず、Foldingの意味から。Foldingとは折り畳みという意味で、ここではタンパク質の折り畳みを意味する。タンパク質はDNAから設計され、数十から数百のアミノ酸が一列に連なったものだ。なので、タンパク質の端と端をつかんで引っ張れば一本の細長い紐のようになる。この紐はアミノ酸の並びによって必ず決められた形に折り畳まれ落ち着くのだが、これをFoldingというのだ。 ではこのタンパク質の折り畳みがなぜ重要なのか? それはこの折り畳み構造によって生体で機能する働きが決定するからだ。この折り畳まれた構造に別のタンパク質や生体分子がくっつき、生命に必要な機能を発揮する。現在では、人間のすべてのDNAが解読されたので、すべてのタンパク質のアミノ酸の並びがわかる。もし、アミノ酸の並びだけで折り畳み構造がわかれば、苦労して生体からタンパク質を見つけ出さなくても良くなるのだ。そして、その構造が、薬の開発や病気の解明などの研究に繋がるわけだ。もっとも、現状ではアミノ酸の並びだけではまだまだ折り畳み構造を決定するのは難しいのだが。 Folding@Homeでは、単に折り畳み構造を求めるだけではなく、現在構造が明らかになっているタンパク質に対しても機能の解明などで役立っている。例えば、タンパク質の一部のアミノ酸(タンパク質は基本的には20種類のアミノ酸から構成されている)が別のアミノ酸に変異すると異常な働きをして病気になる。それがどのように起こるのかを、タンパク質の動きなどから予測できる。 最後にFolding@Homeの実際の計算方法について述べる。上記に示した折り畳みや機能の解明は、分子動力学計算や分子力場計算によって行われる。分子動力学計算とは、原子間の力を古典力学のニュートン方程式を解くことで、その動的な過程を解析する。分子力場計算では、原子間の位置エネルギーの総和から分子のもっとも安定な構造を

怖い乱数

Javaのjava.util.Randomで適当な種を与えてnextDoubleなんて使ったりすると、最初の値が非常に狭い範囲(0.7前後)でしか生成されないことが分かる。かなり酷い。特に検証もされていないプログラムでは使われていそうで怖い。これじゃ乱数の意味無し。 また、こちらはかなり有名だと思うが、C言語標準のrand関数で生成された乱数は、最下位ビットが0と1の繰り返しになる。これも酷い。少し前に、あるゲームソフトがこのせいでサイコロがランダムではなくなってしまい、問題になっていた。回収や修正騒ぎになって売り上げにも響くわけで「あーあ」じゃ済まされない。 良い乱数・悪い乱数 で詳しい解説がされているので乱数を使う際には一読しておくのが良いかも。

マシン語至上主義

とあるブログで、プログラムというのはマシン語を理解して初めて「書ける」とあった。それはどうかと思う。特に最近よく使われるようになったLL言語なんてのは、内部を隠すように設計されていて、どのコンピュータ・どの環境でもその違いを見せないようにしているのにマシン語が必要なんて矛盾している。 もちろん、マシン語はハードウェアを知る上でも習得しておいたほうが良いが、わざわざ強制してマシン語を覚えさせることはないなぁ。下手するとマシン語を変に良く知っているせいで、それが災いすることもある。 例えば、以前あるプログラミング雑誌でC++の記事を読んだことがあるのだが、その記事によると、プログラムからアセンブリ言語を予想できなければいけないと書いてあり、実際にその記事にはプログラムコードが示されるたびに、それをアセンブリ言語に変換したものが載っていた。で、そのコードをみて、こういう動作をするのでこのように書くこともできると、規格外の書き方が記載されていたのだ。確かに、そのコンピュータのその環境ではうまく動くかもしれないが、それは標準規格では動作を保障していない。「正しい」プログラムは「正しい」書き方をしたものでなければならない。その場だけで通用する書き方ではだめなのだ。 マシン語至上主義は「良くない」と思うが、自分自身はマシン語を覚えていて良かったと思う。コンピュータを使い始めたころはプログラムでも組まなくてはあまり使い道がなかったのもあって、マシン語・アセンブリ言語でいろいろ遊んでみた。ハンドアセンブルしていたことが懐かしい。マシン語は覚えるのは簡単だけど、それで複雑な仕事をさせるのはかなり大変。そういえば、ゲーム雑誌ログインには毎回ゲームのマシン語ダンプリストが載っていたなぁ。今じゃCD付けて終わりってところだろうけど、自分で打ち込んだ苦労があるからか、そこに載っていたゲームは面白いものが多かったように思う。確かあの木屋さんが作ったドラゴンスレーヤーのダンプリストもあったはず。 あまり関係ないけど、以前、知り合いで計算速度ではFORTRANが一番速いって言っていたのを思い出した。FORTRANが吐き出したコードはすべてマシン語で書くことができて、(作成の困難さを度外視すれば)マシン語で書かれたものが一番速いか最悪で同じ速度って言ってもなかなか理解してもらえなかった

似非科学

スラッシュドット に お茶の水大、「ニセ科学批判」がらみで提訴される という記事が載っていた。ホント、世の中、似非科学に騙される人が多いこと、多いこと。マスメディアに踊らされた挙句、まったく効果がないものを買わされる。マイナスイオン、酸素水などなど。みんな有難がって買っていく。今の世の中、少し調べれは分かることなのに…。また、一般教養レベルの科学の知識があれば回避できることも多い。権威(たとえばどこそこ大学の教授など)が言うことには皆弱いのか。 ゲーム脳なんてのもあったな。これ、提唱者の実験結果にかなりの恣意性が入っていることは有名だ。ちゃんとしたところでゲームにおける影響を調査したが、結局、有意な悪影響は認められなかったそうだ。自分だけならこんなくだらないことに引っかかったりすることは無いのだが、驚いたことに自分の子供を預けている保育園担当の医師がゲーム脳になるからゲームはやるなと父母に力説していた。自分が子供のころ、海で陽に焼くと冬に風邪を引かないとか(実際には免疫力が下がって病気になりやすい)、歯を磨くときは歯ブラシを縦にして磨くほうが良いとか(実は歯茎を傷めやすい)、これらと同じように、将来になって今の子供たちが、ゲーム脳なんてでたらめなことが流行っていたなぁ、なんてことを言うのが今から目に浮かぶ。 カール・セーガンの「人はなぜエセ科学に騙されるのか」は随分前に読んだのだが、かなり役に立つことが書かれているので一読したほうがいい。…と思ったらもう絶版なのかな。いい本なんだけどなぁ。

悪徳商法マニアックス

世の中には様々な詐欺まがいの商売や勧誘が蔓延っている。電話勧誘やspamメールなどは被害を受けない者の方が少ないぐらいだ。そんな悪徳商法について情報提供や解説をしているサイトがある。 悪徳商法マニアックス だ。非常に有名なサイトなので知っている人も多いかと思うが、一時期、Google八分に遭い、Googleから検索できなかったことでも知られている。このサイトで紹介されたサイトからクレームが来て、検索対象からはずされたらしい。さらに、ここのサイトにはたくさんの嫌がらせもあるそうだ。憎まれっ子世に憚るというが、悪徳業者には世に憚ってもらっては困る。 多くの人がこのような悪徳業者の餌食となり、被害を蒙っている。こういったサイトなりで啓蒙していくしか被害拡大を食い止める手段は無いかもしれない。

ポケモンにはまる

しばらく前から子供が ポケモン にはまっていて、先日は映画にも行かされた。ポケモンなんて子供のお遊びぐらいにしか思っておらず、ほとんど興味を持ったことは無かったのだが、映画を観たり、ゲームをプレイしたりするうちに、これはこれで面白いかもと思うようになった。 基本的には、世界にうろうろしている生き物であるポケモンを捕まえてペットにする。そしてそのポケモンをさらにほかのポケモンと戦わせて捕まえる。戦えば戦うほど強くなるし、一緒にいればいるほどなついてくる。また、ポケモンは500種類近くいるので切手集めのような収集モノにも通じる。通信機能を使えば友達同士で戦ったり、ポケモンを交換したり、協力しあうこともできる。ポケモンのゲームデザイナーによると、子供のころにカブトムシやクワガタムシなどを捕まえることが面白かったからそれを何とかゲームにできないかと考えて作ったらしい。なるほど、だからポケモンは草むらから飛び出し、木に甘い蜜を塗ると寄ってくるのか。 というわけで年甲斐も無くはまってみた。いろいろと細かなギミックも周到に用意され、その一つとして、木の実を土に蒔き、自分で肥料や水をやって育てたりもできる。それも実時間をもとに成長するので、水遣りなどを忘れると木になる実の数が減ったりする。実を土に植えてから成長して実が再び実るまでの時間は、実の種類によって異なるのだが、長いもので4日ほどもかかる。 子供のおもちゃだと思って侮ってはならない。

アンチハッカー法

INTERNET Watch によるとドイツで「アンチハッカー法」が先月施行されたらしい。ネット上での攻撃ツールの作成はもちろん、所持もできなくなるとのこと。 これで何が困るかと云うと、セキュリティのチェックなどもできなくなる点。攻撃ツールでセキュリティのチェックは普通に行われているが、そのツールが使えなくなってしまうのだ。そのため、この法律が施行される前からセキュリティ関連の技術者が施行反対のデモ活動が行われていた。 セキュリティの確認が難しくなるドイツのネットが世界各国のクラッカーから狙われたりして。

Python 3000

先日、 Python 3000のアルファ版 が公開された。今までのPythonと基本的に互換性が取られていないのでまだ試してないが、Python 2.6のソースコードを変換するユーティリティは出るらしい。詳しくは PEP 3000 あたりを参照のこと。 以前のバージョンと比べると、printなどに変更が入り、クラスについてはもう少し良くなるようだ。まあ、リリース予定の一年後に使うかどうかは決めるつもり。開発版では仕事に使うのはちょっと難しそうだし。