2009-12-19

寒い

そろそろ、下駄や雪駄で外出するのが辛くなってきた。風流とは寒きものなり。

そもそも、下駄や雪駄で出歩くと、足が汚れる。風流とはむさきものなり。

しかし、足袋を履くのは、身分違いだ。

2009-12-18

いわゆる昔の女ニートの話

いつの事だか定かではないが、少なくとも、今から八百年は昔の話。旅人とその従者達が、宿を求めてさまよっていた。はや、日も暮れぬ、どこか風雨をしのげる宿のあらまほしきをと家々を巡っているうちに、ある大きな屋敷の前にたどり着いた。かつてはさぞかし立派な大福長者の屋敷にてもありなん。今は、門破れ、塀崩れ、荒れ果てたままになっていた。かかるところこそ、泊めてくれるものかもしれぬと、旅人は、門の前に立って、呼ばわった。
「今晩、ここに泊めてもらえぬか」と。

すると、屋敷の内より、ドタドタと足音高く、ひとりの中年女が走り出てきた。いかなる賤女(しずのめ)なれど、まだ多少はマシであろうに、この中年女は、実に醜悪な面をし、ボロボロの衣を着て、しかも、それを恥じることなく、門の前まで、大慌てで走ってきたのである。その醜悪な面に、どこか期待の表情を浮かべながら、
「よき事、よき事。さあさ、やどり給へ、やどり給へ」と、あわてて言った。

やれうれしやと旅人と従者は、あばれ屋敷のひと隅に座をとった。屋は多けれども、人の気配もなし。ただ独りこの中年女のみが住んでいるようである。思えば薄気味悪いところなれども、皆、旅の疲れに、すぐ眠ってしまった。

翌朝、一行は朝食を認め、はや出ていこうとするのを、中年女、またドタドタと品悪く走りでて、
「まてまて、行くな。」という。
「こはいかに」と問えば、
「おれの貸した金(こがね)千両、返してから出て行け。さあ、早く返せ、早く返せ」とわめく。

昨日から、この屋敷に薄気味悪さを感じていた従者ども、これにはさすがにこらえきれず、「あらじや、あらじや」といたく嘲り笑った。中年女も負けじと、「返せ、返せ」と、ほとんど狂人の体をなしてわめき返すばかりであった。

この旅人、「しばし」と言いて、荷物の中からなにやら道具を取出して、しばし手の内にて転がして、しばらく考えいるようであったが、ふと顔を上げて、こう言った。

「この親は、もし、易の卜(うら)という事をしていたのかな」
と問えば、中年女答えて、
「さあ、どうだったろうか。わからんけど、おのれの今やったようなことは、やってた気がする。」
「なるほど。千両の金を貸したから返せというのは、どういうわけかな」

聞かれて、中年女は語りだした。女の親の、まさに死なんとする折、こう言い残したそうだ。「十年後の、今日に、ここに旅人が来てやどを求めるだろう。その人には、わが金を千両貸してある。その旅人に金を返してもらうのだ。いいか、それまでは、この家の物を少しずつ売って、つつましく暮らすのだぞ」と。そこで、この女は、今まで家にある物を、少しずつ売って、今日まで暮らしてきたのであった。それが、今年となっては、とうとう売るべき物もなくなり、どうしようもなくなっているときに、旅人がやってきたのであった。

「その金というのは、あながち間違いでもあるまい。まあ見ていなさい」と、旅人は、従者を部屋から追い出すと、ある柱を叩いた。すると、どうも中が空洞になっているような、響く音がするではないか。
「金はここにある。開けて、少しずつ取り出して、使うのだ」と教えて、旅人は去っていった。

この女の親は、易の占いの上手であった。女のありさまを考えるに、今、女に千両の金を与えれば、久しからずして、すべて使い果たしてしまう事を知り、また、十年後の今日に、易の占いする男が、宿を求めに来ることをも知っていて、かかる事を言い残したのであった。旅人は、親の占い通り、易の心得ある者であったので、金の場所を占い出して、女に教えたのである。

易の占いは、行く末をはっきりを見通すことができるという。

