«前の日記(2004-02-01) 最新 次の日記(2004-02-03)» 編集

Matzにっき

迷惑メール対策なら Dr.WEB
『Dr.WEB メールデーモン』、MTA 用迷惑メール対策製品です!


2004-02-02 [長年日記]

_ [言語]まつもとゆきひろの「プログラミング言語論」【後編】(1)

日経バイトの記事の後半。今回は後半の3分割のうちの最初のものだが、 残りも明日以降順次公開される。 前半のときも書いたけど、正確さよりもノリを重視した文章なので、 あくまでもエンターテイメントとして読んでほしい。

_ [Ruby]endのユーザビリティ(2)

mputさんから。

続く議論が「シフトが入るからストローク数は互角だよね」とか「{}はホームポジションから遠い」とか、いぜんミクロな論点に終始している感じがしてちょっと拍子抜けであります。

えー、わざわざミクロな話をしているのは、 結局「}」も「end」も大差ないことを示して、 最後の「意識のスイッチ」を強調したかったからなんだけどなあ。 伝わらないってことは、失敗だったってことだな。

実は「 Ruby では変数の接頭辞 '@' やブロック変数代入構文の '|' など、他に記号が出現する場所が多いから、ブロックの終わりは '}' ではなく 'end' のほうが、記号とアルファベットの割合がよいのだ」という反論を想定していたのですが、どうやらそういうことを考えて end が採用されてるっていうわけじゃないようですね。

Rubyがendを採用している真の理由は

  • endを使ってもautoindentできるめどが立った(ruby-modeの方が先にできた)
  • begin/rescueやcaseは { } を使うと「美しくない」

というものだ。もちろん、意識のスイッチもちょっと考えたけど。

あと、カーソルの移動には

ESC C-a		ruby-beginning-of-defun
ESC C-e		ruby-end-of-defun
ESC C-p		ruby-beginning-of-block
ESC C-n		ruby-end-of-block
ESC C-f		ruby-forward-sexp
ESC C-b		ruby-backward-sexp

などが役に立つのではないだろうか。カーソルキーでだーっと移動するよりは。

_ [Ruby]endのユーザビリティ(3)

あ、よく考えて見ると、Rubyのendの良さってのは

  • 一見、「}」に比べて生産性が低そう
  • しかし、実際にはほとんど差がない
  • かつ、他の言語があまり採用していない

からこそ、意識のスイッチに役立つという点にあるのであって、 あまり喧伝して他の言語がどんどんendを使うようになっては優位性がなくなるような気がするな。 みなさん、昨日書いたことは忘れてください。

で、begin/rescueやcase での brace はどのへんが美しくないかというと、 randyさんのおっしゃるように

case val {
  when a
  ...
  when b
  ...
  when c
  ...
}

または

try {
  ...
rescue IOError
  ...
rescue SyntaxError
  ...
ensure
  ...
}

のようにブレースの中で区切るのも変だし、とはいえ

case val
when a {
 ...
}
when b {
 ...
}
when c {
 ...
}

あるいは

try {
 ...
}
rescue IOError {
 ...
} 
rescue SyntaxError {
 ...
}

のように細かいブレースの連鎖になるのも気に入らなかったということです。 学生時代にOOSCに影響されてcomb styleに憧れていたのもありますが。

本日のツッコミ(全3件) [ツッコミを入れる]
_ wtnabe (2004-02-02 21:28)

単純な話で、end はブロック終端ではなくステートメントとして認識しやすいです。ruby-mode を使っていてもやっぱり違和感はあります。書く分には慣れてくるので視認性も慣れと言えば慣れなんですがね。(自分はなぜか書く方が先に慣れました。)

_ ささだ (2004-02-02 21:39)

begin/rescueやcase での brace はどのへんが美しくないんでしょうか。

_ randy (2004-02-02 22:50)

はじめまして。<br><br>begin<br> ... <br>rescue<br> ... <br>end<br><br>を<br><br>{<br> ... <br>rescue<br> ... <br>}<br><br>にしちゃうと、美しくないということではないでしょうか。<br>自作言語を設計するときに、自分もかなり悩んだ記憶があります。

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

«前の日記(2004-02-01) 最新 次の日記(2004-02-03)» 編集

RSS feed meter for http://www.rubyist.net/~matz/ track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.