2009-01-30

擬古

When you have only 16KB of memory, you can't afford to waste any of it on fluffy stuff

16KBしかメモリがなければ、重複したチェックなんて入れる余裕はないという話。

The story of Mel, a Real Programmer

Melという、本物のプログラマの話。

2009-01-28

VC10のインテリセンスについて

Visual C++ Team Blog : Dev10 Is Just The Beginning

過去の記事
http://blogs.msdn.com/vcblog/archive/2007/12/18/intellisense-history-part-1.aspx http://blogs.msdn.com/vcblog/archive/2008/02/29/intellisense-part-2-the-future.aspx

我々が初めて C++のintellisense を実装したときは、想像以上に悲惨であった。まあ、ユーザはそれほど期待していなかったというのもあるのだが。何より早さが必要だった。しかし、テンプレートや複雑なオーバーロードで動かないというのであれば、不満も出るだろう。当然ながら、我々はC++コマンドラインコンパイラのフロントエンドを、インテリセンスにも流用したかった。が、それはintellisenseを考えて設計されたものではない。それは256Kのメモリを積んだ16 bit DOS上で実行できるよう設計されていた。ステートメントをひとつずつパースし、解析し、即座にアセンブリレベルのintermediate言語に落とし込むのだ。intellisenseに向いた設計というのは、字句解析と意味解析を分けておくものなのだ。意味解析は重い処理なので、intellisenseの為には、ユーザが知りたい部分にだけ適用したい。我々はintellisenseのために、新しいC++フロントエンドを書くことも考えた。結局我々の結論は、C++はとても複雑だ、ということだった。ひとつのプロダクトサイクルに間に合わない程、時間がかかるので、もっと手っ取り早くやりたかった。そこで我々は、コマンドラインのC++コンパイラを元に、ifdefを画期的に用いて、intellisenseコンパイラに仕立て上げた。我々はintellisenseコンパイラを、FEACPと呼んだ。Front End Auto Complete Parserの略である。コマンドラインコンパイラは、C1XXと呼ばれていた。これは、C++ phase 1の事だ。ifdefはC1XXコードから、あらゆるintermediate言語に落とし込む処理を省く為に使われた。また、必須でないと思われる意味解析も省いた。初期化、メンバオフセット計算、vtable生成など。当時のCPU速度は、たったの100MHz程度だったので、C1XXの多くのコードを削り、ドロップダウンウインドウを100ミリ秒以内に表示させる必要があった。必須でないメモリの使用も省かれ、シンボルに対する情報もわずかしか保持しなかった。これは特に重要な事だった。なぜならば、FEACPはIDEプロセスの中で動かなければならないからで、IDEはすでにかなりのメモリを使っていたからだ。

FEACPの製品化は成功したものの、そのテストとメンテナンスは悪夢であった。ifdefで削ったために、多くのコードやデータの依存性の問題があった。頻繁にクラッシュするし、NCBファイルが壊れることも多々あった。メンテナンスは重労働であった。というのも、FEACPとC1XXは、あまりにも異なっており、C1XXに対する、一日数百万行ものコードによるテストは、FEACPの品質にあまり貢献しなかった。かなり別々にテストするを余儀なくされた。教訓としては、二つの異なるコンパイラを、同じソースコードでサポートするのは、二つの完全に別なコンパイラをサポートするより、多少マシなだけであり、どちらも長期的なメンテナンス性では、あまり良い選択とは言えない。実を言うと、コンパイラは三つあった。ANSI-Cは、また別のifdefの塊だったからだ。本当は、四つあった。/analyze コンパイラを含めるならば。

FEACPをリリースした年に、我々はifdef地獄の行ける所まで突き進んでしまった事に気がついた。同時に、もっと単純な、JavaやC#といった言語に対するintellisenseの出来栄えが、ユーザのintellisenseに対する期待を、FEACPでは実現不可能なレベルにまで押し上げてしまっていた。今日の千倍早いCPU速度とメモリ容量では、FEACPを選択した、当時としての妥当な理由は、もはや成立しなくなってしまう。さらに、あまりに増えすぎたifdefとその結果のコンパイラモデルは、C1XXに対する言語機能の追加を困難にしてしまっていた。バグ数はうなぎ上りで、言語の差はいや増すばかり。それと同時に、十分な能力を持ち、C++コンパイラの仕事をしたいと思う者も減っていった。何とかしなければならない。