しかしながら、この話を見ても分かるように、未来がわかるからと言って、必ずしも幸福になるとは限らないのである。この醜悪な女は、確かに親の遺産で、一生食うに困らず暮らせたのであるが、果たして幸福だったのだろうか。夫を持たず、何らの事業をもせず、ただ一生を無為のままに過ごしたのである。木の端と変わらぬ暮らしではあるまいか。現代の人は、ニートを現代社会の生み出した問題と捉えがちであるが、まさしく八百年前に、このような話があった以上、そう新しい問題でもないのである。

京の七條渡りで借上していたという肥満女は、このニート女の対極であろうが、それも、あまり感心できぬのである。とかくに人生は難しい。

参考:宇治拾遺物語、八 易の占金取出事

やる気を出すために、なにか文章を書こうと思ったら、こんなものが出来上がった。結局あの話しは、八百年前にも、ニートがいたというお話である。ついでに引き合いに出した、病草紙の肥満女も、あの時代に高利貸しのメタボ女がいたという話であり、なかなか面白い。

Claudia Black

Dragon Age: Origins で、Morriganの声優をしているのは、Claudia Blackである。

BioWareは、正しい声優を選んだと言える。Morriganそのものだ。

2009-12-17

東芝、グローランプの製造を中止す

東芝、グロー方式の点灯管を2010年3月で製造中止 - 家電Watch

電子点灯管があるのに、なんでいまだにグローランプが売られているのか疑問だった。東芝の他にも、グローランプを製造しているところはあるだろうから、まだまだ絶滅しないだろうけれど。

さすがは共産主義の国

中央日報 - 「ネット上のサイト、個人の所有認めず」/中国

今後、中国では個人がインターネットのサイトを所有できなくなる。

ポルノなど社会に有害なコンテンツの流布を防ぐための措置だというのが中国当局の説明だ。しかし一部は、同措置がインターネット上の自由を明白に抑圧するものであり、反政府勢力への監視を強化するのが狙いとして、反発している。

中国インターネット情報センターは14日、個人のインターネットサイト所有を禁じる内容の新しいインターネット政策を発表した。同センターは中国のインターネット上に流通するすべての情報を監視する政府機関だ。匿名を求めた同センターの関係者は「社会に有害な情報を広げるのを防ぐため、今後、個人的目的によるサイトは厳しく禁じる」と説明した。

ブログなど個人が運営するサイトは、以前のインターネットポータルやビジネス向けのサイトでのみ可能だということだ。すでに開設されている個人のサイトは段階的に閉鎖される。14日、アクセスが遮断された「nanjingtaobao.com」というビジネス向けサイトは同日、インターネットを通じて「当局の措置は明白にインターネット上の自由を抑圧するものだ。文革当時の抑圧も同然の今回の措置は即刻取り消されるべき」と強調した。

いたって普通のアカい国の出来事ですな。

2009-12-16

久しぶりにプログラマの求人を眺めてみたら

仕事が全く見つからないので、久しぶりにプログラマの求人を、ネット上で眺めてみたら、だいぶ様変わりしていた。

まず、派遣が壊滅的に減った。去年は猫も杓子も派遣ばかりだったというのに、彼らはいったいどこへ行ってしまったのか。不思議なことだ。

派遣の穴を埋めるかのように、直接雇用の求人が増えているが、いずれも、「実務経験」を求めている。その求人サイトは、とくに転職専用というわけでもないのに、面白いことだ。

C++の求人? そんなものあるわけがない。

浜名湖とダイダラボッチ

柳田國男は、浜名湖に関するダイダラボッチの話を聞き漏らしている。そこで、ここに書いておくことにした。

私は少年時代の大部分を静岡で育った。次のように聞いている。浜名湖は、昔、ダイダラボッチが手をついた跡であると。また、浜名湖の中には、つぶて島という、小さな島がある。これもまた昔、ダイダラボッチがおにぎりを食べていたとき、その中に小石が混じっていた。そこで、プッと吐き出したところ、それが今のつぶて島になったという。

粕汁

自分の場合、やる気が無くなると、体を動かさなくなる。体を動かさなくなると、腹が減らなくなる。つまり、食欲不振となる。

太宰治の人間失格の冒頭とは、つまり、メシを食う程の気力もなくなった状態ではなかろうか。

