パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

悩まされてしまうプログラミング言語の奇妙な特徴は?」記事へのコメント

  • by Anonymous Coward on 2014年09月06日 18時23分 (#2671937)

    IRubyでは配列の範囲外を参照しようとすると例外。本家、rubyではnil。
    C#やJava、VBでは例外を吐くので面喰いました

    • by Anonymous Coward on 2014年09月06日 19時13分 (#2671966)

      そんなの「未定義」のC/C++に比べたら可愛いもの。

      親コメント
    • by Anonymous Coward

      オリジナルの仕様を採用しているPascalを使ってください、というかみんなそれを真似た処理系作ってくださいと言いたい
      コンパイル時に配列のレンジチェックをオンにすれば、ちゃんとランタイムエラーで安全にアボートしてくれます
      エラーをトラップしてリカバリーの出来る処理系もあります
      レンジチェックをオフにすれば速くなります

      IRubyでは配列の範囲外を参照しようとすると例外。

      IRubyを選んでいる時点でユーザーは処理速度など気にしていないのだから、rubyの仕様の方がありがたい

      • by Anonymous Coward

        > ちゃんとランタイムエラーで安全にアボートしてくれます

        それ単に例外がなかった時代の死に方であって、オリジナルというほどのものでもないと思う。

        > レンジチェックをオフにすれば速くなります

        でもたぶんPascalの仕様には違反してるよね。やっぱりC/C++は邪悪すぎる。

        > IRubyを選んでいる時点でユーザーは処理速度など気にしていないのだから、rubyの仕様の方がありがたい

        nilを返すにも結局境界チェックは必要だろ。

        • by Anonymous Coward

          >nilを返すにも結局境界チェックは必要だろ。
          それがどうもCRubyの場合、境界チェックはしておらず、配列の最後にからの領域があるのでたまたまnilがかえって来ていたようです

          http://code.kzakza.com/2011/09/ruby1-8-7-array-slice/ [kzakza.com]
          Ruby(1.8.7〜1.9.0)の配列の末尾には見えない要素があるらしい。

          • by Anonymous Coward

            デマを飛ばすのはよくない。

            ソースがRuby初心者のページじゃないですか。
            たとえ話を誤解して真に受けているようにしか見えないんですが。

            そもそもそれだと
            a[100000]とかやったらどうなるのか?

    • by Anonymous Coward

      インデックスが範囲外になった時にエラーにならないのは、自分が知っている範囲では他にPerlくらい?
      その仕様を使うコードって、率直に言ってあんまり良くないですよ。

※ただしPHPを除く -- あるAdmin

処理中...