近年のPCの速度と容量であれば、ひとつのコンパイラで、C++のコード生成とintellisenseの両方を行えるはずである。我々に何が欠けていたかというと、ソースコードの high-level internal representation である。それさえあれば、intellisenseの要求するサービスに対して、representationを流し込むこともできるし、マシン語に落とし込むこともできる。フロントエンドを蝕む、何千個もの#ifdefは必要なくなるし、コンパイルのモデルもひとつですむ。テストにかかる労力も劇的に減る。新人のコンパイラ開発者も入りやすくなる。しかし、手放しで手に入るわけではない。GHzクロック速度をもってさえ、すべてのintellisenseのリクエストに対して、すべてのコードに完全なフロントエンドを実行することはできない。我々は、完全なフロントエンドを、期待される結果をもたらす、必要な部分にのみ適用する、新たなintellisenseのフレームワークを作らねばならない。まだやることはたくさんあるが、ひとつのプロダクトサイクルの中で実現できるはずだ。そしてやり遂げた。Dev10は、その結果だ。

ここまで読んだ読者は、こう疑問に思うことであろう。「ふむ、軽量化に成功したんだな。マイクロソフトにとってはいいことだろうよ。でも俺にとってはどうなんだ」と。intellisenseに最も重要な機能は、精度である。Visual C++は何百万行ものコードを、ビルドラボや世界中のPCで、毎日コンパイルし、5 / 9程度の精度を持っている。intellisenseがコマンドラインコンパイラと同等になるということは、同等の精度を持つということだ。これはC++のintellisenseにもたらす、最も大きな変化である。

精度が高いというのは、自動補完のドロップダウンで正しいメンバを得られる以上のことを意味する。その他の、不可能や無謀だった機能をも、可能にするのだ。例えば精度で言うと、intellisenseのパース中に見つかったエラーは、本物のエラーである。したがって、編集や閲覧中のエディタウインドウに、「さりげなく」表示することもできる。これはわざわざファイルを保存してビルドを始めなくても、警告が得られるということだ。

そのほかの精度の利点としては、データはコード解析や変形に使えるほどの精度だということだ。例えば、ソースコードのリファクタリングなどだ。Dev10では、expression-level のデータのアクセスを提供させるのは時期尚早だ。ユーザはソースコードのシンボルを眺められる。将来的には、ユーザがアクセスできるAPIを提供し、C++のソースコード対する高精度の情報にアクセスできるようにする。これはWindowsのC++に対する、まったく新しい解析や理解、生産性のツールの環境となるだろう。

N2530について

このN2530自体、だいぶ古い。しかし、どうやらこれが最新版のようだ。現行ドラフトに取り入れられているものとは、だいぶ変わっている。

内容としては簡単なもので、type_infoを連想コンテナに入れられるようにしましょうというものだ。具体的には、unordered containerへの対応と、type_infoのラッパクラスであるtype_indexの定義である。

type_infoのメンバ関数、hash_code()の戻り値については、N2530では、以下の通りになっている。

an unspecified value, except that within a single execution of the program, two type_info which compare equal should return equal values.

具体的な値は規定されない。ただし、プログラムのある実行中において、同等と比較される二つのtype_infoは、同じ値を返した方が良い。

これはもちろんありえない。同等と比較されるのであれば、同じ戻り値を返すことが保障されていなければ、意味がない。現行ドラフトでは、以下のようになっている。

an unspecified value, except that within a single execution of the program, it shall return the same value for any two type_info objects which compare equal.

具体的な値は規定されない。ただし、プログラムのある実行中において、あらゆる二つの同等と比較されるtype_infoのオブジェクトは、同じ値を返さねばならない。

現行ドラフトでは、本来の意図通りのshallとなっている。また、細かい言い回しが変更されている。とくに、type_infoのオブジェクトとなっているのが、分かりやすいと思う。

ところで、ひとつ問題がある。それは、hash<type_index>に関するものだ。18.6.2.2で、規定しているのだが、N2530にある、特殊化の宣言部分は、現行ドラフトに入っていない。そして、もうひとつ重大な問題がある。hash関数自身の文章だ。hash関数は、20.6.17で規定されているのだが、以下のようになっている。