そうは言っても、数日ろくに食わずにいると、流石に腹が減る。冷蔵庫の中を除くと、白菜とつみれと酒粕がある。そういえば、この白菜とつみれは、数日前に買ってきたのだった。早く食べなければならない。

そんなわけで、粕汁を作った。白菜を全部切り刻んで放り込んだので、具はほとんど白菜になってしまったが、まあ、仕方がない。残しても腐らせるだけだし。

弁慶とダイダラボッチ

弁慶の足跡と称するものは、全国に沢山あるが、どうも、もともとはダイダラボッチの足跡だったらしい。ダイダラボッチの名前が通じない場合、たんに大人(おほひと)と呼んでいたのだが、次第に、あの仁でもよろしということになったらしい。

2009-12-14

日記

やる気がでない。本当にやる気がでない。困ったな。

柳田國男の読書は遅々として進まない。Le Morte d'Arthurも読んでいたが、最初の数章で止まってしまった。漢文も、最近は読んでいない。

ゲームも、最近は面白いものがまったくない。The Elder Scroll 5は、いつになったら出るのだろう。ここ最近、Dragon Age: Originsを始めた。ストーリーは面白いが、戦闘がつまらない。あと、英語がかなり難しい。というのも、固有名詞が極端に多いので、聞いていてもいまいち理解出来ないのだ。その固有名詞の解説は、後でcodexを読まなければならない。ということは、会話を理解するには、二周するしかないのだ。

C++0xも、新しい動きがあるまでは、暇だ。ただ、Boost勉強会を、関西でも開こうという動きがあるらしい。それは興味がある。

だいたい、最も優先すべきことは、仕事を見つけることである。これも、さっぱりやる気がでない。どこかにBoostをバリバリ使うような仕事はないものか。そんな仕事は、あいにくとさっぱり見つからない。結局、私はプログラマとしては向いていないのだろう。

結局、私は身の丈に合わぬ理想を追い求めているような気がする。

2009-12-12

oldnewthing: マヌケは誰だ?

The Old New Thing : Only an idiot would have parameter validation, and only an idiot would not have it

引数チェックの面白いところは、ある者は、マヌケのみが使う機能だと主張し、またある者は、マヌケは利用しない機能だと主張することである。

古き良き時代では、Windowsは、引数チェックなど行っていなかった。もし、ある関数を無効なウインドウハンドルで呼んだならば、アプリはクラッシュする。ある関数を無効なポインタで呼んだならば、アプリはクラッシュする。ある関数を無効なビットマップハンドルで呼んだならば、アプリはクラッシュする。

かつては、よほどたくさんのクラッシュがあったわけだ。

この手のクラッシュは、修復不可能なアプリケーションエラーダイアログとして、表示されることになる。つまり、UAEメッセージとして知られている。

Windows 3.1は引数チェックを、KERNEL, USER, GDIのすべての関数に追加した。もし、アプリが無効なウインドウハンドルを渡した場合、クラッシュする代わりに、エラーが返されるのだ。

この変更はあまり喜ばれなかった。「ふーん、あっそう。とうとうやるべきことをやり始めたってわけだな。引数チェックをしないってのは馬鹿げてるしな」

しかし、今日では、引数チェックは、どうもまた道をそれてしまったようだ。無効な引数を検知して、エラーコードを返した場合、それは、単にアプリのバグを先送りにしただけなのだ。むしろクラッシュして、クソみそでウザいエラーメッセージを表示すべきなのだ。

つまり、我々は引数チェックを追加する前の時代に戻るべきなのだ。(まあ、クソウザいエラーメッセージはともかくとして)

はたしてマヌケは誰だ?

わざわざ引数をチェックして、エラーを静かに処理して、アプリのバグを先送りにするぐらいなら、クラッシュしてくれた方が、まだマシだったいうお話。

2009-12-11

帰宅

予備自補の訓練より帰宅。

今回はつかれた。久しぶりに酒を呑むことにした。

そして、だいぶ酔った。QueenのDon't Stop Me Nowを延々とリピート再生している。

2009-12-06

またまた

五日間留守にします。

しかし、この一週間は、面白い出来事が多かった。Google日本語入力、Google Public DNS、学研の科学と学習が休刊になったこと、

