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

Java SE 7 リリース」記事へのコメント

  • 今回のバージョンにはループ最適化に関する致命的なバグ [lucidimagination.com]があるそうです。

    (重要な用途には用いないこと || 関連する最適化オプションを無効にすること) && 今後のアップデートを速やかに導入することをお薦めします。

    • by Anonymous Coward on 2011年07月31日 20時04分 (#1995390)

      例えばVisual Studioがループ最適化に致命的なバグを持ったまま出荷されたらどうなるだろうか?
      間違いなく叩かれるだろう「こんなもん使い物になんねーよ」「金払ってんだからちゃんとしたもの売れ」そんな声が聞こえてくるようだ

      では無償版のVisual Studio Expressの方だったらどうか?
      やはり叩かれるだろう「無償版だからって手抜いてんじゃねーよ」「有償版を買えってことですね分かります」そんなところか

      ならばGPLなgccだったらどうだろう?
      それでもやはり叩かれるだろう「人柱さん何やってんの?」「良くもまあこんなんでstable宣言できたな?」「OSSの方が品質が高いとか思っている奴は情弱」ボロクソに言われるだろう

      それならどうしてJavaはこんな致命的なバグ持ちで出荷されても許されるのか?
      悲しいかな、これこそが日本人の中立であろうとした時の立ち位置だからだ

      世界で中立とか公平とかいう場合、どんなものも同じ価値となり、それがgccだろうと、JDKだろうと、同じように評価される
      しかしながら同じことを日本人にやらせると、どういうわけだか劣っている方を大目に、優っている方を減じて評価してしまう習性がある
      いわゆるケンカ両成敗という考えかたこそが、日本人の考える公平とか中立という立ち位置になる
      似ているようでいて全く違う考え方なのだが、大抵の日本人は悲しいかな違いが分からない
      なにしろ自分は中立な立場に立っていると勘違いしているので、違いもへったくれもないわけだ

      これだから日本人と議論するのは疲れるんだ
      物事を公平に見るということができず、常にどちらか側につくことで両者の優位性を打ち消すことを、公平に見るということだと誤解しているので話にならない
      どうしてダメなものはダメと言えないのか?

      親コメント
      • 長々書いてるけど、要約すると「水に落ちた犬は叩け」ってことでOK?

        親コメント
        • by Anonymous Coward
          中国叩きに対する「日本だって(ry」みたいなものです
        • by Anonymous Coward
          > 長々書いてるけど、要約すると「水に落ちた犬は叩け」ってことでOK?

          えー、できればあなたの国のことわざではなく、日本のことわざで要約してくれませんかね?
      • あなたは、どなたと戦っておられるのでしょうか。

        日本人でもそれ以外のかたでも「こんなバグ許されないだろ」という意見のほうが圧倒的に見かけます、私の観測する範囲では。そのVisual StudioやGCCの例と同じぐらい叩かれているように思います。

      • by Anonymous Coward
        ワタシ日本人だけど、それはただのユーザ数の差だと思うヨ
      • by Anonymous Coward

        俺日本人だけど、Javaはそもそも信用するに値しないプロダクトだと思ってます。
        Adobeよりはマシに見えてある面ではAdobeより酷い。
        「GC頑張って広めたね、OO特化言語の最低ラインを示せたね、エライエライ」的な。
        コンセプトはともかく、本気出して使うべき言語じゃねぇと常々思ってます。
        FlashにしろPDFにしろJavaにしろSMTPにしろFTPにしろ、新しい世界を提示したらさっさと死んでマトモな後継の苗床になってくれと常々…

        なので今回の件も「ああやっぱり。さっさと沈め」ってだけで別に叩く気は毛頭有りません。

        • by Anonymous Coward
          > さっさと死んでマトモな後継の苗床になってくれと常々…

          気持ちはわからんでもないけど、それって作り直し症候群じゃないかなぁ。
          とはいえ、Javascriptだけは「コンセプトはともかく、本気出して使うべき言語じゃねぇ」と思う。
    • by Anonymous Coward
      でもそのバグにあたらないコーティングをするならGoodです!
      • Miyakawaさんの張ったリンク先には

        > Don’t use Java 7 for anything (unless maybe you know you don’t have any loops in your java code)

        って書いてありますね。ループのないコードなら OK ってことです。

        Java 7 のループは if と goto で書きましょう。;-)

        親コメント
        • って書いてから「もしかして Java って goto なかったような?」と思ったら、ほんとにありませんね。使わないと気付かないもんだなぁ…

          どうやったら loop が書けるんだろう?

          親コメント
          • by firewheel (31280) on 2011年07月31日 13時09分 (#1995235)

            >「もしかして Java って goto なかったような?」と思ったら、ほんとにありませんね。使わないと気付かないもんだなぁ…

            懐かしのFAQだけど、バイトコードにはあるよ。
            http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.... [sun.com]

            つまりバイトコードのアセンブラで書けば良いんだね!
            #そっかー。このFAQが流行ったのって、もう10年以上前の話なんだ……
            #そら知らん人も多いわけだ。

            親コメント
            • by Anonymous Coward on 2011年07月31日 13時13分 (#1995237)

              バイトコードのレベルで無条件ジャンプ命令があるのは当たり前だと思うけど。
              構造化プログラミングってのは極論すればソースコード見る人間の都合にすぎないんだし。

              親コメント
          • by Anonymous Coward on 2011年07月31日 12時43分 (#1995226)

            末尾再帰で書きましょう。
            最適化でループで展開されるみたいなんで・・・あれ?

            親コメント
            • by Anonymous Coward

              Javaって末尾再帰をループに最適化してくれましたっけ?
              Scalaならしてくれるみたいですけど。

            • by Anonymous Coward

              ところで、何でいまだに人間様が末尾再帰で書いてやらなきゃならないんですかね。
              人間が通常の再帰を末尾再帰に書き換えることができるなら、どうして機械にはそれができないんでしょうか。
              末尾再帰に書き換え不可能な再帰があるのは知ってますけど、そんなのはエラーにしても十分実用的ではないですか。だって計算量が指数関数的どころの騒ぎではないのに、アッカーマン関数なんてベンチマーク等の目的以外で実用的なプログラムに使いますか?

              • by Anonymous Coward
                そういうセマンティクスの書き換えが言語仕様的にものすごく難しそうなC言語でさえgccはやってる [fc2.com]みたいなので、単なる手抜きではないですかね。
              • by Anonymous Coward

                できますよ。CPS変換すれば再帰は全部末尾再帰になります。簡単です。ただし、非末尾再帰をCPS変換したものはスタック消費がヒープ消費に化けるだけなので節約になりませんが。

                空間計算量O(n)な非末尾再帰をO(1)な末尾再帰に自動で書き換えるのは、trivialなケースを除いてはそう自明ではないような…(trivialなケースなら、
                CPS変換の後、念入りな依存性解析で何とかなりそうな)。 何とかならないケースでは、何と何をトレードするかについて、プログラムソースに現れないメタなコスト評価を人間がやってるように思います。それをソース上に記述できれば自動化できるんでしょうが、その意図を記述するには最初から末尾再帰で書くのが一番わかりやすくて楽なんじゃないかと。

          • ループしない。全てを再帰コールで実装する(メモリ的にかなり無茶だ)

            --
            fjの教祖様
            親コメント
          • by Anonymous Coward
            java でのプログラミング経験なしで言うのもなんですが、
            再帰呼び出しとか
            極短周期のタイマイベントとか
          • by Anonymous Coward
            ラベル付きcontinueってあったよな
          • by Anonymous Coward

            ループ回数分だけコピー&ペーストする

        • by Anonymous Coward
          もしかしなくても今回のリリースはゴミ(黒歴史)ですかね?
    • by Anonymous Coward

      > 関連する最適化オプションを無効にする
      具体的にはどういう起動オプションを指定したらいいんですかね。リンク先はただ「使うな」だけで回避策は書かれていないみたいですし。

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

処理中...