This class template is only required to be instantiable for integer types (3.9.1), floatingpoint types (3.9.1), pointer types (8.3.1), and std::string, std::u16string, std::u32string, std ::wstring, std::error_code, std::thread::id, std::bitset, and std::vector<bool>.

std::type_indexに言及していないが、いいのだろうか。

2009-01-26

デフラグにまつわる妄信を払う

Disk Defragmentation – Background and Engineering the Windows 7 Improvements

この内容はほとんどWindows Internalsに書いてあるが、一般人があの本を買って読むとは思わないので、これを読んでおくべき。デフラグに関する妄信が解ける。

Windows 7では、デフラグに関する分かりやすいUIが追加された。といっても、あのゲージが移動する動作状況を表示するUIではない。デフラグの本当の動作状況を表示するとなると、ランダムにドットが移動しているだけになるだろう。新しいUIというのは、ディスクのフラグメンテーション率などを表示するUIのことだ。また、デフラグのスケジュールを設定できるUIもある。もちろん今でも、タスクスケジューラから設定できるが、一般人はタスクスケジューラを使ったりしない。そこでUIを作ったのだろう。

また、今まで移動できなかった多くのNTFSのmetadataが移動できるようになったらしい。

それと、ディスクがSSDであることを検出した場合、そのディスクに対してはデフラグを無効にするようにもなった。どうせSSDにはデフラグしても意味はないのだから。

神をgodと訳すのは誤訳である。

Bukkake of the Gods: Japan's Insane Creation Myths

まあ、間違っちゃいないけどさ。神をGodと訳すのだけは間違っている。日本には、お前ら白人が考えるようなreligionなんてないんだよ。

そして紹介の仕方が、なんともなぁ。間違っちゃあいないけどさ。なんにでも神がいるんだから、そりゃvomit godsもいるさ。

ついでに、天照大御神を天の岩屋戸から出す話とか(胸乳をかき出て裳緒を陰に押し垂れき)、大気津比賣神に食物を差し出させる話(鼻口また尻より、種種の味物を取り出して)なんかも紹介すればいいのに。絶対気に入ると思う。

雪のおもしろう降りたりし朝

雪のおもしろう降りたりし朝、人のがりいふべきことなくんば、文やるかたもなし。

京都の朝の雪はすばらしい。散歩でもしてこよう。

追記:なかなか悪くない。

最近気になったニュース

fallout 3スレでネタにしていたのもこの私だが、最近ブログのネタもないもので、ここにも書いてみる。このニュースが気になった。

The 7 Worst Tech Predictions of All Time

"Nuclear-powered vacuum cleaners will probably be a reality within 10 years."

Alex Lewyt, president of vacuum manufacturer Lewyt Corp., 1955

原子力掃除機というものは、今後十年以内に実現できるだろう。

1955年、掃除機会社の社長、Alex Lewyt

Earliest weapons-grade plutonium found in US dump

一部引用

Update: Since publication, Jon Schwantes has discovered that a microgram sample of plutonium produced in 1942 by Glen Seaborg's group at the University of California in Berkeley is also plutonium-239. The sample discovered at Hanford is technically the second oldest sample of plutonium-239, but remains the earliest produced during the Manhattan Project and the first bulk batch anywhere.

An old glass jar inside a beaten up old safe at the bottom of a waste pit may seem an unlikely place to find a pivotal piece of 20th century history. But that's just where the first bulk batch of weapons-grade plutonium ever made has been found - abandoned at the world's oldest nuclear processing site.

But despite its historic significance, Schwantes doesn't plan to put the sample in a museum. He is working with New Brunswick Labs to create a standard reference sample for plutonium-239 from the material, partly because of its primacy as the oldest sample. "The other factor is its extreme purity - 99.96% plutonium-239 is as pure a sample of 239 I have seen produced from any reactor," says Schwantes.

まず最初の記事は、馬鹿げた技術予測の発言集というもので、有名なものとしては、"640kb ought to be enough for anybody."があるが(ビルゲイツが言ったかどうかは不明なのだが、それに良く似た実話はある。)