イフカルト:荒木先生が描いたナルトがとんでもない件
さすがは荒木先生。

@nifty:デイリーポータルZ:メガネが曇らないマスクはこれだ!
参考にしよう。

@nifty:デイリーポータルZ:狛犬をよく見たら子犬がいた
古い狛犬に多いらしい。どんな由来があるのだろう。

あの吉良吉影のネクタイが商品化!JOJO「KILL・A’s tie」:ザイーガ
She's a Killer Queen
Gunpowder, Gelatine
Dynamite with a laser beam
Guaranteed to blow your mind

2009-12-05

年を取ったのか、最近の漫画が理解できない

暇人\(^o^)/速報 : 【画像有】今月のテニスの王子様がとんでもないことになってる件 - livedoor Blog(ブログ)

だめだ、もう理解できない。私は年を取りすぎたものと見える。

まあ、ジャンプといえば、ギャグマンガから始まって、愛と勇気と友情のトーナメント戦へと発展していくのは、王道である。なぜそんな風に進むかというと、結局、人気の出た漫画を、その最初の構想を無視して、なんとか続けさせるためには、トーナメント制の格闘に移行させるのが、ジャンプとしての方法なのだろう。主人公は敵を倒すために成長せねばならず、そうなると必然的に、次の敵はもっともっと強くなければならない。そういうことが繰り返された挙句、どうしようもないほど、インフレが起きてしまうのだろう。

それを防ぎたかったら、一話完結型のギャグマンガにするしかない。

しかし、大衆というのはこんな漫画を求めているのだろうか。短く簡潔に数巻で終わって、なお面白い漫画というのは、当然あるはずだ。それを、このようにだらだらと引き伸ばして連載を続けても、面白いわけがないと思うのだが、大衆はむしろ、引き伸ばしを好むのか。

この手の引き伸ばしは、漫画に限った話ではない。最近私は、小説を読むことができなくなった。とくに、長い小説を読むことができないのだ。別に、長文が読めなくなったというわけではない。読解力は、むしろ年々上がっていると思うのだが、長文小説は読めない。というのも、長文小説の中盤になると、明らかに、作者が字数を埋めるだけの意図を以て、文章を書いているということが、あからさまに分かってしまう。はたして、文章に長さは必要であろうか。言いたいことができるだけ短い文で表現できれば、それで十分ではあるまいか。

そんなわけで、私は今、現代小説を全く読んでいない。

あるいは、私は年を取りすぎて、長い話が楽しめなくなったのだろうか。

洗車失敗

かつてSnoop Dogg云へり、「宜しく汝のホースを抑ふるべし」と(HorseとHoseをかけている)

2009-12-04

いかにしてWebデザインがクソみそになってゆくか

How a Web Design Goes Straight to Hell - The Oatmeal

顧客「俺は社長だからもっと口を出すぜ。俺が仕事したっていう自己満足が欲しいんだよ。分かんだろ? なあ? 『ユーザーエクスペリエンス』とか『コンバーション志向』って用語もカッコいいからじゃんじゃん使うぜ。あと、俺はコンピューターの使い方なんてしらねーんだよ。悪いかタコ」

顧客「もうちっとデザインをポップにしてくれんかね。あとエッジーにしてほしいもんだな。なんかこのままじゃイメージと違うんだよなー分かんだろ? なあ?」

顧客「直角が多くて困るんだよなあ」

顧客「俺のカーチャンの意見も取り入れようと思うんだ。1982年当時は現役だったんだぜ。だからデザインには目があるってもんだ」
顧客の母「ねこよ。ねこを入れるべきよ。だってみんなネコは好きでしょ?」

顧客「俺の飼ってる犬ミッフィルは家族も同然だ。うちのわんこが語りかけているようなデザインにしたいもんだな」

顧客、WebサイトのスクリーンショットをPhotoshopで修正して、送りつける。

時代の変化を拒絶する人々

どうやら、Google日本語入力の予測変換を気に入らぬ人がいるようだ。曰く、「予測変換は偏っている」、「予測変換に我々の日本語が支配せられてしまう」、云々。

一昔前の、「ワープロでは正しい日本語が書けない。宜しくペンを使うべし」という議論を彷彿とさせる。この議論は、今や、「どうでもいいじゃないか」の一言で、片付けられてしまう。

