■ 風邪
風邪をひいた。
■ 実家まとめ
実家から帰ってきた。
- 実家の食事は健康的。
- 実家は寝ころがる場所がいたるところにある。
- 実家は暖い。
など、東京のアパートに帰ってきたところの環境と対比させてみると、実家は天国かと思った。
帰ってきてから気づいたのだが、今回は、友達に会ったのが二日。それ以外の日は煙草を買いに行く以外の用事ではまったく外出せず、居間でテレビを横目に見ながらずっと勉強していた。ひょっとしておれって勤勉なんじゃないか?と思わせる生活であった。
- 親に「バックラッシュとは何か」と聞かれた。
- 「最近の若者は保守的だ」という意味だと説明した。
- 今回よかったのは、両親とも工学系なので、はじめてそっち方面での交流の可能性がひらかれたことだった。
- FORTRAN+パンチカードでプログラムを書いた話などを聞く。
- 居間でRailsの本を読んでいたら「Rubyって何よ」って聞かれたので「Perlみたいなやつだ」と説明した(Perlは知っていたらしい)。
- さらにJavaScriptとJavaはまったく関係のない言語であることなどを解説した。
- 弟は生活時間帯がおかしい。ので一緒の家にいるにもかかわらずまったく存在感がなかった。
- 今回の家族交流のハイライト。
- 妹がPCのディスプレイに向っている。
- 通りすがりに後ろから見ると、見馴れたインターフェイスに流れるコメント。
- わたし「ニコニコ動画見てるの?」
- 妹「うん」(笑顔)
- わたし「いいよね、ニコニコ」
- なんかゲームの動画だった。
- ふだんまったくテレビを見ないので一年分くらいの量のテレビ見た。
- のだめのドラマなどを見た。最初はのだめの喋り方に違和感があったがすぐ慣れた。わりとおもしろかった。
- 小島よしおという人についてわたしはまったく知らないのだが、雰囲気をかきみだしても堂々と「でもそんなの関係ねえ」と開きなおるところが受けていると新聞に書いてあった。ひょっとすると、小島よしおが好きだというのは猫猫先生にあこがれる気持ちに似ているのだろうか。
- 札幌で買った『 東方河想狗蒼池』がとてもよかった。
■ クワイン化
自分自身を出力するプログラムのことをquine(クワイン)と言うらしい。
クワインという名称はもちろんかのウィラード・ヴァン・オーマン・クワイン大先生から(直接の由来は『ゲーデル,エッシャー,バッハ』らしい)。
わたしにはクワインを紹介する知識も資格もないが、クワインがどういう人だったかということは、デイヴィドソンによる下の発言がよく示していると思う。
それまで私は、哲学は芸術批評よりは厳密だとしても、科学ほどには厳密な学問ではないと思っていました。大学院の一年目に論理実証主義についてのクワインのセミナーを取ったことで、考えが変わりました。
『合理性の諸問題』p389
「哲学は科学ほどには厳密ではない」という(多くの哲学研究者も含め)ほとんどの人間が当たり前に受け入れている信念を書き換えられる人間など滅多にいないと思う。
それはそれとして、クワインを書いてみた。Lispは書けないのでJavaScriptで。いずれ他の言語でも書いてみよう。
まず関数を増やしていいんだったら。
(Firefox限定だったら、最初からtoSourceが使える)。
var k = function(x){return "(" + x + ")"};
var uneval = function(x){
if(x.toSource)return x.toSource();
else return k(x);
};
(function(x){
return x + k("uneval"+x);
})
(uneval(function(x){
return x + k("uneval"+x);
}))
増やしちゃだめって言われたらunevalの部分をベタ書きにすればいい。
(function(x){
return x + "(" + "\"(\"+" + x + "+\")\"" + ")";
})
("("+function(x){
return x + "(" + "\"(\"+" + x + "+\")\"" + ")";
}+")")
リンク先にあった自己参照プログラムも書いてみた。
(function(self){
/*なんか処理*/
})
((function(x,y){
return y + k(x + k("uneval"+x+","+"uneval"+y));
})
(
uneval(function(x,y){
return y + k(x + k("uneval"+x+","+"uneval"+y));
}),
uneval(function(self){
/*なんか処理*/
})
))
/*なんか処理*/の部分ではselfというキーワードでプログラム全体を参照できる。
(function(self){
alert(self);
eval(self);
})
((function(x,y){
return y + k(x + k("uneval"+x+","+"uneval"+y));
})
(
uneval(function(x,y){
return y + k(x + k("uneval"+x+","+"uneval"+y));
}),
uneval(function(self){
alert(self);
eval(self);
})
))
とすると、無限ループ。ブラクラになるので実行しないように。
トラックバック(0)
このブログ記事を参照しているブログ一覧: 雑記2008年1月8日(火)
このブログ記事に対するトラックバックURL: http://www.at-akada.org/mt/mt-tb.cgi/869
コメントする