とにかく、1950年代のアメリカというのは、原子力に対して魔法のような期待があった。原子力を使えばなんでもできるという期待があったのだ。原子力で動く車や飛行機なども、まじめに研究されていた。原子力は確かにすばらしいのだが、何しろ被爆の問題があるので、そうおいそれと使うことはできない。結局、無尽蔵の電力が必要な潜水艦や、太陽から遠すぎて太陽電池が使えない惑星探査機などにしか用いられていない。ある意味残念なことではある。技術的には、持ち運びできる大きさの原子力電池が作れるはずであり、ノートパソコンを百年以上使い続けられるはずなのだ。しかし、ハンマーで叩き壊しただけで被爆するとあっては、そりゃあ実用化できるわけがない。

次のニュースは、ハンフォードの昔の核施設のゴミ山に捨ててあった、古い金庫の中に、世界で二番目に古い、精製されたプルトニウムが見つかったというもの。昔は核の取り扱いがおざなりで、そのゴミ山は放射能で汚染されているのだとか。しかも、そのプルトニウムの純度は99.6%であり、現代としても、研究試料として最高の純度であるという。

そう、ドクはフラックスキャパシターに必要な1.21ジゴワットを出すにあたって、プルトニウムを手に入れるの為にリビアのテロリストをだます必要なんてなかったのだ。ただハンフォードのゴミ山をあさるべきだった。まあ、一般人が立ち入れるかどうかは別として。

ともかく、昔は核に対する取り扱いが極めて雑だった。現代としても最高純度のプルトニウムが、ゴミ山の金庫の中に、それもスチールの机みたいな簡易な金庫の中に放置されているとは、おろそかすぎる。

なぜこんなニュースが気になるかというと、今、Fallout 3をやっているからである。

このゲームは、1950年代のアメリカ人が考えそうな未来という設定である。時代は2277年、2077年に起きた、米国と中国の間の大戦争(Great War)により、大規模な核爆撃が行われ、地球は不毛の地になったというものだ。草木はなくなり、すべての水は放射能汚染され、放射線を浴びた人間はゾンビとして不死になっており、また放射線によってスーパーミュータントという怪物が作り出された。いたるところで、戦前(2077年以前をさす)の遺物が残っているのだが、原子力電池や原子炉がとても気軽に使われている。たとえば、車の残骸は銃で撃つと爆発し、しかも、あたりは放射能汚染されるという有様である。

まあ、いかにもゲームらしい設定といってしまえばそれまでなのだが、この手のニュースを見るにつけ、どうも笑えなくなってくる。

聞説、XBox360やPS3で発売されている日本語版のfallout 3は、Fatmanという武器の名称が変更されており、また、原爆を爆発させるクエストも取り除かれている。余計な自主規制というものだ。それに、これはアメリカの話であり、アメリカの文化背景をネタにしたブラックジョークが随所にちりばめられており、日本語で楽しむのは不可能である。例えば、日本語でアンクルサム(Uncle Sam)といって、日本人の誰がその名前の意味するところを知っているだろう。ゲーム中では、"I have a private message from Uncle sam for you."などといった言葉がでてくる。それ真にFallout 3を楽しみたい者は、英語版を買うべきだ。日本語版を買っても後悔するだけである。だいいち、ゲームパッドのスティックで照準を動かすのは苦痛である。

2009-01-24

またかよデマゴーグ橋本

 橋下知事は冬の体育の授業にダウンジャケットを着て参加する子どもがいることを挙げ「冬でも半袖、半パンが原則。できない子どもにはフォローが必要だが、体力増強のためにはやり方がある」と持論を展開した。

静岡の西部(強風極まりない環境)ですら、小学生の頃は年中半パンを貫き通したこの私だが、体力増強には何の役にも立たない。根性で体力が上がると思ったら大間違いだ。運動をして体が温まってきたら、半そで半パンになってもいいかもしれないが、ウォームアップ時はウインドブレイカーぐらい着るだろう。

2009-01-23

意欲の沸かない時のための、面白リンク

いい加減に職業プログラマになることはあきらめたが、しかし意欲が出ない。最近は、読書と、昔の映画観賞と、ゲームで過ごしている。何とかしなければ。

とにかくこういう時は、問答無用で面白い動画や画像を見て笑うに限る。笑うことを学ぶのは重要だ。かの摩訶迦葉も笑ったではないか。

メキシコのプロレス

問答無用で面白い画像。

エクストリーム・バブルラップ(プチプチ君つぶし)。のどから手が出るほど欲しい。

エクストリーム・???。なんとコメントしていいのやら。