実際、どうでもいいのである。時代というのは常に、「甲なのか乙なのか」と争っているうちに、「実はイロハなんだ、ABCDなんだ」といわれて、甲乙などどうでも良くなってしまうのである。

ただし、あえてこの議論に乗っかるとすれば、予測変換の利点と、彼ら時代遅れの老害の非を、上げることはできる。

彼らはいう。「予測変換は我々の日本語を制限する。例えば、だ・である調で書きたいとしても、変換候補がです・ます調であれば、面倒なのでそちらを使ってしまうだろう」と。またいう、「予測変換は、時として不思議な変換を行うので、到底仕事で使うことはできぬ」と。

ひとつめの非難に対しては、ソフトウェアが学習機能というものを設けて、ユーザーの癖を学習すればいいだけの話である。ふたつめは、そもそも従来のかな漢字変換ですら、誤変換が多いのである。してみれば、彼らは従来のIMEをも、仕事で使うことはできぬであろう。

プライバシーの問題も叫ばれている。がこれは、別にGoogleに限った話ではないだろう。

ベジタリアンも喰える肉、開発さる

Meat grown in laboratory in world first - Telegraph

とうとう人工肉が開発された。

やっていることは、生きている豚の筋組織を採取し、培養するだけである。

つまり、ベジタリアン(笑)も安心して食べられる肉だということだ。なぜなら、彼らの肉を喰わない理由というのは、主に、「動物様を屠殺するなんて許せん」、ということなのだから。その割には、彼らは植物様を殺して食べたり、植物様の命を弄ぶ品種改良された野菜を食べることには、躊躇しないようである。この矛盾を、彼らはどのように解決しているのか、それは私の知るところではない。

2009-12-03

Mark Russinovich、MinWinについて語る

Mark Russinovich on MinWin, the new core of Windows | Software News - Betanews

Google日本語入力の面白予測変換集

Google日本語入力の、面白予測変換の例をいくつか見つけたので、ここにメモしておく。

ただしま
ただし魔法は尻から出る
ただしい
ただしイケメンに限る
ひとがご
人がゴミのようだ
なにをする
何をするだァーッ
たいほ
逮捕しちゃうぞ
しんせいき
新世紀GPXサイバーフォーミュラ
こちらか
こちら葛飾区亀有公園前派出所
こいするお
恋する乙女と守護の楯
おさななじみ
幼なじみはベッドヤクザ
れれれ
レレレのおじさん
まほうじ
魔法陣グルグル
じょじょの
ジョジョの奇妙な冒険
やまだお
山田オルタナティブ
くそみ
くそみそテクニック
みこみこ
巫女みこナース
ぎおんし
祇園精舎の鐘の声
きみが
君が主で執事が俺で
まぶら
マブラヴオルタネイティブ
きみがの
君が望む永遠
きしんほ
機神咆吼デモンベイン
みらいへ
未来への遺産、未来への咆哮
とばくも
賭博黙示録カイジ
とばくは
賭博破戒録カイジ
らきすた
らき☆すた
きどう
機動戦士ガンダム
きどうぶ
機動武闘伝Gガンダム
はたらい
働いたら負けかなと思ってる
まほうしょ
魔法少女リリカルなのは
ちょうじく
超時空要塞マクロス、超時空世紀オーガス、超時空騎団サザンクロス
こうかくき
攻殻機動隊
よーし
よーしパパ特盛頼んじゃうぞー
あたらな
当たらなければどうということはない
ぼうや
坊やだからさ
おやじに
親父にもぶたれたことないのに
せいきま
聖飢魔、世紀末リーダー伝たけし、世紀末の魔術師、世紀末の詩、世紀末覇者
わたしが
私がクマにキレた理由
ざんぎゅ
ザンギュラのスーパーウリアッ上
いんどじ
インド人を右に
じゅげむ
じゅげむじゅげむナンタラカンタラ
ふとんが
布団が吹っ飛んだ
あつは
アツはナツいね
あるみかん
アルミ缶の上にあるミカン
それはわたしの
それは私のおいなりさんだ

どうも、主にエロゲのタイトルが、面白い予測変換を引き起こす原因となっているようだ。

