えー、三連休の初日ということで家族サービス。 この夏は寒くて泳ぎにも行かなかったので、プールへ。 子供たちは泳いだり、ウォータースライダーで遊んだり。 私は基本的にお湯につかっていた。
〆切前にこの余裕の行動は...そうです。逃避ってやつです。
レポートは提出した。
私は「Lispのマクロ」が悪だなんて言いません。あれはあれで便利なものです。
でも、「普通の人」に対するユーザビリティを下げる可能性があるとは思います。 だから、「普通の言語」には要らないかもしれない。
要はトレードオフですよね。使いこなすのが難しいが強力なものを目指すか、 普通の人が普通に使うぶんには使いやすいものを目指すか。
私は、Lispを研究することで
などを知りたいと思っているだけで、Lispがだめとか、Lispを変えようとか思ってるわけじゃないです。
だからLisp好きは自分の立場を擁護する必要はありません。
あのLispを使ったときが無い私が偉そうなことを書くことを最初に誤っておきたいと思います。
nobsunとのやり取りを見ていて、S式ってメタ言語ぽいなという印象を受けました。メタ言語とS式の利点と欠点って共通項が多そうじゃないですか?どうなんでしょうか?
>マクロは言語のパワーに必須か
必須では無いでしょうが、言語の仕様によっては必要な場合もあると私は考えます。コンパイル時実行(Eiffelのonceとか演算結果のキャッシュとか)とcall-by-name(インライン展開?)という機能が何らか方法で可能である言語ならば、マクロが無くても問題ない気がします。
自分にツッコミを入れておきます。
マクロとコンパイル時実行(Eiffelのonceとか演算結果のキャッシュとか)は関係ないやん。なぜかLispのマクロとC++のtemplateとを、ごちゃまぜにしてしまったようです。
> マクロは生産性の向上には有効、わかりやすさにはかなり不利
と結論づけられていますが、マクロによってコードをわかりやすくすることもできますよね? 私が今まで見たことのあるコードでは、マクロを使って簡潔に記述することによって、生産性と同時にわかりやすさも向上させている場合のほうが多いような気がします。
ところで、Ruby はイテレータなどで工夫しているなと思うのですが、繰り返し以外の用途でイテレータを使っている例などを見ると、マクロっぽい使い方をしているように思えるのですが、イテレータとマクロを比較するとどうなんでしょうか?