エクストリーム・フィッシング。コメントの必要なし。

エクストリーム・キャットハウス。レゴで作れないものは存在しない。

エクストリーム・クッキング。楽しいレジャーには、おいしい野外料理がつき物です。

エクストリーム・ウェブブラウジング。Let's play Crysis!

エクストリーム・ランチ。見晴らしは最高。

エクストリーム・メジャーメント。CRTはゆがみがあるので誤差に注意されたし。

エクストリーム・デロリアン。Don't forget to implement flux capacitor.

エクストリーム・フィッシングの成果。

2009-01-20

映画に思う

余、ひそかに思うらくは、今日のハリウッド映画は、ネタに困っているのではなかろうか。

まず、仮想敵というのがいない。冷戦、東西対立といったことがないし、ロシアや中国とは、ある程度の軋轢があるとはいえ、全面戦争などとなると、どう考えても自国の経済に与える影響のほうが大きいので、起こりようがない。北朝鮮や中東のカルト信者は、しょせん世界戦争を引き起こすだけの力はない。だから、宇宙人が攻めてくることもない。

未来への憧れというものもない。一時期、近未来ものの映画やドラマがたくさんあった。たいていは、時代を二千数十年に設定している。そこでは、車は空を飛ぶし、みんな画一的で個性のない、体にぴったりフィットする服を着ている。しかし、車が空を飛ばないのは、技術的なこともあるとして、個性のない服というものは、まったく問題はないはずだ。しかし、はやらない。やはり、個性が欲しいのだろう。

昔はSF小説が好きだったのに、今はSFなど、誰が書いているのか知らないし、読む気もしない。火星人がいるだとか、月にモノリスがあるだとか、土星に着陸するだとか、今日び、誰もそんなSF小説を書けやしないのだ。

2009-01-18

他言語を背景も含めて理解するのは難しい

TOEICのアンケートの部分に、英語の経験年数を答える欄があった。五、六年ぐらいだろうかと数えてみると、中学、高校、その後四年間とあわせて、なんと私は、実に十年も英語の経験がある計算になった。考えてみると、だいぶ長い間英語を学んでいるものだ。もちろん、かなり荒っぽい独学による学び方だが。

さて、振り返るに、私の英語力は、明らかに年々向上していると実感できる。今や、私はMSDNなどの技術文章を問題なく読むことができ、ハリーポッターなどの小説を楽しむこともでき、OblivionやFallout 3を字幕なしで遊ぶことができ、映画を英語字幕なしで観ることもできるようになり、Monty PythonやSouth Parkで爆笑することもできるようになった。

しかし、まだぜんぜん足りない。

さきほど、映画、Back to the Futureを観ていた。何でも、親父がふと欲しくなって買ってきたらしい。その中の、1955年のある場面で、WurlitzerのJukeBoxがあった。と、後から「WurlitzerのJukeBox」と書いてしまうのは簡単だが、私はWurlitzerを知らなかった。ただ、そのジュークボックスの形状は見知っていた。Fallout 3にでてくるジュークボックスだ。この形は有名なのだろうか。驚いたことに、JukeBoxでググると、イメージ検索で出てくるのは、ほとんどこの形である。どうやら、1950年代に、ジュークボックスといえば、この形だったらしい。Fallout 3というゲームは、1950年代の人が創造した未来というコンセプトがある。だから2277年という未来にもかかわらず、ディスプレイにはブラウン管を使っているし、コンピュータはCUIで、しかも巨大なテープデバイスまである。その世界に、このWurlitzerのジュークボックスを、よくみかける。なぜこんな形なのだろうと思っていたが、まさかこれが最もメジャーな形だったとは。

英語は上達したものの、アメリカの文化や時代背景をしらないので、真に理解できていなかったという話。

なお、Fallout 3では、いわゆるプロパガンダのため、"The Battle Hymn of the Republic"という音楽を流しているラジオというのがある。これも、日本人には理解できない。なぜならば、この歌の有名な邦訳が、原曲をまったく連想できなくしてしまっているからだ。

阪田寛夫作詞 ともだち賛歌

ひとりと ひとりが うでくめば
たちまちだれでも なかよしさ
やあやあ みなさん こんにちは
みんなであくしゅ
空には お日さま
足もとに 地球
みんなみんなあつまれ
みんなでうたえ

