パスワードを忘れた? アカウント作成
337612 story
Google

Google の言語テスト、勝者は C++ 42

ストーリー by reo
車に例えて解説してくれ 部門より

insiderman 曰く、

Google が C++ と Java、Go、Scala の 4 言語に対し、比較・調査を行った結果を公開している (論文 PDF) 。

この比較・調査には各言語で慣例的なコンテナクラスやループ構築方法、メモリ/オブジェクト割り当てスキーマを用い、言語機能やその際のコードの複雑さ、コンパイラやコンパイル時間、バイナリサイズ、実行時間、メモリフットプリントを調査した。ベンチマークのソースコードは Google Code 上で公開されている。

結論としては、これらの言語の中では C++ がもっともパフォーマンスの優れた言語、ということになったそうだ。ただし、C++ にはチューニングの自由度が高く、ベンチマークには平均的なプログラマでは記述できないような洗練されたコードも含まれているという (つまり、優れたプログラマでないとパフォーマンスを出せない可能性があるということか) 。

また、Java については「実装しやすい」、Scala については「優れた言語機能を持ち、コードの複雑さに関する最適化に関してはもっとも優れている」、Go については「コンパイラがまだ未成熟で、それがパフォーマンスやバイナリサイズにも現れている」という。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 自分で開発している Go言語を「未熟者」と評価しているのは、賞賛できます。
    今度は、ブラウザーや、WEB メールなども客観的に比較して欲しいです。
    • by Anonymous Coward

      論文を読めば判るんですが、これは
      ベンチマーク論文としては正確さも厳密さも、ベンチマークとして配慮すべき点を全て尽くす完備性もいずれも欠けていて、
      一言で言って「やってみた」の域を出ないん出来なんですよ。
      「Googleが発表!」ということでメディアに中身の価値以上に取り上げられている気がします。

      恐らくこの論文の唯一の価値は「Goはまだ未熟」という事実の報告でしょう。

      • by Anonymous Coward

        >恐らくこの論文の唯一の価値は

        そんなことはない。こうやって雑談サイトのネタになったじゃありませんか!

        # それが価値かどうかは余談を許しまくります

      • by Anonymous Coward

        ベンチマーク論文としては正確さも厳密さも、ベンチマークとして配慮すべき点を全て尽くす完備性もいずれも欠けていて、

        ベンチマークの完備性ってなんでしょうか?
        #まあ論文に"The benchmarking itself was done in a simple and fairly un-scientific fashion."とはありますが。。

  • by k2n (9818) on 2011年06月21日 14時49分 (#1973867) 日記
    • C++:ケーターハムスーパー7。プリミティブではあるが調整幅は広く、速さは腕次第。基本構成は保ちつつ現在まで生き残っちゃっている。
    • Java:メルセデスベンツCシリーズ(W204)。あくまでもフェイルセーフで、懐が深い。万人受け。
    • Scala: AMG C63。W204と同じシャシーで、Comfortモードで走らせていればCシリーズ(=Java)と大差ないが、ESPを切れば上級者専用。
    • Go: テスラロードスター。ルーツはケーターハム(というかロータス)にあるけど、現代の要請(並列コンピューティングとか)にあわせて中身は一新。

    #書いていてこじつけのような気がしてきたがW204に乗っているのでid

    • by Anonymous Coward on 2011年06月21日 15時08分 (#1973877)

      C++以外は鈍重で維持費が高いってことでおk?

      快適装備満載のモダンカーより軽トラやシトロエン2CVのほうが実用性から見た評価は高いというのが
      Googleの結果になったのかな

      親コメント
    • by Anonymous Coward

      Cはハチロク?

  • 例えるのはやめてくれ (スコア:2, すばらしい洞察)

    by gonzo (38147) on 2011年06月21日 15時20分 (#1973886)

    よけい訳がわからなくなる。

  • by Anonymous Coward on 2011年06月21日 17時10分 (#1973965)

    If a programming language was a boat… [hellofrnds.com]というブログ記事がちょうど最近あったので.なぞらえると
    C++:レース用ヨット.速くて機能的.動かすのにマッチョが多数必要.
    Java:豪華客船.ただし操縦士として.
    Go:モーターボート.カタマランがいいかトリマランがいいか試行錯誤中.完成したら速そう.
    Scala:豪華客船.客として.

    元記事だとこういう感じ

    Turing:カヤック.手作りで初心者向け.そしてカナダ製.
    Java:コンテナ船.エンタープライズ用で重いものもなんのその.でも操縦は楽しくない.
    Perl:タグボート.Javaを引っ張るくらいパワフル.百文字以下で.
    Ruby:レジャーボート?格好良くてトレンディー.
    PHP:イカダ.stringで工夫されてなんとか今でも浮いている.
    C:原潜.全ては任務のために最適化されている.
    HTML:プールに飛び込む・・・いやこれプログラム言語船じゃないって.

    • Common Lisp: ぐねぐねしてスクリューが四方八方についているが、
      いざスクリューを一方向に向けるとそれなりに速い。なぜすすむのかぱっと見わからない。

      Scheme: おなじくぐねぐねしているが、情報系の大学教授とSICPが一冊乗っている。

      アセンブリ言語: レース用ヨットだが、まだ組み立てられていない。

      --
      新人。プログラマレベルをポケモンで言うと、コラッタぐらい
      親コメント
    • by Anonymous Coward
      ではこれからOracleはGoで実装されて行くのですね。 http://www.oracleracing.com/ [oracleracing.com]
    • by Anonymous Coward

      固まらん言語がいいですっ!

      # モデしたのでAC

  • by dodonga (4178) on 2011年06月20日 17時39分 (#1973297) 日記
     dodongaです。

     論文がリンク切れです;;

    --
    閑話休題
  • 1stガンダムに例えると (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2011年06月21日 12時41分 (#1973743)

    C++:ガンダム
    Java:GM
    Go:ブラウ・ブロ
    Scala:ギャン

    ってとこ?

    • by Anonymous Coward

      C++はザクじゃね?

      • Re:1stガンダムに例えると (スコア:1, おもしろおかしい)

        by Anonymous Coward on 2011年06月21日 13時53分 (#1973826)
        ならC#はサクか。
        親コメント
      • 『僕が一番C++をうまく使えるんだ』

        親コメント
      • by Anonymous Coward
        ザクはCだろ。
        B言語:旧ザク
        ObjctiveC:グフ
        C++ドム

        あたりで。
        • by Anonymous Coward

          > C++ドム

          あやつの実装サイズやフットプリントが優れているというのはどうにも首肯しがたいのだが……。
          # まあ、後世(第二次ネオ・ジオン抗争とか)のMSよりは小さいけどさ。

          • by Anonymous Coward

            洗練さならドムよりゲルググでは?

            • C++はむしろ高機動型ザクII [wikipedia.org]あたりじゃないか。

              「外観こそはザクと大差がないが、内部構造は大きく変化しており、事実上別のモビルスーツになっている」とか「制御が難しく、ある程度熟練したパイロットではないと扱いかねる」とか、いかにも、C=ザクIIと比べてC++っぽい感じだと思う。

              親コメント
              • by Anonymous Coward

                そうだよな。
                自動姿勢制御のあったガンダムはガベージコレクションのあるJavaだよね。
                自動姿勢制御の無かったザクはガベージコレクションのなかったC++だよね。

  • by Anonymous Coward on 2011年06月21日 13時02分 (#1973769)

    C++ :ゼロ戦。登場時は圧倒的な威力を見せるが、パフォーマンスは操縦者能力に依存。慣熟していない操縦者では死屍累々。
    Java:B29。小回りは効かないが、ゼロ戦が届かない高級言語空を飛ぶ。
    Scala(タレコミで欠けているが「JavaVMで動くのでJavaの問題を共有している」と論文で指摘されている)
      :ボーイング377。B29ベースの旅客機。小回りがきかず運航コストは高い。が、居住性はぴか一
    Go:Honda Jet。まだ開発中。

    • by Anonymous Coward

      C++ :ゼロ戦。登場時は圧倒的な威力を見せるが、パフォーマンスは操縦者能力に依存。慣熟していない操縦者では死屍累々。
      Java:B29。小回りは効かないが、ゼロ戦が届かない高級言語空を飛ぶ。
      Scala(タレコミで欠けているが「JavaVMで動くのでJavaの問題を共有している」と論文で指摘されている)
        :ボーイング377。B29ベースの旅客機。小回りがきかず運航コストは高い。が、居住性はぴか一
      Go:Honda Jet。まだ開発中。

      Scalaについては、我々はエコノミーにしか乗れません。

      # それかアテンダントがいないか
      # あれ、居住性はよくないっすよ

    • by Anonymous Coward

      教官が良く、ライブラリ使用制限が緩ければC++はJavaに勝るとも劣らない高空を飛べます。
      が、慣熟していない操縦者がそれに挑戦すると衝撃波で僚機をなぎ払う事になります。

      # むしろ巡航ミサイルか。

  • by t98907 (12780) on 2011年06月21日 13時30分 (#1973808)
    perlは古い、rubyはいまいち、pythonでもいいけどscalaがなんかすごいらしいって聞いて気になってる。
  • ギャルゲーに例えると (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2011年06月21日 13時37分 (#1973816)
    C++: 幼なじみの元人妻で子持ち。技能万能だけど性格がねじ曲がってる。離婚して地元に戻ってきた。腐れ縁過ぎて発酵している
    Java:優等生の生徒会長。最近母親が再婚して継父が腹黒い人なので悩んでいる。ツンデレ
    Scala:生徒会長の弟。分け隔て無い愛を注ぐマリア様みたいな人。容姿も超美人。性別なんて問題じゃない
    Go:異母妹。という事になっている。幼き日の過ちの産物かもしれない。惹かれているとは認めたくない
  • forループ1つ取ってもC++が優位だとは思えないんだけどな。for( vector::iterator it = array.begin(), it != array.end(); ++it )とか。マクロで簡略化している人もいるけど人によって記述が違うから他人が読むと読みにくい。そこのところJavaとかC#はもう少し簡単に書ける。
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...