メッセージ。 - diary
2010-07-08
# Lispのマクロ
いまonLispを読んでるんだけど、半分ぐらいまできて思ったこと:
Lispのマクロって、コンパイラに似ている。マクロによって吐き出されたLispコードがマシン語で書かれたコードみたいに見えたというか。具体的にそう感じたのはこれ:
ということは、、というか、、Lispってコンパイラなんだ、とやけに腑に落ちた感じがした。
で、onLispはコンパイラの使い方を解説している本なんだ。マシン語としてのLispコードを、マクロでどうやって吐き出すか。どういう風にマクロを使うと、意図したコードを吐き出すコンパイルができるのかを解説している。
この本で解説しようとしているのは、マシン語としてのLispや、Lispマクロというコンパイラの仕組み、コンパイラができることとは何か?なんじゃないだろうか。そして、Lispがほかの言語と違う部分があるとするならそこだと指摘しているのではないか。まだ途中まで流し読みしただけだけど、そういうことが書かれている気がした。
Lispのマクロって、コンパイラに似ている。マクロによって吐き出されたLispコードがマシン語で書かれたコードみたいに見えたというか。具体的にそう感じたのはこれ:
(let* ((#:g1 x) (#:g4 ar) (#:g3 (incf i)) (#:g2 (aref #:g4 #:g3)) (#:g6 lst) (#:g5 (car #:g6))) (unless (> #:g1 #:g2) (rotatef #:g1 #:g2)) (unless (> #:g1 #:g5) (rotatef #:g1 #:g5)) (unless (> #:g2 #:g5) (rotatef #:g2 #:g5)) (setq x #:g1) (system:set-aref #:g2 #:g4 #:g3) (system:set-car #:g6 #:g5))
Lispのマクロが吐き出したLispコード
ということは、、というか、、Lispってコンパイラなんだ、とやけに腑に落ちた感じがした。
で、onLispはコンパイラの使い方を解説している本なんだ。マシン語としてのLispコードを、マクロでどうやって吐き出すか。どういう風にマクロを使うと、意図したコードを吐き出すコンパイルができるのかを解説している。
この本で解説しようとしているのは、マシン語としてのLispや、Lispマクロというコンパイラの仕組み、コンパイラができることとは何か?なんじゃないだろうか。そして、Lispがほかの言語と違う部分があるとするならそこだと指摘しているのではないか。まだ途中まで流し読みしただけだけど、そういうことが書かれている気がした。
2010-06-24
# 違うことと同じこと
先日、親戚の集まる機会があって、そのときうちの親父がこんなことを言っていた。
それを聞いたぼくは、「なにをまた馬鹿なことを言ってるんだ」と思ったのだが、そのときはうまく反論できなかった(このパターン多し)。それで、しばらくこのことについて考えていて思ったこと。
ぼくが思うのは。あなた方が子供たちに対し、「ああ、暑さや寒さを我慢しない世代が生まれたんだな」と見ているならば、その瞬間、またあなた方世代も同様に、「ああ、涼しい職場で仕事をして、暑さ寒さを我慢しない世代が生まれたんだな」と思われているということだ。
そうして同様に、汽車ができたときは「歩くことをやめた世代」が、電灯ができたときは「眠ることをやめた世代」が生まれてきた。……ということになるだろう。でも、そうだとするならば、ずっとずっとそれは続いてきたことなんだ。古い世代は若い世代を見て、「彼らは自分たちとは違う、新しい世代だ」と感じ続けてきたということになる。
しかし、だとすれば、そうだとすれば、そんなことに感嘆することに、どういう意味があるだろう。その感嘆のもととなったものは、「人類は歩みを続けているのだ」、「時間は進んでいるのだ」、「いまは近代だ」という感嘆なのだろうか? それならばいい。それならば、ぼくも共感できる気がする。でもぼくにはどうも、そうは感じられなかった。
「新しい世代が、自分たちとは違う存在だ」という指摘は、事実なんだろうか。事実だとしたら、実際「どう違う」のだろうか。違うからどうなんだろうか。なにが問題なんだろうというか、そこに差異を見出して、そこに線引きをして、いったいなにをしようというのだろうか。それがぼくには、よく分からない。
レトリックを少し取り除いてみれば、人類は、暑さ寒さを100%我慢しなくてよくなったわけじゃない。電車や自動車があっても、歩くことなしに人間は生きられないし、どんなに科学が進歩しても死は免れない。どんな強国の王様だって、風邪を引けばしんどいのだ。では本当に、そこにはどんな違いがあるのか。なにが違って、なにが同じなのか。
実際のところ、人がなにに感嘆しようが、ぼくには文句を言う筋合いはないし、なにかを説得したり、伝えたりするつもりもない。人間は多様だから、それぞれ好きなことを言い、好きなことに感嘆して生きればよい。誰のうえにも時は流れている。悠久の時間。
うちの子供たちが小学生のころ、学校にクーラーが備え付けられていると聞いてびっくりした。ぼくらのころは、クーラーなんてとんでもなかった。だから、小学校にクーラーがあると聞いて心底びっくりしたんだ。そしてこう思った。「ああ、暑さや寒さを我慢しない世代が生まれたんだな」と。
それを聞いたぼくは、「なにをまた馬鹿なことを言ってるんだ」と思ったのだが、そのときはうまく反論できなかった(このパターン多し)。それで、しばらくこのことについて考えていて思ったこと。
ぼくが思うのは。あなた方が子供たちに対し、「ああ、暑さや寒さを我慢しない世代が生まれたんだな」と見ているならば、その瞬間、またあなた方世代も同様に、「ああ、涼しい職場で仕事をして、暑さ寒さを我慢しない世代が生まれたんだな」と思われているということだ。
そうして同様に、汽車ができたときは「歩くことをやめた世代」が、電灯ができたときは「眠ることをやめた世代」が生まれてきた。……ということになるだろう。でも、そうだとするならば、ずっとずっとそれは続いてきたことなんだ。古い世代は若い世代を見て、「彼らは自分たちとは違う、新しい世代だ」と感じ続けてきたということになる。
しかし、だとすれば、そうだとすれば、そんなことに感嘆することに、どういう意味があるだろう。その感嘆のもととなったものは、「人類は歩みを続けているのだ」、「時間は進んでいるのだ」、「いまは近代だ」という感嘆なのだろうか? それならばいい。それならば、ぼくも共感できる気がする。でもぼくにはどうも、そうは感じられなかった。
「新しい世代が、自分たちとは違う存在だ」という指摘は、事実なんだろうか。事実だとしたら、実際「どう違う」のだろうか。違うからどうなんだろうか。なにが問題なんだろうというか、そこに差異を見出して、そこに線引きをして、いったいなにをしようというのだろうか。それがぼくには、よく分からない。
レトリックを少し取り除いてみれば、人類は、暑さ寒さを100%我慢しなくてよくなったわけじゃない。電車や自動車があっても、歩くことなしに人間は生きられないし、どんなに科学が進歩しても死は免れない。どんな強国の王様だって、風邪を引けばしんどいのだ。では本当に、そこにはどんな違いがあるのか。なにが違って、なにが同じなのか。
実際のところ、人がなにに感嘆しようが、ぼくには文句を言う筋合いはないし、なにかを説得したり、伝えたりするつもりもない。人間は多様だから、それぞれ好きなことを言い、好きなことに感嘆して生きればよい。誰のうえにも時は流れている。悠久の時間。
2010-04-14
# [日記]仕事で失敗
最近、仕事で失敗することがあって、ちょっとショボーンとしている。で、「どうしてあんな失敗したんだろう?、どうしたら次は失敗しないんだろう?」と考えている。
失敗の状況は、まぁこういう感じ:製品仕様を変更しようとしたけど、仕様じたいが間違っていて、かなり後ろの段階(本番直前のテスト)まで来てそれが発覚してしまった、と。
その仕様では特定のケースでworkしなかったのだけど、それに気付く人がいなかった、ぼくを含め。ただその仕様変更については、ぼくが責任をもって進めていたので、最終的にはぼくが一番悪い。
原因はいくつかあるのだけど、いま思うのはレビューの欠如とか、事前テストの欠如、それと仕様書をきちんと作らなかったこと、かなぁ。まぁこう書くと、「どうしてそんな当たり前のことをしてなかったの?」という感じだけど。
本当に小さい仕様変更だったのと、いろいろ噛み合わせが悪かったのだよなぁ…。「こういう仕様でいけますよ」と言ったら「例のアレやって。明日リリースね」みたいな感じで。なんかいろいろダメだ。当たり前のことがきちんとできていなかった。あーあー。
失敗の状況は、まぁこういう感じ:製品仕様を変更しようとしたけど、仕様じたいが間違っていて、かなり後ろの段階(本番直前のテスト)まで来てそれが発覚してしまった、と。
その仕様では特定のケースでworkしなかったのだけど、それに気付く人がいなかった、ぼくを含め。ただその仕様変更については、ぼくが責任をもって進めていたので、最終的にはぼくが一番悪い。
原因はいくつかあるのだけど、いま思うのはレビューの欠如とか、事前テストの欠如、それと仕様書をきちんと作らなかったこと、かなぁ。まぁこう書くと、「どうしてそんな当たり前のことをしてなかったの?」という感じだけど。
本当に小さい仕様変更だったのと、いろいろ噛み合わせが悪かったのだよなぁ…。「こういう仕様でいけますよ」と言ったら「例のアレやって。明日リリースね」みたいな感じで。なんかいろいろダメだ。当たり前のことがきちんとできていなかった。あーあー。