このメロディは、「権兵衛さんの赤ちゃん」という歌でも使われており、こちらは"John Brown's Baby"という歌の翻訳になっているのだが、これとて、もともとは"John Brown's Body"だったのだ。日本では、軍歌としてはまったく有名ではないので、Fallout 3でこの歌がかかっても、日本人である私は、どうしても、「ともだち賛歌」が頭に浮かんでしまう。

2009-01-11

TOEIC終了

五年ぶりにTOEICを受けてきた。前回は630点だったが、今回は何点とれるだろうか。手ごたえはあった。なにしろ、問題を全部解くことができたからだ。前回は、リーディングを最後まで終えることができなかったし、リーディングの理解の実感も少なかった。今回はかなり自身がある。

現在、すっかり疲れきっている。何しろ、二時間もの間、極限の集中力を持続させないといけないのだ。二時間も集中しなければならないというのは、日常生活ではまずないことなのだ。私のGoogle Readerは、ほとんど英語ブログで埋まっており、一日の大半を英語を読み、聞き、チャットしてすごすといえども、辞書を使うことができ、好きなだけ時間をかけられ、何度でも読み返したり聞き返したりできる環境なので、そう疲れはしない。ただTOEICは、聞き逃すとそれっきりなので大変だし、読み間違えると正解できない。ものすごく疲れた。とにかく疲れた。ビールがやけにうまい。

2009-01-10

特急天使、ネット対戦の描画バグ

ネット対戦のときのみ、描画がおかしくなり、ふしぎなゴミが移る。このマップ以外にも、ほとんどのマップで、不思議な別マップの残像のようなゴミが描画される。

GPUはGeForce GTX260。

特急天使、動画のエンコードテスト

Flash Player

http://zoome.jp/bookworm/diary/33

かなり動きが激しいので、画質が悪い。

2009-01-09

Google Chromeに新たなチャンネルが付加される

Chromium Blog: Google Chrome Release Channels

以前、Google Chromeには、Releaseチャンネルと、頻繁に更新されるが十分にテストされていないDevチャンネルがあった。今回、三つに増えることになった。

Stable channel。これは先のReleaseチャンネルであり、デフォルトである。
Beta channel。これはStableチャンネルより頻繁に更新されるが、そこそこテストされている。
Developer preview channel。これは先のDevチャンネルである。試験的な実装などは、このチャンネルで公開される。

チャンネルを変更するには、これを実行して、希望のチャンネルを選択する。

そして、Developer preview channelに更新が来た。興味を引く変更点は、以下の通り。

  • WebKitのバージョンをリビジョン39410に上げた。
  • 完全なズーム機能や(現在のズーム機能は、テキストのみ)、オートスクロールに対応している。canvasなどの新しいCSSにも一部対応している。
  • V8エンジンが0.4.6.0に更新された。
  • ネットワークコードを自前実装した。これまでは、WinHTTPライブラリを使っていたが、ポータビリティのためには、独自の実装が必要であった。もしこれによって機能しないサイトがあれば、報告して欲しいとの事。特に、認証を必要とするサイト。
  • Greasemonkeyに似たユーザスクリプトを実験的にサポート。詳細はここで読める。有効にするためには、引数に--enable-user-scriptsを渡すこと。まだかなりexperimentalだ。
  • HTTPSのみのブラウジングモードを追加。このモードでは、すべての接続をHTTPSで行う。HTTPSをサポートしていないサイトや、SSL認証にエラーのあるサイトは、アクセスできなくなる。このモードを使うと、HTTPSを謳いながら、SSL認証に問題のあるサイトが如何に多いかが分かると思う。

2009-01-08

四歳児のアメリカ人がショットガンでベビーシッターを攻撃

Police: Angry Ohio boy, 4, shoots baby sitter

オハイオ州ジャクソン(AP) 警察によれば、オハイオに住む、怒った四歳児が、押入れから銃を持ち出してベビーシッターを打つという事件が起こりました。打たれたのは十八歳のネーサン・ビーバーズ君という青年で、片腕とわき腹にショットガンによる軽症を受け、病院で手当てを受けているととのことで、警察によれば、別の青年も怪我をしたとのことです。