ところで、たまに変換がおかしい場合がある。例えば、「お茶を淹れる」が変換できない。そもそも、「淹れる」という単語が存在しない。そういう場合は、以下から報告することができる。
誤変換報告フォーム - Google 日本語入力 ヘルプ

Google日本語入力がすごすぎる

Google 日本語入力 - ダウンロード

Google日本語入力は、Yet Another Japanese IMEである。これはすごい。何がすごいかと入って、辞書だ。漫画やアニメの単語は、ほぼ一発で変換してくれるし、ネットスラングの類も、一発変換できる。さらに、サジェスト機能も優秀だ。

空条承太郎
空条徐倫
荒木飛呂彦
覇王翔吼拳を使わざるを得ない
滅殺豪波動
瞬獄殺、春獄殺
狼牙風風拳
界王拳
魔貫光殺砲
波紋疾走
二重の極み
北斗百裂拳
二指真空把
岩山両斬波
華山群狼拳
邪気眼
エターナルフォースブリザード
パッド長
幻想郷、紅魔郷、妖々夢、萃夢想、永夜抄、花映塚、風神録、緋想天、地霊殿、星蓮船
博麗霊夢、霧雨魔理沙、射命丸文、河城にとり

驚くべし。これらは皆、一発で変換できる。

2009-12-02

うげ、これはまずい

template<class InputIterator, class OutputIterator> OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result);

Requires: result shall not be in the range [first,last).

template<class InputIterator, class OutputIterator> OutputIterator move(InputIterator first, InputIterator last, OutputIterator result);

Requires: result shall not be in the range [first,last).

うわ、やっべ。俺の書いた既存のコード間違えまくりんぐ。

というのも、VC++のmoveやcopyは、メタプログラミングによって、使える場合はmemmove()を使っているので、コンパイルが通り、普通に動くのだ。

シンタックスシュガーとしてのlambdaの解説

本の虫: lambda 完全解説で、lambdaの全機能は、ほぼ網羅したと思う。lambdaの文法は、それほど難しくはないと思うのだが、難しいと感じる人がいるらしい。とくに、キャプチャが理解できない人がいるそうだ。そこで今回は、lambdaの根本を解説してみようと思う。

lambdaというのは、そもそも関数オブジェクトのシンタックスシュガーなのである。例えば、

namespace hito {

template< class InputIterator, class Function >
Function for_each(
    InputIterator first,
    InputIterator last,
    Function f )
{
    for ( ; first != last ; ++first )
        f( *first ) ;

    return f ;
}

}


int main()
{
    std::vector<int> v ;

    for ( int i = 0 ; i != 10 ; ++i )
        v.push_back(i) ;

    hito::for_each(v.begin(), v.end(),
        [](int x){ std::cout << x << std::endl ; }
    ) ;
}

このコードは、これ以上ないくらいに分かりやすいC++のコードである。今、for_eachのしていることを分かりやすくするため、自前で実装してみた。for_eachは、イテレーターに対して、引数として與えられた関数オブジェクトを呼び出すのである。関数オブジェクトは、この場合、lambdaである。

とはいえ、lambdaを理解できない人間は、このコードもまた、理解できないのである。では、以下のように書き換えてはどうか。

struct lambda
{
    void operator ()( int value ) const
    {
        std::cout << value << std::endl ;
    }
} ;


int main()
{
    std::vector<int> v ;

    for ( int i = 0 ; i != 10 ; ++i )
        v.push_back(i) ;

    std::for_each(v.begin(), v.end(),
        lambda()
    ) ;
}

このように関数オブジェクトを渡しているに過ぎないのである。lambdaは所詮、関数オブジェクトのシンタックスシュガーであることが、実感できたことと思う。

しかし、変数のキャプチャはどうか。例えば以下のコード。

int main()
{
    std::vector<int> v ;

    for ( int i = 0 ; i != 10 ; ++i )
        v.push_back(i) ;

    int sum = 0 ;

    std::for_each(v.begin(), v.end(),
        [&]( int value ){ sum += value ; }
    ) ;

    std::cout << sum << std::endl ;
}

