パスワードを忘れた? アカウント作成
40355 story
プログラミング

C++の新規格「C++0x」草案が公開される 125

ストーリー by hylom
使いこなせる人はどれだけ… 部門より

Anonymous Coward曰く、

現在のC++の言語仕様および標準ライブラリ仕様はISO/IEC 14882で策定されていますが、現在この仕様の改訂作業が行われており、先日この新規格の草案が公開されました(草案PDF)。

この規格は、JTC1/SC22/WG21 — The C++ Standards Committeeにて策定されていて、「C++0x」と呼ばれています。C++0xでは従来の仕様との互換性を保ちつつ、並列プログラミングや関数プログラミング機能、ジェネリックプログラミング、オプショナルガベージコレクタといった機能などが強化/新規導入されるようです(マイコミジャーナルの記事)。

なお、C++0xの正式公開は2010年に正式公開される見通しとのこと。

C++は最近はJavaや軽量言語の普及で追いやられているような気もするのですが、「職業C++プログラマー」というのはまだまだ現役なのでしょうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • copy_if (スコア:3, 興味深い)

    by wd-nara (25864) on 2008年11月14日 13時06分 (#1455505) 日記
    なぜか存在しなくて、STLの仕様のバグとまでいわれていた copy_if が、やっと入るんですね。
    • Re:copy_if (スコア:2, 参考になる)

      by nawo (15137) on 2008年11月14日 19時11分 (#1455788)

      一応補足を。

      C++03までのSTLには、std::xxx_if(..., Pred pred)に対応するalgorithm std::xxx(..., T t)が存在して、それはstd::xxx_if(..., std::bind2nd(std::equal_to<T>(), t))と同じことを行うようになっています。

      この名前付け規則に従うと、もしstd::copy_if(first, last, result, pred)があるならば、範囲[first, last)についてtと等しいもののみをresult以降にコピーするalgorithm std::copy(first, last, result, t)が必要になってしまいます。こんなalgorithmはナンセンスですし、そもそもstd::copyはすでに普通のコピーをするalgorithmとして存在します。さらに、std::copy_if(first, last, result, pred)std::remove_copy_if(first, last, result, std::not1(pred))で実現できるので、わざわざ理屈を曲げてまでstd::copy_ifを導入する必要はないと判断されたのでしょう。多分。

      ただ、そういった理屈はともかく、remove_copy_ifを使った方法では二重否定になってしまい、わかり辛いことは確かで。まあstd::copy_ifが導入されたというのは正しい判断だと思います。

      ちなみに、近い将来boost library [boost.org]にrange_ex [sourceforge.net]が受理されれば_if版algorithmというのは必要なくなり、std::copy(range | boost::adaptors::filtered(pred), result)という風に書けるようになります。

      親コメント
      • Re:copy_if (スコア:1, すばらしい洞察)

        by wd-nara (25864) on 2008年11月14日 20時34分 (#1455818) 日記

        その辺の事情は途中までは理解できるんですが、「だから、入れない」はやっぱり仕様のバグだったと思っています。命名規則に合わないのが問題だったら、名前を変えて入れれば良かったのです。choose でも pick でも remove_copy_unless でも、適切な名前はいくらでもあるでしょ。

        もう、草案にcopy_ifが入ったんだから、文句をいっても実益はないけど。というか、これまで文句を言った人がたくさんいたから、今回の草案に入ったのでしょうね。

        親コメント
  • のはどうでもいいとして、

    Java全盛&やっとC++も落ち着いてきた今の時勢にC++の亜種って…
    とりあえずどういうターゲッティングなんでしょうか。

    ずっとC/C++でやってきたから今さらJavaに乗り換えるのイヤだけど他の言語を触りたい
    なんてニッチなターゲットぐらいしか無いような気がしますが
    はてさて
    • by Anonymous Coward on 2008年11月14日 13時17分 (#1455519)
      亜種じゃなくて仕様のバージョンアップ。
      C99 とか Fortran 2003 みたいなもの。
      処理系がまともに対応してくれるかは別の話だけど、GCC は大丈夫だろうし、VC++ もそのうち対応するだろうし。
      親コメント
      • by Anonymous Coward on 2008年11月14日 14時50分 (#1455611)
        >C99 とか Fortran 2003 みたいなもの。

        C++0xの「0x」って、この「99」とか「2003」とかのことなのかな。
        199x年みたいな。

        で、とりあえず2010年目指してるけど、ずれ込むかもしれないから念の為「x」で伏せとけ、と。

        #Fortran 2003なんてあったのか。
        親コメント
        • 0xって (スコア:1, 参考になる)

          by Anonymous Coward on 2008年11月14日 15時07分 (#1455628)
          > で、とりあえず2010年目指してるけど、ずれ込むかもしれないから念の為「x」で伏せとけ、と。

          もともと、目指していたのは『遅くとも2009年』だったように記憶してます。
          (策定途中から0xは16進表記だ、という話もあったとか、なかったとか)

          まぁ。C++プログラマ的には、今回の仕様更新は大歓迎です。すてきな機能が盛りだくさんで。
          親コメント
          • Re:0xって (スコア:1, 参考になる)

            by Anonymous Coward on 2008年11月14日 21時14分 (#1455837)
            ちょっと、古いけどわかりやすいので、ペタ
            C++0xの言語拡張まとめ(※随時更新)[http://d.hatena.ne.jp/faith_and_brave/20071022/1193052163]
            別のこと探していたらgoogleかかった。

            いろいろな物が追加されるけど。
            なんで __scope__ みたいなものは無いんだろう。。
            だれも不便に思ってないのかな?
            __func__ の拡張でもいい

            あとは、 break label みたいなラベル指定できるジャンプがほしいですね。
            ループのネストは工夫で何とかなるけどいつもswitchではまって
            結局、if() else if() になるんですよねぇ。
            たとえば、こんなコード動かしたい!

            while() loop_1:
            {
                for() loop_2 :
                {
                    switch()
                    {
                        case :
                            continue loop_1;
                        default:
                            fprintf(stderr, "%s::%s@%ld\n", __scope__, __func__, __LINE__);
                            break loop_2;
                    }
                }
            }

            lamda 実装される時、一緒にやってもらえないだろうか。。。
            親コメント
    • by Anonymous Coward on 2008年11月14日 14時52分 (#1455612)
      俺は、2001年宇宙の旅のディスカバリー号に空目
       C++0x

      映画のそれは、こんな感じだっけ?
       C+++P+++0x
      って、どんだけバージョン上がってんだ!
      2010年正式公開予定だそうだけど、ディスカバリーは同年ルシファーイベントに巻き込まれ…

      #この言語も一部はモノシリック構造の何かに吸収。って事はないだろうな
      親コメント
  • C++は未だに主流の言語ですね。
    C/アセンブラも現役ですが。
    でも新しい仕様を策定されても、すぐには反映されないでしょうねー。
    • C++って組み込み系で主流でしょうか?

      体感では、むしろ未だに流行っていないと思うのですが、
      組み込み系といっても、規模によって違うんでしょうかねえ。

      #カーナビとか携帯とか携わったことない
      親コメント
    • マシンの性能が上がって、今はボトルネックはマシンでなく人間側にあるのだから、実行スピードを多少犠牲にしてでも人間の労力を減らす方向に(間違いが起きにくいように、簡単に書けるように)プログラム言語が進化するのはあたりまえですね。個人的には早くMDAまで行って欲しいのですが。

      で、今回のC++0xの仕様ですが、(リンク先を読んだだけでは)どうも「間違いが起きにくいように」方面の仕様追加な気がしないのですが、どちら方面を目指しているのでしょうか。

      Javaや軽量言語自体も概ねC++で書かれてると思いますが、これらがC++0xの追加機能を使ってバージョンアップされることはあるのでしょうか。

      親コメント
    • 未だに主流というよりは、他に妥当な選択肢が無いという表現が適切ではないかと思います。
      特に組み込み系向けに提供される(高級言語的な)開発環境は、C/C++ぐらいしか無い。

      C/C++はいい意味で枯れた言語だと思いますが、
      そのうちCOBOLerならぬCyer(しーやー)とかCer(さぁ?)呼ばれて
      鼻つまみ者になる時代がくるのではと危惧しています。

      代替可能な言語があるなら教えて欲しい。

      組み込み分野の端の方で生きている者より。
      親コメント
    • by Anonymous Coward on 2008年11月15日 8時28分 (#1455988)
      最近コンシューマのゲームプログラマやってますが、やっぱり開発はC++です。
      長年続いているシリーズ物に関わった友人に聞くと、
      昔 C で書かれた部分を引き継いでいたりするらしいので、
      全部 C++ とは行かないようですが、基本 C++ で、調整を繰り返すゲーム部分は独自のスクリプト言語を使っているらしい。
      まだまだスクリプトで動いている部分はごくわずかです(私の周辺では)。

      最近では、lua などのスクリプト言語を組み込んで使っているものも増えていて、
      スクエニが Wii で出したゲームで、7割方 Squirrel というスクリプト言語で書いたという
      チャレンジングなものがありますが、メモリの管理なども含めて色々苦労したみたいです。
      ハードを限界まで使い切るようなゲームでは、スクリプト言語全開で書ける時代はしばらく来ないかも。
      カジュアルなゲームならほぼスクリプト言語でいけるんでしょうが。

      <愚痴>最近のゲーム機って性能は良くなったけど、メモリ少なすぎだよね</愚痴>

      最近ではマルチプラットフォームでの開発も増えているので、
      C++0x もしばらくはお預けで、 対応コンパイラが出てきても、
      各プラットフォーム開発環境の最大公約数的な機能しか使えないんだろうなぁ・・・
      親コメント
  • すごく普遍的に存在するよねー、というのが私の感覚です。

    >「職業C++プログラマー」というのはまだまだ現役なのでしょうか?

    という感想を持つひともいるということは、プログラマとひとくちでいっても、ひろーい範囲に棲息してるんだなあと改めておもいました。

    わたしは、COBOLプログラマってどこにいるの? と感じていますが、いるところにはたくさんいるそうですね。
    • by Sakura Avalon (12557) on 2008年11月14日 17時51分 (#1455745)
      とあるblog日記でMOの話が出てきて、今でもこんなの使ってるなんて!という話になって驚いたのと同じでしょうか。その時はコメントでズラズラと他の人からもMOの悪口やら古すぎるメディアをいつまでも引きずってなどという流れが出ていて、一部の業界ではまだ当たり前に使われている事を誰一人知らなかったようなので読んでて閉口しました。
      書き込んだ本人もコンピュータに携わっている人間だったのに、やはり自分の領分以外には疎くなってしまうものなのかなぁと思えてしましました。

      あと、タレコミの「Javaや軽量言語の普及で追いやられて」の方にも違和感を感じてしまいましたね。Javaの普及はともかく。

      #私もその絶滅寸前かも知れない(笑)職業C++プログラマーです。いや他の言語も使うけど。
      親コメント
    • 私のように趣味でやっている人には、手っ取り早く目的を達成できた方がいいですし、GUIアプリやテキスト処理、数値計算にC/C++は必須ではありませんので、Javaや軽量言語に流れるのが普通のような気がします。

      ただ。職業でやっている人の場合は、分野に応じて適した言語があると思いますので、「職業C++プログラマ」が絶滅危惧なんてことはないでしょう。趣味としてやっている人がC/C++を選ばなくなったといってもLispよりは人気があると思いますし、ハードウェア寄りの言語ですから、趣味の言語としての需要は今後も続くでしょう。

      #1ヶ月ほど前、Haskellのプログラムを書換えてSchemeで動かしてみましたが、Haskellのコードには括弧があまりないので、読むのに疲れました。括弧アレルギーも程々に。
      親コメント
typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...