From: Takashi Nakai Date: 1998-10-23T23:23:03+09:00 Subject: [ruby-list:10309] Re: 大規模プログラムの友 (Re: for が修飾子だったら ) ど〜も、中井です。 /['o'] ---------------------------------------------- matz@netlab.co.jp (Yukihiro Matsumoto) さんは書きました: >まつもと ゆきひろです > >それはそれとして,大規模プログラムを支援するような推奨するべ >きスタイル(で機械的に検出できるもの)が他にもしあれば,それは >どのようなものかということに興味はあります. > > まつもと ゆきひろ /:|) ---------------------------------------------- Ruby とは、馴染まない(と思う)のですが、自分の中での 有効な手段は ・型チェック ・ASSERTマクロ(C とかで使いますよね assert( 0 < n );とか) です。(ASSERTマクロは実行時にならないと有効ではないのですが) 馴染まないと言った理由は、 ・型チェック ・・・ 言うまでもない!? ・ASSERTマクロ ・・・ C などではマクロで実現して、デバッグ時のみ 有効として、リリース版の処理時間には影響を与え ないようにしますが、Ruby では可能なのでしょうか? 字句解析時(って言うんでしたっけ?)に最適化の 結果、処理を削ってしまうことってあるのでしょうか? あと、ASSERTチェック内の条件式で副作用を与えない はずって言う確証が... とここまで書いてきて、実行時にASSERTマクロ風の型チェックは可能 かな?と思いました。 どんな感じかと言うと、この時点では、このオブジェクトは XXXX ク ラスまたは、その派生型のはず、とか、このオブジェクトは xxx と yyy と zzz と言うメソッドを持っているはず、とかの宣言です。 で、実行時のオプション(-w:TYPECHECK ???)で、その宣言のチェッ クを有効にするとか...(で、違反を検出した時になにをすべき なんだろう?) # --- ここを通過時点では a はIntegerまたはその派生型のはず TYPECHECK( a is Integer ) # --- ここを通過時点では b は下記のメソッドを持っているはず TYPECHECK( b has getXXX, setYYY, to_s ) てな感じですか ---------------------------------------------- >...別の言語が新たに生まれるというのは推奨したいとは思いますが... ---------------------------------------------- この程度なら、別の言語ではないですよね。 ;-) -- T.NAKAI nakai@m1.sys.to.casio.co.jp