Macは欲しい。

Macキャズムを超えるか?
http://d.hatena.ne.jp/ogijun/20060308/p1

実際、カンファレンスのプレゼンターみるとホントMac率高いっす。

自分のイメージでは、

Mac:5
ThinkPad:3
Let'sNote:1
その他:1

といった感じです。

ところで、最近Macのノートがほしくて、よくラオックスMac館行くんですよねぇ。

でも、実際さわって躊躇してしまう。

トラックポイントがない...。」

会社のデスクトップPCですらトラックポイント付きキーボード使いの自分としては、ポインティングデバイストラックポイント以外考えられんのですよ。

で、結局ノートはThinkPadに落ち着くと。

Macのノートにトラックポイント付いたら、即買いするのになぁ。

ジョブスさん作ってくれないかなぁ...。

一般化と抽象化

一般化と抽象化は、普段ごちゃまぜに使われがちだけど、このふたつの単語はちゃんと使いわけたほうがいいと思っている。

英語でも、GeneralizationとAbstractionといったようにちゃんと違う単語になってるわけだし。

この二つには、似ているけれども同化することができない大きな境界線がある気がする。

例えば、

「3 * x + 5」や「7 * x + 2」を、「a * x + b」と表現するのは一般化だけど、これを抽象化とは呼べない気がする。

または、「人間」や「犬」を、「哺乳類」と表現するのは抽象化だけど、一般化とは呼べない気がする。

んじゃ、一般化と抽象化を使いわけると、どんないいことがあるのか?

...がわからない。

なんかある気がするのだが。

朧ろげなイメージとしては、「とにかく一般化していく。」というのはすぐに限界に達するけど、「とにかく抽象化していく。」というのは結構際限なくできそう、とか。

うーん、アバウト。また思いついたら、追記します。

追記:
もう一つ思いついた。プログラミングにおいて「一般化」を推し進めるとコードが理解しにくく、「抽象化」を推し進めるとコードを理解しやすくなる気がする。

素人くさいSICP読書会

行って来ました。とりあえず、自分にとって濃いめなトークができて満足。

id:thataさんが、「正規順序はHaskellみたいな評価順序。」と言ってて、そういえばHaskellって非正格な評価ともいわれるけどどう違うのだろ、と少し気になって調べてみた。

遅延評価(必要渡し)等と訳される。これらは、normal order evaluation(reduction)(正規順序簡約)とか、leftmost-outermost evaluation(reduction)(最左最外簡約)とかnon-strict evaluation(非正格評価)と呼ばれる。

http://sky.zero.ad.jp/~zaa54437/programming/concepts/index3.htm#e1

ということは、本質的には違いはないのかな?

最左最外簡約とも呼ばれるのか。評価順序って、結構奥深いですね。

「オブジェクト指向神話」神話

・「オブジェクト指向神話」神話
http://www.rubyist.net/~matz/20060120.html#p01

要するに「オブジェクト指向は万能ではない」または「適材適所」という話なので、一般論としては異論はない。私がいくらオブジェクト指向プログラミングの長年のファンだからといって、「万能」だとか「魔法の薬」、「銀の弾丸」のようになんでも解決すると主張するつもりはない。

とか言われても、C++とかJavaとかRubyとか、主流の「オブジェクト指向言語」を見せ付けられると、まるで「オブジェクト指向で何でも解決!」と言われている気がしてしまう。

だってさ〜、これらのプログラミング言語でプログラムを組むときって、とりあえず「Class」じゃん。Javaにいたっては「Class」無しではプログラム組めないし。(だったよね?) これって、プログラミング言語自体が「とにかくオブジェクト指向支援機能使え!」と言ってるような状態なんじゃない?んまぁ、それはいいすぎとしても、なんだか「オブジェクト指向支援機能利用の強制」を感じちゃう。もちろん、言語デザイナー的には、オブジェクト指向支援機能利用を強制した覚えはない、となるんだろうけど、個人的にはそう感じる。んじゃ、なぜこれらのプログラミング言語オブジェクト指向支援機能の使用を強制してくるんだろ?とか考えると、「オブジェクト指向は適材適所で使うと便利だよ。」なんて生易しい考えを越えて、まるで言語自体が「オブジェクト指向で何でも解決してやるから。」と言われてるように感じてしまうのも無理はないかと。

LispとCLOSの関係みたく、「オイラにゃ、オブジェクト指向支援みたいなモダンな機能はもっとりゃしませんが、それが便利だから使いたい、ってなら、ライブラリで供給しまっせ〜。」なんてスタンスなら、「オブジェクト指向は適材適所で使うと便利だよ。」なんてのも納得いくんだけど。

まぁ、結論づけると、「プログラミング言語」と「オブジェクト指向」の不必要なまでの癒着が、混乱の原因ではないかと。

あ、いや、だからって、プログラミング言語から「オブジェクト指向支援機能」をとっぱらえ!って話じゃないですよ。あくまで、「プログラミング言語」と「オブジェクト指向」の立ち位置を適切な距離にしようよ、って話。とりあえず、「オブジェクト指向言語」なんて言い方をやめるのも手かもね。