「disる」と「指摘する」は違う・・・よね?
cgi.rbをあんまり意識していないRubyistがPHPをdisれないのだとしたら、それはなんか「自分が完全完璧じゃないと、人を指摘してはいけない!」ような雰囲気になってしまってちょっと嫌かなぁと、というのが率直な感想です。
http://d.hatena.ne.jp/kwatch/20100613/1276385931#c1276477440
ワシは、「disる」と「指摘する」はだいぶ違うと思ってるんだけど、どうなんだろう。一緒と思っている人も多いのかな。
ワシのイメージはこんなかんじ。
「指摘する」の例:
http://www.rubyist.net/~matz/20080126.html#p04
「disる」の例:
http://blog.livedoor.jp/dankogai/archives/50835571.html
Ruby で変数宣言がほしい、とな?
Ruby にも変数宣言があったほうがいいよね、という話。
Thor タスクを書いていて
desc "load KVS_FILE", "load data from given KVS file" def load(kvs_file) case kvs_file when "shift" ksv_file = Dir.glob("kvs/requests/*").sort.first when "pop" ksv_file = Dir.glob("kvs/requests/*").sort.last end p kvs_fileload("shift") しても "shift" が表示されちゃう謎の現象に遭遇。
- 実は Thor は引数を symbol とか特別なオブジェクトにしてる?
- あれ、case 文って文字列直接はダメだっけか?(classみたいに)
とか色々調べること10分。原因に気付いて愕然としました。てことで、やはり Ruby にも変数宣言が欲しい、というか、無いとダメだ!しかもオプションで使えるレベルでなくデフォ強制が必須。ワンライナー(golf)用途に、disableにするオプションがあるぐらいの勢いで。
http://wota.jp/ac/?date=20100604#p01
あるあるーw でもJavaScriptみたいな仕様ならいらね。
人間の単純なミスだからそれは使う側のユーザの問題
という正論が成立しそうだが、それは違う。そういうつまらないミスを言語(環境)が指摘してくれることで、ユーザはもっと本質的なロジック部分だけに集中できるのだ。というのも、コンパイラ言語を使った後でRubyに戻ってくると、そういう非本質的な部分(変数名を必死にケアするとか)にも神経を使う必要があって、同じ時間のコーディングでも遥かに疲れるのだ。
強く同意する。
よくアジャイル開発を信奉する人が、「テストをすれば大丈夫、コンパイラのエラーチェックなんていらね」みたいなことを言うけど、テストの実行はけっこうな時間がかかるんだから、テストを実行しないと見つけられないよりも、テストをしなくても見つけられるほうが、ずっとアジャイルじゃね?
Rubyでいまから変数宣言を導入するのは難しいだろうけど、今回の場合なら、代入はされたけど他の箇所で使われていないようなローカル変数を検出する機能がRubyにあればいいんじゃないかな。
あとは、代入されてないのに参照されているローカル変数 (たいがいtypo) の検出ができれば最高だけど、Rubyではレシーバなし引数なしのメソッド呼び出しと、ローカル変数との区別がつかないから、難しいなあ。個人的には前者を禁止したいんだけど。
# Ruby にも pycheker みたいなのがほしいね。