
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, 興味深い)
Re:copy_if (スコア:2, 参考になる)
一応補足を。
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, すばらしい洞察)
その辺の事情は途中までは理解できるんですが、「だから、入れない」はやっぱり仕様のバグだったと思っています。命名規則に合わないのが問題だったら、名前を変えて入れれば良かったのです。choose でも pick でも remove_copy_unless でも、適切な名前はいくらでもあるでしょ。
もう、草案にcopy_ifが入ったんだから、文句をいっても実益はないけど。というか、これまで文句を言った人がたくさんいたから、今回の草案に入ったのでしょうね。
一瞬、魚の骨のAA?って思った (スコア:1)
Java全盛&やっとC++も落ち着いてきた今の時勢にC++の亜種って…
とりあえずどういうターゲッティングなんでしょうか。
ずっとC/C++でやってきたから今さらJavaに乗り換えるのイヤだけど他の言語を触りたい
なんてニッチなターゲットぐらいしか無いような気がしますが
はてさて
Re:一瞬、魚の骨のAA?って思った (スコア:2, 参考になる)
C99 とか Fortran 2003 みたいなもの。
処理系がまともに対応してくれるかは別の話だけど、GCC は大丈夫だろうし、VC++ もそのうち対応するだろうし。
Re:一瞬、魚の骨のAA?って思った (スコア:1, 参考になる)
C++0xの「0x」って、この「99」とか「2003」とかのことなのかな。
199x年みたいな。
で、とりあえず2010年目指してるけど、ずれ込むかもしれないから念の為「x」で伏せとけ、と。
#Fortran 2003なんてあったのか。
0xって (スコア:1, 参考になる)
もともと、目指していたのは『遅くとも2009年』だったように記憶してます。
(策定途中から0xは16進表記だ、という話もあったとか、なかったとか)
まぁ。C++プログラマ的には、今回の仕様更新は大歓迎です。すてきな機能が盛りだくさんで。
Re:0xって (スコア:1, 参考になる)
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 実装される時、一緒にやってもらえないだろうか。。。
Re:一瞬、魚の骨のAA?って思った (スコア:1, おもしろおかしい)
C++0x
映画のそれは、こんな感じだっけ?
C+++P+++0x
って、どんだけバージョン上がってんだ!
2010年正式公開予定だそうだけど、ディスカバリーは同年ルシファーイベントに巻き込まれ…
#この言語も一部はモノシリック構造の何かに吸収。って事はないだろうな
Re:一瞬、魚の骨のAA?って思った (スコア:1, おもしろおかしい)
いろんなことにお詳しそうな構造ですね
コンシューマゲーム機や組み込み系では (スコア:1)
C/アセンブラも現役ですが。
でも新しい仕様を策定されても、すぐには反映されないでしょうねー。
Re:コンシューマゲーム機や組み込み系では (スコア:1)
体感では、むしろ未だに流行っていないと思うのですが、
組み込み系といっても、規模によって違うんでしょうかねえ。
#カーナビとか携帯とか携わったことない
Re:コンシューマゲーム機や組み込み系では (スコア:1)
メモリなんて 無い んです、というような環境下で class なんか使ったらどうなってしまうやら ..
今時の、カーナビとか携帯とかは、メガ単位でメモリ積んでるだろうから C++ ok でしょう。
Re:コンシューマゲーム機や組み込み系では (スコア:1)
で、今回のC++0xの仕様ですが、(リンク先を読んだだけでは)どうも「間違いが起きにくいように」方面の仕様追加な気がしないのですが、どちら方面を目指しているのでしょうか。
Javaや軽量言語自体も概ねC++で書かれてると思いますが、これらがC++0xの追加機能を使ってバージョンアップされることはあるのでしょうか。
Re:コンシューマゲーム機や組み込み系では (スコア:1, すばらしい洞察)
それは後方互換性を捨てるということですね。
Re:コンシューマゲーム機や組み込み系では (スコア:1)
特に組み込み系向けに提供される(高級言語的な)開発環境は、C/C++ぐらいしか無い。
C/C++はいい意味で枯れた言語だと思いますが、
そのうちCOBOLerならぬCyer(しーやー)とかCer(さぁ?)呼ばれて
鼻つまみ者になる時代がくるのではと危惧しています。
代替可能な言語があるなら教えて欲しい。
組み込み分野の端の方で生きている者より。
Re:コンシューマゲーム機や組み込み系では (スコア:1, 参考になる)
長年続いているシリーズ物に関わった友人に聞くと、
昔 C で書かれた部分を引き継いでいたりするらしいので、
全部 C++ とは行かないようですが、基本 C++ で、調整を繰り返すゲーム部分は独自のスクリプト言語を使っているらしい。
まだまだスクリプトで動いている部分はごくわずかです(私の周辺では)。
最近では、lua などのスクリプト言語を組み込んで使っているものも増えていて、
スクエニが Wii で出したゲームで、7割方 Squirrel というスクリプト言語で書いたという
チャレンジングなものがありますが、メモリの管理なども含めて色々苦労したみたいです。
ハードを限界まで使い切るようなゲームでは、スクリプト言語全開で書ける時代はしばらく来ないかも。
カジュアルなゲームならほぼスクリプト言語でいけるんでしょうが。
<愚痴>最近のゲーム機って性能は良くなったけど、メモリ少なすぎだよね</愚痴>
最近ではマルチプラットフォームでの開発も増えているので、
C++0x もしばらくはお預けで、 対応コンパイラが出てきても、
各プラットフォーム開発環境の最大公約数的な機能しか使えないんだろうなぁ・・・
Re:コンシューマゲーム機や組み込み系では (スコア:1)
BCD演算による演算精度も期待できない。文字列扱うにも細心の注意が必要。
ポインタを使用した複雑なデータ構造を扱う必要性は低い。
もちろんCOBOL処理系の実装にはCやC++が使われています。(汎用機はPL/Iやアセンブラかもね)
Re:コンシューマゲーム機や組み込み系では (スコア:2, 興味深い)
C++なら精度を保証しながらBCD演算を行うクラスを定義して演算子オーバーロードすれば
出来ますし、文字列だってchar *を捨ててstringを使えばいい。
ただ、きっと開発に関わってるプログラマの誰かが気を抜いて、ついついdoubleを使って
しまったりchar *を使ってしまうことを完全に防ぐのは難しい。
と、考えてみると「特定分野に長けた」言語にとって必要なことは、「○○が出来る」ことではなく
「○○が出来ない」ことなのでしょう。
0Xになってますます「万能言語」を目指しているC++は意外と使用分野が限られてきてしまう
かもしれません。
# C++大好きなのに。template loveなのに。
## Rubyも同じ不遇(万能であるが故に使われない)に逢いそうだなぁ。
「職業C++プログラマー」 (スコア:1)
>「職業C++プログラマー」というのはまだまだ現役なのでしょうか?
という感想を持つひともいるということは、プログラマとひとくちでいっても、ひろーい範囲に棲息してるんだなあと改めておもいました。
わたしは、COBOLプログラマってどこにいるの? と感じていますが、いるところにはたくさんいるそうですね。
Re:「職業C++プログラマー」 (スコア:2, 興味深い)
書き込んだ本人もコンピュータに携わっている人間だったのに、やはり自分の領分以外には疎くなってしまうものなのかなぁと思えてしましました。
あと、タレコミの「Javaや軽量言語の普及で追いやられて」の方にも違和感を感じてしまいましたね。Javaの普及はともかく。
#私もその絶滅寸前かも知れない(笑)職業C++プログラマーです。いや他の言語も使うけど。
Re:「職業C++プログラマー」 (スコア:1)
ただ。職業でやっている人の場合は、分野に応じて適した言語があると思いますので、「職業C++プログラマ」が絶滅危惧なんてことはないでしょう。趣味としてやっている人がC/C++を選ばなくなったといってもLispよりは人気があると思いますし、ハードウェア寄りの言語ですから、趣味の言語としての需要は今後も続くでしょう。
#1ヶ月ほど前、Haskellのプログラムを書換えてSchemeで動かしてみましたが、Haskellのコードには括弧があまりないので、読むのに疲れました。括弧アレルギーも程々に。
Re:>職業C++プログラマー (スコア:1, おもしろおかしい)
Re:>職業C++プログラマー (スコア:2, おもしろおかしい)
これからは仮想関数を[[final]]された奴がプログラマー。
// final属性の指定、仮想関数オーバーライドの禁止
Re:>職業C++プログラマー (スコア:1, おもしろおかしい)
Re:>職業C++プログラマー (スコア:3, 参考になる)
企業の倒産リスクを証券化するCDSとは関係ありません。単純化すると
住宅を買う
↑
個人
↑
金融機関が住宅ローンを設定
↑←ファニーメイが保証
証券会社が証券化
↑
その証券を金融機関が購入
↑
別の証券会社が倒産リスクを証券化(CDS)
↑
さらに別の金融機関や年金資金が購入
みたいになっていて、住宅価格が下がると
住宅価格が下がる←さらに住宅価格が下がる
↑ (悪循環) ↑
個人がローンを払えない→抵当流れで中古市場に
↑
金融機関が住宅ローンを設定したはいいけど、ファニーメイがつぶれるとそれが保証されなくなるのでヤバイ
↑←ファニーメイが保証したはいいけど焦げ付きが多すぎてつぶれそうでヤバイ
証券会社が証券化
↑
その証券を金融機関が購入したはいいけど評価額が下がりすぎてつぶれちゃいました
↑
別の証券会社が倒産リスクを証券化(CDS)
↑
さらに別の金融機関や年金資金が購入したはいいけどつぶれちゃったので大損←いまここ
という感じでしょうか。
ヲタ的には (スコア:1)
# でも、事故って公開中止になりそうな読み方だな。
Re:ヲタ的には (ゲーム脳: -9999) (スコア:1)
#無敵コマンド失敗→壁に突っ込んで自滅→リセットを数え切れないくらい繰り返したのでID
雷鳥的には (スコア:1)
http://ga.sbcr.jp/news/0704/070/index.html [ga.sbcr.jp]
http://blogs.yahoo.co.jp/nandemoplamo/41724305.html [yahoo.co.jp]
Re:なんて読むの? (スコア:1)
コードの中の"c++;"でさえそう読んでる人は見たことありませんが。
Re:なんて読むの? (スコア:1)
そう読むのなら「シー ポスト インクリメント」と読んで欲しいなあ.
Re:.cpp (-10, ぱにっく) (スコア:1)
#あなた、まさか私の知ってる人じゃないでしょうね?
Re:.cpp (-10, ぱにっく) (スコア:1, 興味深い)
というわけで、少数ではあるものの、それなりの数はいるってことです。
Re:なんて読むの? (スコア:1)
Re:なんて読むの? (スコア:1)
「しーたすたすまるばつうえうえしたしたみぎひだりえーびー」
ってなりそうな読み方だなぁ
まてそれは罠だ (スコア:1, 参考になる)
http://en.wikipedia.org/wiki/0_(number) [wikipedia.org]
ヌルとも読むらしいがおかげでオーバーロードで大変な目に
007 (スコア:1)
安でのモンスター映画みたい・・・。
Re:007 (スコア:1, 興味深い)
Re:2010年公開見通しでC++0x? (スコア:3, 興味深い)
90年になって出たときには、「xはローマ数字の10だったんだネ」などとからかわれていました。
あぁ、「ン」が消えてるんですよ。「ビーフン・カレー」ね。
Re:2010年公開見通しでC++0x? (スコア:1)
Re:脊髄反射 (-1: フレームの元) (スコア:1)
そんなこといってると (スコア:1)
つれていかれちゃうよ。こわいこわい。
Re:脊髄反射 (-1: フレームの元) (スコア:2, すばらしい洞察)
# POSIXや窓じゃない実行環境で記述外の部分でごにょられると面倒なんだよ。
Re:脊髄反射 (-1: フレームの元) (スコア:2, 興味深い)
ガベコレが無いことが価値なのです.
ガベコレが無いと真っ当なプログラミングが出来ない人は, C系統の言語を使うべきではないし, 使ってはいけないのです.
Re:脊髄反射 (-1: フレームの元) (スコア:3, すばらしい洞察)
オプションだからいいかというとあんまりそうでもなくて、実行環境が違うとハード依存部分でなくても互換性がなくなったりする。同じ言語なはずなのにオプションまで確認しなきゃ使えるかどうかわからないというのはちょっと困る(また罠が増えたわけだ)。実際にはもう例外でそういう意味での互換性はなくなってるけどね。で、これはソースの互換性の話だけど、「C++使えます」って人がガベコレ前提(=deleteする事を考えない)だったら...。
だから「ガベコレ付けるんなら違う名前の言語にしようよー」というわけ。
Re:ジェネリックプログラミングって(オフトピ) (スコア:1)
建前としては効能に差異はないのです。建て前としては。
>医薬品の場合だって入ってる成分は一緒だけど、同じ効果があるとは言い切れない。
>だから現場では使い慣れ(=検証済み)ている既存のものを好んで使います。
エライ人の意見は異なるようですけどね。\(^O^)/
#宣伝文句なんて飾りです。エライ人にはそれがわからんのです。
Re:本物のプログラマーは Java や軽量言語を使わない (スコア:2, すばらしい洞察)
Re:本物のプログラマーは Java や軽量言語を使わない (スコア:2, すばらしい洞察)
Re:本物のプログラマーは Java や軽量言語を使わない (スコア:1)
すくなくともコレは大嘘だから。
#誰だ?最初にこんなデマを流した奴は。
Re:負けっつーか、くたばる。マヂデ (スコア:1)
C|C++は言語仕様より使い手側の勉強法のが標準化の必要性高いよな、とは私も常々思っていました。
‥‥というか自分がそういう教科書欲しい。