証言者が警察に語った話によりますと、男の子は、ビーバーズ君が誤って男の子の足を踏んでしまったことに腹を立てたとのことです。ビーバーズ君は、ジャクソンにあるトレーラーハウスで、別の青年らと共に、何人かの子供達の面倒を見ていました。

ジャクソン地方の判事であるジョン・シャスティーン氏は、調査中であるとしています。子供は起訴されていないようです。

一体何が悪かったのか。有害な歌のせいだろうか。あるいは、暴力的なゲームのせいかもしれない。幼稚園や近隣住人に問題はなかっただろうか。いや、暴力的なカートゥーンのせいだろう。特に、最近著しい、ジャップのマンガやアニメと称するものだ。

家にショットガンが、四歳児の打てる状態で置いてあったことは問題ではない。それはまったく問題ではない。銃は単なる道具だ。銃は問題ない。我々アメリカ人は皆、銃を持つ権利を有する。それが合衆国アメリカってものだ。

そういえばちょっと前、ドイツの学校で銃乱射事件が起きて、地元メディアは暴力的なゲームのせいだとか言っていて噴飯ものだった記憶がある。ドイツは先進諸国の中では最もゲームの規制の激しい国なのだ。なにしろ、バイオハザードの血を緑色にするぐらいなのだ。飛び散る血は赤い日本の学校で、銃乱射事件が起きないのはなぜか。実に世の中は不思議なことよ。

2009-01-06

司馬遼太郎

最近、司馬遼太郎の面白さが分かり始めてきた。司馬遼太郎の小説はつまらないが、随筆は面白い。ただ、司馬さんはだいぶ、空想が激しいのではないだろうか。その史実に関しては、だいぶ疑わしいところがある。

現在、「この国のかたち」を読んでいる。こんなに簡単で分かりやすい仏教の解説を始めて読んだ。

ドラえもんが現代的になった場合

ドラえもんをどこまで現代風にすべきかというのがニュースになっていたので、考察。

まず、のび太の住んでいる場所からして、空き地というのはなくなる。空き地が欲しければ、舞台を田舎に移すしかない。のび太のお父さんは、家にいるときも洋服を着るようになる。のび太の机は、重たいスチール製ではなくなる。

全員携帯を持っている。よって、情報伝達の不備による行き違いやすれ違いというストーリーは作りにくくなる。

空き地に集まって遊ぶかわりに、全員オンラインゲーム上に集まって遊ぶ。これによって、既存の様々なセリフの流用が可能になる。

スネ夫、「悪いなのび太。このクエ三人用なんだ」
スネ夫、「廃人のいとこがレアアイテムくれたんだ」
ジャイアン、「買ってきた武器の殴りぐあいをためさせろ」
ジャイアン、「お前のものは俺のもの、俺のものは俺のもの」

のび太はオンラインFPSゲームで無双の強さを発揮する。
Nobita:I got 'em all. Fuck Yeah!
other:Nobita is a cheater. kick him!

遅刻した生徒を、水の入ったバケツを持って廊下に立たせる先生は、児童の対する暴力と、教育を受ける権利を阻害したとして、すでに懲戒免職、あるいは停職されたうえで、自主都合による退職になっている。よって、先生が変わっている。

秘密道具について。
秘密道具には、やたらと薬が多い。これは麻薬を連想させるとして使えなくなる。また、カメラも多い。しかし、その形状はもっと小型になっている。

セワシは千年ぐらい先の未来からやってきたことになる。

2009-01-03

何故フロッピーをフォーマット中のWindows 95 は遅くなるのか

The Old New Thing : Why doesn't Windows 95 format floppy disks smoothly?

答え、16bitドライバ、TSR、糞BIOSとの互換性の為。

原文がだいぶ長いので、日本語に翻訳する気力が沸かないが、この文章は面白い。

Anybody who's done TSR programming (wow, the phrase anybody who's done TSR programming used to cover a lot of people but nowadays describes a few dozen geezers, most of whom are trying very hard to forget those days) knows all about the INDOS flag.

TSRプログラミングをした事のある人なら誰でも、INDOSフラグについてよく知っているはずだ。いやしかし、TSRプログラミングをした事のある人というのは、昔は相当な数のプログラマに当てはまったものだが、今となっては、数えるほどの数のオタクでしかない。いまや、大半の人は、ひどく忘れたがっている事だ。

