«前の日記(2004年01月31日) 最新 次の日記(2004年02月02日)» 編集

Matzにっき


2004年02月01日 [長年日記]

_ [教会]松江

断食安息日。ずっとカジュアルな格好を好んでいた息子は、 今週から教会にスーツを着ていくことを決心した。 馬子にも衣装とはこのことだ。みんな感心していた。

コンピュータ業界で悩んでいる人の相談に乗る。 というか、ただ単に話を聞いてあげただけだけど。 ユーザ部門と外注との間の板挟みだそうだ。 身につまされる話だ。 いろいろ話をしたが、どの程度お役に立てたどうかはわからない。

_ [OSS]オープンソース普及には利用者の高い志が必要

話題のOSSAJの報道。

言ってることは分かるんだけど、次のステップが聞きたいんだよねえ。 「ベンダーも含めたOSS利用者が利用情報を共有する」とは具体的になにかとか、 「利用者の高い志」とは具体的になんのことかとか、 「若干の仕掛け」とはどんなものを考えているかとか。

まだあまり具体化してなくて、メンバの脳内でイメージが熟成中なのかしら。 それならそれでそう言ってほしい。

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

本気ですか?

begin-end系の言語は{-}系の言語に比べて、まつもとさんの言葉を借りれば「言語のユーザビリティが低い」と思うのですよ。

  1. まず、生産性。明らかに括弧の方が生産性は高いですね?文字数も短いし、 end を使う方式で短いイテレータを一行にまとめようと思うと';'を補わなきゃいけないのも生産性に負のバイアスを与えてると思います。
  2. 次に理解のしやすさも括弧の方がわかりやすいです。とくに非英語文化圏の人間にとっては「英単語和訳」という作業がない分括弧は理解が簡単。

あと、 ruby の場合だと end に対応する単語が一意に定まらないので、パッと見ただけで対応が分かりづらいと思います。インデントしてあれば分かりますけど、それは括弧でも同じなんだから差っ引いて考えるべきですよね。

私の作った言語のユーザビリティを私の言葉を引用して論じるとはいい度胸だ。(笑)

言語のユーザビリティというのは全体のバランスから決まるわけで、 もっと広い視点に立たなくてはいけない。 近視眼的な視点から考えると 「end」という3文字よりも「}」という1文字の方が入力の手間が少ないと感じたかもしれないが、 実際には

  • ホームポジションに近い3ストロークと遠い2ストローク(シフト+「]」)の差は致命的ではない。
  • さらに「{」が不要であることを考えるとトータルのストロークは少ないではないか(スペース+シフト+「[」とシフト+「]」で5ストローク)。
  • 削除についても行削除ならストロークは同じ。

と明確に不利であるとはいえない。むしろ逆に有利であるかもしれない。

理解しやすさについては、

  • ブロックの終わりが明示されないことに比べれば「end」と「}」の差はわずか。
  • 1行にパックしようとすると識別子と埋没しがちなのは事実だが、むしろ読みにくい構成に反対する圧力となっていると考えることもできる(どうしても1行にまとめたければRubyならブロックには「{ }」が使えるし)
  • セミコロン云々については事実誤認。

であり、有意な差はほとんどないと考える。 予約語に色をつけるなどツールの支援でより便利になるのは明らかだし。

わからなかったのは、mputさんの

個人的には ruby-mode.el が end に対応する予約語をハイライトしてくれるようになったらもっと end 使うかも。

という発言だ。きちんとインデントしていれば、対応する予約語はほぼ明らかだと思うのだが。

さて、ここまでで「endは決してユーザビリティが低くない(「}」に負けない)」ことを示すことができたと思うのだが、 実はRubyのend採用にはさらに別の効果がある。

結果的に他の多くの言語が「end」を避けているので、 Rubyのプログラムを見た時にひと目で「これはRubyのプログラムである」と認識できるのだ。 この効果は意識のスイッチに役立つので、少なくとも私にとっては非常にありがたい。 私はCとRubyを交互に使うのだが、おかげで今どの言語を使っているかで混乱することはない。

これはユーザビリティが相当高いといえるのではないだろうか。


«前の日記(2004年01月31日) 最新 次の日記(2004年02月02日)» 編集