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

「変数に型がない」はメリットなのか、それともデメリットなのか。宗教戦争勃発」記事へのコメント

  • by homoludens (40431) on 2013年03月01日 13時41分 (#2334967)

    一般論として型がある方が実行効率に優れると思ってるんですが、いまどきのリソース潤沢な環境だとんなの論点にはならないんですかねえ。
    コーディング上の理由だけじゃなくてさ。

    • by firewheel (31280) on 2013年03月01日 15時28分 (#2335103)

      んなことはないと思う。

      Javaの高いパフォーマンスを支えてるのが静的型システムで、サーバーサイドでパフォーマンスが
      欲しい分野だとJavaがデファクトスタンダードになる理由の一つだ。

      でも型システムの有効性も理解できない程度の人が、静的型システムとVMのパフォーマンスとの
      関係など理解できるはずも無く、議論に登ることも無いだけでは。

      親コメント
      • by Anonymous Coward

        いや、Javaが選ばれる理由は型があるかないかよりも
        より優れたVMとGCにある

        JVMのいくつもの選択肢があるVMがスケール設計する際にすごく重要だ。
        最近だとnode.jsでjavascript(ある意味で型がない)の実装が増えてきているけど
        こいつのGCやVMは何世代も前のJavaだよ。

        もちろんperlとかに乗っているJITが優れているけどまだまだJava(JVM)には及ばない
        型があることによる恩恵としてのVMと考えると
        より優れたVMが搭載されていればぶっちゃけなんでもいい。

        先に出したnode.jsだってGCでstop the worldが起こるけど
        それ以上にnon blockingで高いスループットを出しているからevenだよ。(下手なチューニングが要らない)

        ということで、Javaを出してきたからにはVM設計があるんだろうなと。
        もしそうでないならデファクトはC++になってるよ。とっくに。

        • by Anonymous Coward

          クライアントサイドJavaのセキュリティホールってモダンブラウザのJavaScriptよりヤバゲな感じで、そんなVMが優れたVMだとは思えないなぁ・・・
          っていうかnode.jsはV8 JavaScriptだからJITや最適化能力は普通に現代的な実装だし何世代も前のJava引き合いに出すほどかね?

          その上、Oracleだから今後のサーバサイド向けのセキュリティアップデートも(有料化されて隠蔽される的な意味で)不安・・・はさすがにFUDか。

          • by Anonymous Coward

            最近のJVMのセキュリティアナウンスは酷いけど、それにつられて視野が狭なってませんか?

      • by Anonymous Coward

        ソースが型を持つのと、コンパイルされたオブジェクトが型を持つのは同義の必要性は無いので、効率性は別の話だと思うけどな。まあ、最近のコンパイラの出来が、どこまで進んでるかは知らんが。(結構、昔のビルド後のコードの最適化は色々面白い省略してたのは興味深く見ましたね。ソースの型なんて関係ない、みたいな生成するのもたまにあって。ま、宣言後に使われるのがオートボクシングした先だけなら、初めから元の型で作るのは時間の無駄だという判断なんだろう、とか)

      • by Anonymous Coward

        V8はそこらの静的型付け言語より速いですけどね。

        • by Anonymous Coward

          V8の正規表現は速いです><

    • by Anonymous Coward

      それは、コンパイル言語とインタプリタ言語の違いではなくて?

      実行時に型チェックしてたら普通は遅くなるかと。

      • by Anonymous Coward

        >それは、コンパイル言語とインタプリタ言語の違いではなくて?
        それにくわえて最適化後のVMのパフォーマンスでも違うはず。

        動的型であるか静的型であるかはVMの最適化に影響します。
        通常は静的型の方が高度な最適化ができる分だけ早くなる。

        >実行時に型チェックしてたら普通は遅くなるかと。
        …… まさかと思うけど、
        「静的型言語は実行時に型チェックをするけど、動的型言語は型チェックをする必要が無いから早い。」
        なんて思ってないですよね???

        • by Anonymous Coward

          何をつっこまれてるのかよくわからんなあ。あなたのコメントの前半は正しいと思うよ。

          >実行時に型チェックしてたら普通は遅くなるかと。
          …… まさかと思うけど、
          「静的型言語は実行時に型チェックをするけど、動的型言語は型チェックをする必要が無いから早い。」
          なんて思ってないですよね???

          言葉の意味のまんまです。静的/動的に関係なく、実行時に型チェックが走れば遅くなる。
          どこから「静的型言語は実行時に型チェック」という発想がでてきたのか分からんけど。

          逆に聞くと、コンパイルしない≒最適化の機会のない言語で、
          型無しの言語より、型付きの言語の方が実行効率上がると思う?純粋に質問で。

          • by Anonymous Coward
            上がる。 思う?じゃなく実際に。

あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー

処理中...