継続とかFiberとか

「継続」という用語を知った。なんとなく知ったつもりになっていたC#イテレータの話とか、Fiberのこととかだいぶよく分かった。継続を使った非同期処理の簡単な記述とか、Rubyのあやしいcallcc、Ruby 1.9でサポートされたFiberのこととか。

Fiberは勝手にコンテキストが切り替わらないから、同期を気にする必要がないのかな? そうするとだいぶ気軽に使える。Fiberを使うデザインパターンもありそうだな。楽しそう。

帰り道にふっと、風が春っぽくなった。

そう感じたのは、冷たくないからか、花の匂いがしたからか。

それと同時に突然、ちょっと元気がわいてきた。

そうだ、コードを書こう。みたいな。

春は春休みの季節。春休みを思い出す季節。数年前は毎日、朝から夜まで好きなことに熱中していたような季節。

ゆで卵の「ゆで時間」って実は。

きれいにできた半熟卵


きょうはゆで卵再挑戦!

料理の本には「水の状態から約6〜7分茹でる」と書いてあったので、ゆうべはその通りにやったのだけど、殻ははがれないし白身は半分どろどろで黄身は完全に液状だった。

ようは、ゆで時間が足りなかったようなのだけど、ちゃんと時間は計った。おかしいおかしいと思っていて、きょうやっと、あることに気付いた。

実は「ゆで時間」って沸騰するまでの時間は含めないものなのか!?

それに思い当たってから、全部分かるまでは早かった。

そうだよ、沸騰までの時間はお湯の量に依存するじゃん! だから含めると考えるとおかしい。ってことは、「水の状態からn分茹でる」と書いてあっても、その「n分」は「沸騰してからn分」と解釈するのが常識なんですね!?

そういうわけで、きょうは再挑戦。

強火で沸騰までに3分かかった。ゆうべはこれをゆで時間に含めていたのだった。

そのあと沸騰状態を保てるように中火にして、きっちり6分計った。

殻が普通にむけるよすごい! きれいな半熟卵だよ。

ガスコンロの取扱説明書

ガスコンロの取扱説明書を読んでいる。

パソコンとか携帯電話の取説の最初にたくさん書いてある注意書きって、いつも、ほとんど当たり前だなぁ、と思って見てたのだけど、これは違う。知らないことがいっぱい。勉強になる。料理のことをほとんど知らないので。

どことどこが熱くなるから触ってはいけないとか、やけどを経験しないで覚えられるから助かる。

「魚を焼きすぎない」とか、焦げて食べられないからじゃなくて、火災の危険があるんですね。

2つあるコンロの左右で機能が違うとか、お店のひとに説明されるまで知らなかった。揚げもの用の方をしめすマークがメーカ毎に違うようだけど、標準化した方がいいんじゃないかな。

C++はどこ行くの。

A Brief Look at C++0xを読んで、今頃ながらC++0xのことを知った。

C++0xはいまのC++の改良版ということなので、言語のコンセプトは変わらないようで、ほっとした。いままでもこれからも "general-purpose programming language with a bias towards systems programming" (システムプログラミング向けに強化した汎用言語?)らしい。首尾一貫していることはすばらしい。「システムプログラミング」に絞りたいのか汎用なのか、立場が曖昧というか絶妙なあたりも昔からですね。

こんなサンプルが紹介されている。

1: template<class T> using Vec = vector<T,My_alloc<T>>;
2: Vec<double> v = { 2.3, 1.2, 6.7, 4.5  };
3: sort(v);
4: for(auto p = v.begin(); p!=v.end(); ++p)
5:     cout << *p << endl;

これを見て、2つの方向へ改良が進んでるんだなぁ、と思った。ひとつは、使うのが簡単になる方向。テンプレート引数の>>が普通に書けるとか、型を省略できるautoとか、単純にうれしい。これらは言語仕様のちょっとした追加で実現されていると思う。

もうひとつは、より便利で強力なライブラリを作れるようにする方向。ライブラリ作者向け。2行目とか3行目とか。これらは氷山の一角だろうけど、裏ではクラスやテンプレートの言語仕様をけっこう大胆に拡張してる気がする。個人的にはわくわくする反面、いまでも十分奥が深いのにもっと深くなることを思うと気が遠くなるよ。