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

マイクロプロセッサの未来、将来のコンピュータスタイルは ?」記事へのコメント

  • 並列化 (スコア:1, すばらしい洞察)

    by Anonymous Coward
    >効率的な並列化を実現する言語
    効率的なのはもちろんだけど、あえて「ここは並列で!」なんて指示しなくても良きに計らってくれるくらいでないと、なかなか厳しいと思う。
    #pragma omp parallelうねうね。
    • by Anonymous Coward

      C/C++は抽象度が低すぎるから勝手に並列化するのはかえって難しいんですよ。
      プログラマの「人間様である俺様がもっとも高速なプログラムを書けるんだ」信仰と、それを支えるC/C++にover optimizeされたハードウェアアーキテクチャのせいでいつまでたってもC/C++支配は終わりそうにありませんが。

      • 手続き型言語は順次実行されるという概念が、並列化を妨げてる気がする。

        例えば、C/C++っぽいものを使うにしても。
        ・並列可能なブロックを二重波カッコで区切る
        ・ブロック内で、上に記述されている処理が全て実行されるまで待機しなければならない場合、二重セミコロンをつける
        とでもしたら、マシになったりしないかなぁ?

        例えば
        int main(){
         foo();
         bar();
         {{
          hoge1();;
          hoge2();;
          hoge3();
         }}
         ;;
         baz();
        }
        としたら、foo()とbar()と、{{hoge1(), hoge2(), hoge3()の順次実行}}を並列にして、その全てが終わるのを待ってからbaz()を実行する、といったように。

        # スレッド分割、順序入れ替えを行うか行わないかはコンパイラ判断で。

        --
        1を聞いて0を知れ!
        • by Anonymous Coward

          それぞれの関数が整数型の戻り値を持つなら、

          foo() & bar() &
          ((hoge1() | 1) && (hoge2() | 1) && hoge3());
           
          baz();

          でいけそうな気はする。そこまで頑張ってくれるコンパイラがあるのかどうかは知らんけど。

          • by greentea (17971) on 2011年06月06日 23時01分 (#1965824) 日記

            expr(){return 1;}  /* C++じゃないよ */

            と、不定な引数をとる関数を作っておいて、

            expr(foo(), bar(), expr(hoge1()) && expr(hoge2()) && expr(hoge3()));

            ってするかな、俺なら。無駄な関数呼び出しは最適化で消えるはず。

            ……けど、そんなバッドノウハウみたいなテクじゃ、ダメなんだよ。
            意識しなくても使ってしまうような記法じゃないと。

            --
            1を聞いて0を知れ!
            親コメント

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

処理中...