«前の日記(2007-02-04) 最新 次の日記(2007-02-06)» 編集

Matzにっき


2007-02-05 [長年日記]

_ [言語] らいおんの隠れ家 - ポール・グレアム「プログラミング言語が解決するもの」

プログラミング言語は新たな問題を解決するために誕生した。 というか、問題を解決しない言語は生き残れない。 その視点は鋭い。

で、Rubyに対して「Perl is a kludge, and Lisp syntax is scary」(Perlはその場しのぎだし、Lispの文法はおっかない)という観察もまた鋭い。

っていうか、Paul GrahamはRubyの仕様だけ見て、 私のLispへの傾倒と、その一部(S式とかマクロとか)の忌避に気づいたのかしら。 そのことについて彼と話したことはないはずだけど。

だとしたら、たいしたもんだ。

弾さんによる増補もある。

_ [言語] Scheme:使いたい人のための継続入門

ちょっと新しい視点からの継続入門。

でも、なんか途中からわかんなくなっちゃうんだよなあ。 部分継続にいたってはサッパリ。

CPSそのものに対する理解の不足かしら。

_ [Ruby] 思っているよりもずっとずっと人生は短い。 :=オペレータ

高橋(Maki)さんによる:=オペレータへの反対意見。

  • 「:=」をどういうときに使えばいいか説明するのが難しそう(特に初心者に)
  • JavaScriptのvarの類推からすると、「とりあえず:=にしとけばいいよ」的になって、何でもかんでも:=がつきまくる恐れがある。それは本意ではないのでは? 結局「=」と「:=」のどっちを推奨したいのか?
  • ブロックの外にある同名の変数を参照できない。参照するためにはrenameして……とかやるくらいなら最初から別名にしとけばいい?
  • 元々の動機が「ブロックにブロックローカルな変数を導入したい」ということなら、ブロックの最初に書けばよいことで、どこでも使える:=を導入するのは強すぎでは?

まあ、わからないでもない。一応反論しておく。

「:=」をどういうときに使えばいいか説明するのが難しそう(特に初心者に)
「:=で代入された変数はブロックローカル」とだけ伝えておく。 初心者は「:=」を使う必要はない。 本当に必要になった時に思い出せば十分。
JavaScriptのvarの類推からすると、「とりあえず:=にしとけばいいよ」的になって、何でもかんでも:=がつきまくる恐れがある。それは本意ではないのでは? 結局「=」と「:=」のどっちを推奨したいのか?
適材適所。というか、「:=」が必要になることはまれなので、普段は「=」で十分。
ブロックの外にある同名の変数を参照できない。参照するためにはrenameして……とかやるくらいなら最初から別名にしとけばいい?
ブロックローカルは別名で代用できない。 「参照のためにrenameして」という問題については、 ネストするスコープのある言語すべてに言えることなので。 ネストしない言語が少数派であることを考えると、 この件は重大ではないのではないかと
元々の動機が「ブロックにブロックローカルな変数を導入したい」ということなら、ブロックの最初に書けばよいことで、どこでも使える:=を導入するのは強すぎでは?
決まった場所にしか置けない「宣言」はRuby的ではないような。

_ 出張

社長と一緒に出雲空港へ行き、 一緒に伊丹に移動。これから長期出張だ。

伊丹からバスで関空。思ったより遠い。 どうせなら大阪の空港は関空で一本化して、 ハブ空港にしてくれたら、いろいろと便利なのに。 東京が羽田と成田でめちゃ遠いのにあきたらず 大阪まで国内空港と国際空港がこれだけ離れているというのは どういうことかと。

その後、井上社長のチケットでラウンジで過ごした後、 UAでサンフランシスコへ。

機内では『守護神』を見た。 面白くなかったとまでは言わないが、ちょっとベタな展開。 おまけに数日前にラジオで浜村淳がしゃべっていた内容そのまんま。 「ここからは言えない」、「あとは劇場で」とか言ってたけど、 結局全部しゃべってるじゃないか、あのヒトは。

_ サンフランシスコ観光

我々関空勢と成田、セントレア組と合わせると 総勢18名にもおよぶ視察団。多いぞ。

サンフランシスコ空港はいままでトランジットで何度も使ったことがあるが (パスポートでスタンプ数えたら4回目だった)、 降りるのは初めて。

空港でガイドの人に連れられて市内観光。 着いて早々引き回されるのは時差ボケの解消のためだろうか。

空港から市内、ツイン・ピークスから市街を眺める。 口数の多いガイドさんによると

  • サンフランシスコは意外と狭い。 山の手線内くらいの範囲に80万人くらい。
  • 主要な産業は金融と観光。