Sure, if Windows 95 didn't have to be compatible with 16-bit device drivers, TSRs, and squirly ROM BIOSes, it could have gone straight to the 32-bit floppy driver to do the formatting without having to do all this timer and critical section nonsense. But it turns out we already had a product that said good-bye to compatibility with 16-bit device drivers, TSRs, 16-bit Windows programs that talked to custom 32-bit Windows 3.x drivers, and squirly ROM BIOSes. It was called Windows NT.

そりゃ、もし仮にWindows 95が、16bitドライバや、TSRや、糞BIOSなんかとの互換性を無視できたなら、直に32bitフロッピードライバから、タイマーやクリティカルセクションなんて関係なく、フォーマットできただろうよ。ところで、我々には、16bitデバイスドライバ、TSR、32bitのWindows 3.xドライバとやり取りする、16bitウインドウズプログラム、糞BIOSとの互換性を捨て去った製品がある。それはWindows NTと呼ばれている。

2009-01-02

英語の否定疑問文

もうすぐTOEICがあるので、最近はすっかり英語漬けだが、それでも感覚で理解できないことがある。否定疑問文だ。

通常の疑問文で、対象が猫であるかどうかを訊ねると、以下のようになる。

Question:Is it a cat?(質問:これは猫ですか)
If *it is* a cat:Yes it is.(猫である場合:はい、そうです)
If *it isn't* a cat:No it isn't.(猫ではない場合:いいえ、そうではありません)

上記では、対象が猫であるかどうか(it isかどうか)を訊ねているわけだ。そこで、Yes it is かNo it isn'tで答える。

Question:Isn't it a cat?(質問:これは猫じゃないんですか?)
If *it isn't* a cat:No it isn't.(猫ではない場合:はい、猫ではありません)
If *it is* a cat:Yes it is.(猫である場合:いいえ、猫です)

どう考えても納得できない。否定疑問文では、"it isn't"かどうかを聞いているのだから、もしそれがisn'tならば、すなわち質問者が正しければ、Yesで答えるべきではなかろうか。

Q:Isn't it a cat?
If it isn't a cat:You are 100% right! Whatever it is, I'm sure it is NOT a cat at all.
If it is a cat:WRONG! WRONG! WRONG! WRONG! You are the worst dumbass I've ever seen! Or are you blind? If not, It's better be gouged out your eyes 'cause it does not working at all. It IS a damn cat yelping damn mew. What else did you expected?

YESとNOは、日本人の感覚からは逆になっているにも関わらず、rightやwrongは、日本人と同じ感覚で用いることができる。

実に不思議だ。これは何も否定疑問文だけの話ではない。連中は単なる否定文に対してもこんな答え方をするのだ。

05:14 (hito_) a lot of quit and join...
05:15 (Elfish) 15.10 [Freenode] tomaw(i=tom@freenode/staff/tomaw) [Global Notice] Hi all, one of our hubs just disappeared taking services with it. We're looking in to the cause now.
05:15 (Elfish) seems like they've been having problems
05:17 (hito_) so this isn't my network problem.
05:17 (Elfish) nope

日本人としては非常に分かりにくい。

私は、この日本語と英語の否定文の受け答えに関する違いに対する、納得できる説明を聞いたことがない。他の言語ではどうなのか。

あるいは、YES/NOという言葉に、rightとかwrongなどという意味がないのであろうか。手元のLONGMANを引くと、YESに対しては、"used as an answer expressing agreement or willingness"とあり、NOに対しては、"used as an answer expressing refusal or disagreement"となっている。

違和感

保元物語、為義最期の事

山野の獣、江河の鱗に至るまで、命を惜しむ慣らいなり。まして、人間には、命に過ぎて思ふ宝は何かある。独身なる犯科人の思い置く事なきだにも、手足をもがれ、形をばやつさるれども、一日の命を賜べとは降は乞ふ。況や、為義法師、争でか命を惜しまざらん

何か、況やの部分で違和感がある。為義は命を惜しまなかったのだと読めて仕方がない。と思っていたら、注釈として、曰く、「況やは、……をや、……や、で結ぶ用法が本来であるが、中世になると、必ずしもそれは守られなくなる」とあった。そうだ、況や……と始まれば、……をや、……や、で終わるのが普通だ。違和感はこれだった。

司馬遼太郎の、この国のかたちの十三世紀の文章語を思い出した。