アカウント名:
パスワード:
一般論として型がある方が実行効率に優れると思ってるんですが、いまどきのリソース潤沢な環境だとんなの論点にはならないんですかねえ。コーディング上の理由だけじゃなくてさ。
んなことはないと思う。
Javaの高いパフォーマンスを支えてるのが静的型システムで、サーバーサイドでパフォーマンスが欲しい分野だとJavaがデファクトスタンダードになる理由の一つだ。
でも型システムの有効性も理解できない程度の人が、静的型システムとVMのパフォーマンスとの関係など理解できるはずも無く、議論に登ることも無いだけでは。
いや、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++になってるよ。とっくに。
クライアントサイドJavaのセキュリティホールってモダンブラウザのJavaScriptよりヤバゲな感じで、そんなVMが優れたVMだとは思えないなぁ・・・っていうかnode.jsはV8 JavaScriptだからJITや最適化能力は普通に現代的な実装だし何世代も前のJava引き合いに出すほどかね?
その上、Oracleだから今後のサーバサイド向けのセキュリティアップデートも(有料化されて隠蔽される的な意味で)不安・・・はさすがにFUDか。
最近のJVMのセキュリティアナウンスは酷いけど、それにつられて視野が狭なってませんか?
ソースが型を持つのと、コンパイルされたオブジェクトが型を持つのは同義の必要性は無いので、効率性は別の話だと思うけどな。まあ、最近のコンパイラの出来が、どこまで進んでるかは知らんが。(結構、昔のビルド後のコードの最適化は色々面白い省略してたのは興味深く見ましたね。ソースの型なんて関係ない、みたいな生成するのもたまにあって。ま、宣言後に使われるのがオートボクシングした先だけなら、初めから元の型で作るのは時間の無駄だという判断なんだろう、とか)
V8はそこらの静的型付け言語より速いですけどね。
V8の正規表現は速いです><
それは、コンパイル言語とインタプリタ言語の違いではなくて?
実行時に型チェックしてたら普通は遅くなるかと。
>それは、コンパイル言語とインタプリタ言語の違いではなくて?それにくわえて最適化後のVMのパフォーマンスでも違うはず。
動的型であるか静的型であるかはVMの最適化に影響します。通常は静的型の方が高度な最適化ができる分だけ早くなる。
>実行時に型チェックしてたら普通は遅くなるかと。…… まさかと思うけど、「静的型言語は実行時に型チェックをするけど、動的型言語は型チェックをする必要が無いから早い。」なんて思ってないですよね???
何をつっこまれてるのかよくわからんなあ。あなたのコメントの前半は正しいと思うよ。
言葉の意味のまんまです。静的/動的に関係なく、実行時に型チェックが走れば遅くなる。どこから「静的型言語は実行時に型チェック」という発想がでてきたのか分からんけど。
逆に聞くと、コンパイルしない≒最適化の機会のない言語で、型無しの言語より、型付きの言語の方が実行効率上がると思う?純粋に質問で。
置き換えのどこがお手軽なんだよ。どこで/誰がコスト払うかが違うだけの話。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
実行効率 (スコア:2)
一般論として型がある方が実行効率に優れると思ってるんですが、いまどきのリソース潤沢な環境だとんなの論点にはならないんですかねえ。
コーディング上の理由だけじゃなくてさ。
Re:実行効率 (スコア:1)
んなことはないと思う。
Javaの高いパフォーマンスを支えてるのが静的型システムで、サーバーサイドでパフォーマンスが
欲しい分野だとJavaがデファクトスタンダードになる理由の一つだ。
でも型システムの有効性も理解できない程度の人が、静的型システムとVMのパフォーマンスとの
関係など理解できるはずも無く、議論に登ることも無いだけでは。
Re: (スコア:0)
いや、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++になってるよ。とっくに。
Re: (スコア:0)
クライアントサイドJavaのセキュリティホールってモダンブラウザのJavaScriptよりヤバゲな感じで、そんなVMが優れたVMだとは思えないなぁ・・・
っていうかnode.jsはV8 JavaScriptだからJITや最適化能力は普通に現代的な実装だし何世代も前のJava引き合いに出すほどかね?
その上、Oracleだから今後のサーバサイド向けのセキュリティアップデートも(有料化されて隠蔽される的な意味で)不安・・・はさすがにFUDか。
Re: (スコア:0)
最近のJVMのセキュリティアナウンスは酷いけど、それにつられて視野が狭なってませんか?
Re: (スコア:0)
ソースが型を持つのと、コンパイルされたオブジェクトが型を持つのは同義の必要性は無いので、効率性は別の話だと思うけどな。まあ、最近のコンパイラの出来が、どこまで進んでるかは知らんが。(結構、昔のビルド後のコードの最適化は色々面白い省略してたのは興味深く見ましたね。ソースの型なんて関係ない、みたいな生成するのもたまにあって。ま、宣言後に使われるのがオートボクシングした先だけなら、初めから元の型で作るのは時間の無駄だという判断なんだろう、とか)
Re: (スコア:0)
V8はそこらの静的型付け言語より速いですけどね。
Re: (スコア:0)
V8の正規表現は速いです><
Re: (スコア:0)
それは、コンパイル言語とインタプリタ言語の違いではなくて?
実行時に型チェックしてたら普通は遅くなるかと。
Re: (スコア:0)
>それは、コンパイル言語とインタプリタ言語の違いではなくて?
それにくわえて最適化後のVMのパフォーマンスでも違うはず。
動的型であるか静的型であるかはVMの最適化に影響します。
通常は静的型の方が高度な最適化ができる分だけ早くなる。
>実行時に型チェックしてたら普通は遅くなるかと。
…… まさかと思うけど、
「静的型言語は実行時に型チェックをするけど、動的型言語は型チェックをする必要が無いから早い。」
なんて思ってないですよね???
Re: (スコア:0)
何をつっこまれてるのかよくわからんなあ。あなたのコメントの前半は正しいと思うよ。
>実行時に型チェックしてたら普通は遅くなるかと。
…… まさかと思うけど、
「静的型言語は実行時に型チェックをするけど、動的型言語は型チェックをする必要が無いから早い。」
なんて思ってないですよね???
言葉の意味のまんまです。静的/動的に関係なく、実行時に型チェックが走れば遅くなる。
どこから「静的型言語は実行時に型チェック」という発想がでてきたのか分からんけど。
逆に聞くと、コンパイルしない≒最適化の機会のない言語で、
型無しの言語より、型付きの言語の方が実行効率上がると思う?純粋に質問で。
Re: (スコア:0)
Re: (スコア:0)
置き換えのどこがお手軽なんだよ。
どこで/誰がコスト払うかが違うだけの話。