はじめまして。角と申します。
平素よりrubyを便利に使わせていただいております。

私はとみたさんに賛成に一票、です。

rubyの警告は有無をいわせずコンソールに表示されるうえ、
警告が実行時に表示されるものの場合、ループ内で実行すると
ループの回数だけくりかえし表示されるため、かなり目立ちます。
ひどいときには、大量に表示されるためにプログラムが
利用不可能になります。

特に、プログラムを使っているのが開発者自身ではなくエンドユーザの場合、
警告表示を放置できることはまずなく、結局コードを修正せざるをえません。
rubyをマイナーバージョンアップするたびにこの作業が必要になるのは、
いささかおっくうです。


> ひとつの案としては、警告を弱めることが考えられます。つまり、-w を指定
> しないときには警告を行わないようにするわけです。
> (現在、nonblocking な IO#read の警告は -w をつけなくても出ます。)

このご意見に賛成です。

最近では、私がrubyを使うときは必ず-W0を使っています。
これはこれで別に困っていないのですが、本当に重要な問題が
警告されないのが多少気になっています。そもそも、ライブラリを
開発しているときは-W0は使えません。

私の意見としては、すべての警告に対して、デフォルトで表示するのは
緊急で重要なものだけに限り、将来のバージョンに対する互換性などの
軽微な警告は、-wが指定されたときにのみ表示するのがよいと思います。
いかがでしょうか。


> 必ずしもそのようなドキュメントを見て洩れなく判断できるほどプログラムの
> 隅々まで把握しているとは限りません。したがって、個々のプログラムを動作
> させることによって、そのプログラムに含まれる非互換性にひっかかる箇所を
> 指摘することができれば、ドキュメントよりも適切であると考えます。

ドキュメントのほうが確実に問題点を把握できるのではないでしょうか。
IO#readを使っているかどうかあやふやなら、ソースコードに対してgrepを
かければ済む話のような気がします。

警告による方法では、カバレッジ100%の回帰テストを実施しない限り、
問題がないという確証が得られません。これは、ソースコードの一部を
修正して、修正部分だけ再テストするより、はるかに手間がかかります。
rubyをマイナーバージョンアップするたびに、稼動中の
rubyスクリプトに対してテストを実施するのは難しいと思います。

先ほど書いたように、警告メッセージはかなり目立つので、
エンドユーザがプログラムを使用中に表示されるのはつらいです。
仕事中に、突然エンドユーザに「動作が変だ」と言って呼びつけられるのは
かなり屈辱的なので、あまりたびたびだと、rubyを嫌いになるプログラマが
増えると思います(笑)。

その結果、結局-W0を使わざるをえないのでは、警告メッセージの
効果がなくなってしまいます。


> ただ、-w は使わない人が多いように感じているので、それを指定しないと出
> ないのでは、1.9 になった時にそんなのは知らなかったと言う人が出るように
> 思うのですが。

私は、とみたさん同様

> > 1.9 のリリース時に、ちゃんと「互換の
> > ない変更」「注意すべき変更」というドキュメントがあれば十分ではないかと。

と思います。
1.9にすぐ対応できなければ、1.9の導入を遅らせればよい話なので。

困るのは、実運用中のアプリケーションにおいて、ある日突然
よくわからない英語のメッセージが表示される(とユーザには見える)
ことです。


ドキュメントなどでお手伝いできることがあればお知らせください。

-- 
角 元司 <mtj / fiberbit.net>