これは実に不可思議である。lambdaが関数オブジェクトであるのはまだしも理解もできようが、なぜ、その関数オブジェクトであるlambdaが、定義された場所の関数の変数を、自分でも使えるのか、理解に苦しむ。こんな奇妙なことが、単なる既存の関数オブジェクトのシンタックスシュガーであるわけがない――と思うかも知れない。

しかし、依然としてlambdaは、関数オブジェクトのシンタックスシュガーなのである。

class lambda
{
private:
    int & sum ;

public :
    lambda(int & ref) : sum( ref )
    { }
    
    void operator ()( int value ) const
    {
        sum += value ;
    }
} ;


int main()
{
    std::vector v ;

    for ( int i = 0 ; i != 10 ; ++i )
        v.push_back(i) ;

    int sum = 0 ;

    std::for_each(v.begin(), v.end(),
        lambda( sum )
    ) ;

    std::cout << sum << std::endl ;
}

ご覧のように、lambda関数オブジェクトは、コンストラクタの引数で、その関数内の変数を参照に取るだけである。lambdaのキャプチャとは、根本的には、この程度のものなのである。

C++0x以前では、関数オブジェクトは、お世辞にも、活用されているとは言い難かった。既存の関数ポインタより圧倒的に便利なのだが、如何せん、その文法が汚い。上記のlambda関数はいずれも、たった一行の、短いコードである。本質的には一行のコードを書くために、関数オブジェクトは、あまりにも文法上必要なゴミが多い。そのため、使用を敬遠されていたのだ。lambdaなら、その場所に、直に書くことが出来る。

lisp、python、javascript、ruby、C#等の言語を話す人からみたら、C++のlambdaは、制限が多いように思われるかも知れない。しかし、強い静的な言語であるC++としては、仕方がないのである。

2009-12-01

oldnewthing: WIN32_LEAN_AND_MEANの由来

The Old New Thing : Where did WIN32_LEAN_AND_MEAN come from?

asdfはWIN32_LEAN_AND_MEANの由来が疑問であるようだ。

WIN32_LEAN_AND_MEANシンボルは、Windows 95時代に、windows.hをincludeした際、多くのヘッダファイルを省略する目的で導入された。windows.hを覗けば、どのファイルが省略されるのかが分かる。

このシンボルは16-bit Windowsから32-bit Windowsへの移行の一環として、追加されたものである。16bitのwindows.hは、多くのヘッダファイルをincludeしておらず、WIN32_LEAN_AND_MEANを定義することによって、16bit Windowsの、Windows プログラムを書くに当たって最小限のヘッダという思想を、取り戻すことができるようにするものであった。これは、ヘッダファイルを細かく自分で管理したいプログラマに歓迎されたし、また、利点もあった。というのも、このシンボルが作られた当時は、プリコンパイルドヘッダーファイルは、一般的ではなかった。私の記憶する限りでは、50MHzの80486に8MBのメモリでは、WIN32_LEAN_AND_MEANを使うことによって、Cファイル一個あたり、三秒のコンパイル時間の短縮に繋がったのである。あるプロジェクトで20個のCファイルを使っていたならば、実に一分間もの時間の節約になる。

ムーアの法則とプリコンパイルドヘッダーとが、WIN32_LEAN_AND_MEANを、ほとんど無用にしてしまった。もはや、時間の短縮にはならぬ。しかしある時代では、確かに役立っていたのだ。

帰宅

予備自補の訓練より帰宅。

予備自補の訓練で、前々から思っていることをひとつ。

予備自補の訓練は、五日間単位で行われる。駐屯地の中は、かなりの異世界である。どのように異なっているかを文章で表現するには、遺憾ながら私の筆の及ぶ所ではない。ただし、強いて拙筆を用いれば、駐屯地の中は、外との接点があまりないと、隔絶された別世界である。加ふるに規則正しい生活を以てす。

つまり、訓練は非日常であり、精神的に疲れるのである。精神が疲労すると、自ずと挙動に表れてくる。では、予備自補の訓練においては、どのような挙動に表れるのか。下ネタである。

人の精神というのは、以外と脆いものである。

ちなみに、すでに達観した感のある私としては、「枯楊春老更生稊(こやうはるおいてさらにていをしょうず)」といった具合なのだ。もうトシだろうか。そういう話にはついて行けない。