ふぅん。

ゴールデンゲートブリッジ。 テレビで見るのとまったく同じだが、 昭和12年完成とは知らなかった。 うちの親父と同い年じゃん。

アルカトラズが遠くに見える。

その後、フィッシャーマンズワーフに移動。 昼食はカニ。カニはここの名物なんだってさ。 (近所の温泉宿で喰わせるような)日本的なカニよりも ずいぶん身が詰まっている。しかも、でかい。 カニまでアメリカンサイズである。

食事後、おみやげを買ったり、 (野生の)アシカを眺めたりする。

ホテルに移動。宿泊先は Crowne Plaza Union Square。 移動途中のチャイナタウンとか面白かった。 なぜかみんなピンクのプラスチックバッグ抱えてたりするのも。

インターネット接続が高い。 1日10ドル。1週間で35ドル。 アメリカのホテルってどうして無料でネットを提供しないんだろうか。 日本じゃ常識なのにな。

ホテルで、るびまの原稿書き。

で、夕方、みんな揃って夕食へ。 ヒルトンの1階にある日本料理店。 なんで、和食...。

でも、おいしかった。 アメリカの日本料理って言っても馬鹿にできないな。 サイズはアメリカンだけど。

一行は李白(島根のお酒)があったことに感動してた。 その後さらにスシ食いに行った人たちもいたが、 胃袋どうなってるんだろう?

私は帰って原稿書く。

_ [原稿] るびま18号 他言語探訪

今回はC++だ。最近読んだ『C++の設計と進化』に影響されたことは 言うまでもない。本当はBjarneの直筆サイン付きの原書を読みたいところだが、 ちょっと英文苦手なんで。

機内であらかた書いてたんで、あとは総称型プログラミングのところ。 ちょっと面倒なんで後回し。

本日のツッコミ(全6件) [ツッコミを入れる]
_ 匿名希望 (2007-02-05 21:24)

実時間復帰おめでとうございます

_ meist (2007-02-06 01:03)

ブロックローカル変数に関して。<br>「変数名prefixの記号は残ってない」とのことですが、postfixで区別するのはどうでしょうか。例えば「foo:」とか。<br>これなら見た目は同じ「foo:=hoge」という代入でも、変数名で変数の種類が決まると言うルールに従うことが出来ます。<br>ざっと考えたところ、ほぼバッティングは無く、三項演算子?:の二項目にpostfix変数が来る場合だけ注意が必要ではないかと思います。

_ eklerni (2007-02-06 07:29)

初めまして。スコープに関して質問です。<br>今のところ有力な案は、<br>ブロックパラメータ以外は基本的にスコープローカルで、ブロックローカル変数を<br>特に導入したいときだけ;やら:=やらを使用した記述を行うhttp://www.rubyist.net/~matz/20070112.html#p04<br>という解釈であってますか?<br>その場合で分からないトコがあるんですが、<br>http://www.rubyist.net/~matz/20050309.html#p03<br>この案は今回の案とはちょっと違いますが、ブロックパラメータに<br>許される文の形式はこれと同じ感じですか?<br>もしそうだとすると<br>3.times {|i; a|<br> a = 5<br> p [i, a]<br>}<br>3.times {|i|<br> a := 5<br> p [i, a]<br>}<br>この二つの違いが分からないのですけれど、;記法には他に必要な場面があるのでしょうか、<br>それとも今回の仕様だと=デフォルト値設定は可能なのでしょうか?<br>勘違いがあったらすみません。

_ まつもと (2007-02-06 10:04)

meistさん、<br>postfixでもあまりうまくいかないと思います。ブロックローカル変数はネストするので別の記号を割り当てたとしても、ネストレベルの違うブロックローカル変数の区別ができません。ネストするレベルに応じて変数名の後ろに「:」を重ねるとか、使い勝手が最悪だと思います。

_ まつもと (2007-02-06 10:07)

eklerniさん、<br>「;a」記法は将来的になくそうと思ってます。<br>とりあえず導入しては見ましたが、個人的にあんまり好きじゃないです。<br>宣言位置が固定されていることとか、明示的宣言の割にあまり宣言に見えたいところとか。

_ eklerni (2007-02-06 21:37)

返信ありがとうございます。なるほど、<br>;表記の必要性がわからなかったのですが、<br>互換性のためのようなものなんですね。<br>自分も;aは微妙(視認性が悪い)と思っていたので。

お名前:
E-mail:
コメント:
[]

«前の日記(2007-02-04) 最新 次の日記(2007-02-06)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.