
GCC開発におけるC++の利用が承認される 72
ストーリー by hylom
g++の話ではない 部門より
g++の話ではない 部門より
あるAnonymous Coward 曰く、
GNU Compiler Collection(GCC)メーリングリストへの投稿によると、GCC開発におけるC++の利用をGCC Steering CommitteeおよびFree Software Foundationが承認したとのこと(本家記事、SourceForge.JP Magazine記事)。
GCCはCで書かれているが、今回の決定により今後はC++での開発が可能になる。現時点ではどのサブセットを利用するかは未定とのこと。
この件をメーリングリストに投稿したCodeSourceryのMark Mitchell氏によると、C++の採用はより良いコンパイラを作るためとのことで、C++の利用それ自体が目的ではないという。同氏はC++に精通していない開発者を考慮し、当初は利用できるC++の機能を「Cプログラマーに理解し易く、かつC++初心者が間違い難い」ものに制限したほうが良いと提言している。
また、今後はC++の開発ガイドラインやコーディング規約を確立する必要があるとして協力者を募っているとのことだ。
C++で馬鹿にされたことを思い出した (スコア:3, おもしろおかしい)
昔、サンプルプログラムをもらったんですが、メモリ確保にmalloc関数使っていたけど
どこにもメモリ開放している箇所がないので、
「サンプルなのでメモリ開放省いているですか?」とたずねたら、
「C++だから自動的に開放されるんですよ」といわれた。
「えっ?そんなことはない、はずですよ」と答えたら
「そんなこともしらないんですか?CじゃなくてC++ですよ、拡張子がcppになってるでしょ」って、
いくら私がC++を理解していないからって思ったがひょっとしたらそういった
C++もあるのかなと思いそれ以上聞かなかった。
ありますか?
Re:C++で馬鹿にされたことを思い出した (スコア:1, 参考になる)
#Cでも使えるって
Re:C++で馬鹿にされたことを思い出した (スコア:1)
その場合使うキーワードは gcnew ですし、さすがに話が違いすぎではないかと。
あらびっくり (スコア:2)
C言語の話をしていたら、変数を関数の最初で宣言せず、途中で宣言し利用してもいいとのこと。
なんとC99から追加された機能なんだと。これから、C99が普通になっていくのかな?
と考えたとき、C++の細かい文法仕様・互換性は怖いと思った。それが長年使われなかった理由かな?とも想像した。
-- gonta --
"May Macintosh be with you"
Re:あらびっくり (スコア:3, すばらしい洞察)
>と考えたとき、C++の細かい文法仕様・互換性は怖いと思った。それが長年使われなかった理由かな?とも想像した。
C90がC99に変わるまでにどれぐらい時間がかかっているかという証明ですね。
C99でさえそうなんですからC++に変わるにはもっと時間がかかるでしょう。
と、言うかC99コンパイラを使っているのに言語規約を把握していないとはまりますよ。
たとえば定数の型はC90とC99で違うことがまれにあります。
memologueさんが詳しい。
http://d.hatena.ne.jp/yupo5656/20070204/p1 [hatena.ne.jp]
kusanagi shin
メーリングリストを読まずにコメント (スコア:1, 興味深い)
Re:メーリングリストを読まずにコメント (スコア:1, おもしろおかしい)
「例外を使わない」
「実行時型情報を使わない」
「namespace 機能を使わない」
… 中略 …
そして「C++ を使わない」という規約ができるんですね。
Re:メーリングリストを読まずにコメント (スコア:1)
Re:メーリングリストを読まずにコメント (スコア:1, おもしろおかしい)
Re: (スコア:0)
そういや昔、特定の日本語文字の後には\を入れろ、みたいな話が・・・
Re: (スコア:0)
GUIならクライアントはWindowsしかないだろうからまあ許すとしても
本来コンソールから使えるようなものも、いきなりシフトJISで表示されると
困る場面も出てきます。
gettextとか使えませんか?
Re:メーリングリストを読まずにコメント (スコア:1)
Re: (スコア:0)
C++のガイドライン
1. 多重継承は甘え
2. namespaceは甘え
3. テンプレートは甘え
4. 例外は甘え
5. 実行時型情報は甘え
Re:メーリングリストを読まずにコメント (スコア:1)
-- 哀れな日本人専用(sorry Japanese only) --
Re: (スコア:0)
Re: (スコア:0)
書いたコードを色々なコンパイラでコンパイルできるようにしようと思うから
やれ例外を使うなRTTIを使うなnamespaceを使うなと面倒な話になるんだろう。
GCCなんてGCCでコンパイルできりゃいいんだろうから使える物は好きに使えばいい。
Re: (スコア:0)
GCCが無い環境上でGCCをコンパイルするにはどうしたらいいのん?
Re:メーリングリストを読まずにコメント (スコア:1)
ぶーとすとらっぷ (スコア:3, 参考になる)
「ccを使ってgccをコンパイルする」のは過去の話になった
というか、それを捨ててもいいと判断したってことなんでしょうねぇ。
SunOS5(Solaris2)に標準でccが付かなくなったのに匹敵するショックかも。
古いC言語版のgccを別途用意しておけば、ccからスタートして、
stage 1. ccでC版gccをコンパイルして、
stage 2. ccでコンパイルしたC版gccでC版gccをコンパイルして、
stage 3. gccでコンパイルしたC版gccでC版gccをコンパイルしてコンパイルを検証
stage 4. C版gccでC++版gccをコンパイルして、
stage 5. C版gccでコンパイルしたC++版gccでC++版gccをコンパイルして、
stage 6. C++版gccでコンパイルしたC++版gccでC++版gccをコンパイルしてコンパイルを検証
…6ステージあればC++版gccが作れますね。
re:当初は利用できるC++の機能を(中略)制限 (スコア:1)
地味に想い出す過去ストーリ
「オブジェクト指向言語でオブジェクト指向っぽいプログラミングをしない」のはNG?
http://srad.jp/developers/article.pl?sid=10/05/06/0923253 [srad.jp]
件のブログ主氏は、実はこういう感じの事を主張したかったのかもしれないなぁ
みたいな事を思ったり、思わなかったり
Cだけのままじゃ何が悪かったんだろう (スコア:1, 興味深い)
コンパイラとか低レベルなものはCだけの方が、
サイズが小さい上に保守性も上がっていいと思うんだけど。。。
それに、最近は例外とエラーを区別できない人がおおくて何でも例外投げるし。。
多態は関数のポインタで処理を書くようなものだから、いまいちトレースが難しくなるしで
C++は業務系アプリだからこそメリットのあるものだと思うんだけどな~
Re: (スコア:0)
gccは実質、Cで書いたLisp処理系で実装されている風な仕組みだという話らしいので、
なるほど、ならばいくらでもマクロ的に拡張できるだろう、と
勝手に妄想合点してたんだけど・・・違うみたいだな。
LLVMとかに対抗するために、抜本的に書き直すきっかけにしたいのかな。
Re: (スコア:0)
え?
普通エラーが発生したら例外投げるんじゃないの?
Re: (スコア:0)
例外的ではないエラーに関しては、例外を放つなということでしょうか。まぁ、
私は、エラー処理を書くぐらいなら、例外を使う方がむしろコードはわかりやすくなると思っています。エラー処理のバケツリレーとか、見ていると馬鹿馬鹿しくなるので。
まぁ、一般ユーザーにNullPointerExceptionとかいう謎のエラーを表示するプログラムが良いとは思いませんが、落としどころは結構難しいのではないですかね。
gcc-in-cxx (スコア:1)
http://gcc.gnu.org/wiki/gcc-in-cxx [gnu.org]
RMSはgccの開発にはC++は適切でないといって反対していた。
http://www.airs.com/blog/ [airs.com]
Re:gcc-in-cxx (スコア:2)
ページにあるGCCSummitでのスライド(http://airs.com/ian/cxx-slides.pdf)の最後のほうに
>Why not C++?
>
略
> The FSF doesn't like it!
> → The FSF not writing the Code.
ワロタwww
kusanagi shin
Linus on C++ (スコア:0)
C++ is a horrible language.うんたらかんたら
Embedded C++ (スコア:0)
様々な型の動作を記述するわけだからテンプレートとかポリモフィズムが便利そうな気がするけれど、使えないんだろうなあ。
そうなったら変に規則を定義し直すよりもEmbedded C++ [wikipedia.org]でいいんじゃないかと思うわけですが。
混ぜるな危険 (スコア:0)
CとC++は似て異なるものです。
少しでもC++を使うのなら、C++を完璧にマスターし完全なコーディングをしなければ、ぱっと見はわからない落とし穴を無意識のうちに掘りまくることになります。
ちなみに、例外を使わない、というのは大変ですよ。
私、
コンパイラの設定で例外をdisableし、
newが失敗したときに例外をthrowする代わりにNULLを返すように設定
すればいいと思っていたんですが、
ポインタをNULLチェック・・・しようにもポインタないじゃん、と。
値渡し仕分け (スコア:1)
そもそもclassを値渡しにする理由はなんでしょうか?
値渡しを止めて、コンストラクタをpublic公開を止めてfooを生成するstaticのメンバ関数を用意するのではだめでしょうか?
Re: (スコア:0)
むしろクラスを使わずに、better Cとして使うって事じゃないかと。
Re:混ぜるな危険 (スコア:2)
同意。
逆に昔GCCがCを独自拡張したように、
C++を使わず「Cではない何か」を作った方が早いような。
Re: (スコア:0)
何で書くのがいいのかって話に・・・
Re:混ぜるな危険 (スコア:1)
F社のCOBOLはCOBOLで書かれていると聞いたが、それはさすがにちょっと引く。
Re: (スコア:0)
この例でメモリが足りなくなる場合というのはすなわちスタックオーバーフローですので、普通の処理系では単にsegfaultして終了だと思います。私はこのような状況で例外を飛ばすように仕込まれたコンパイラを見たことがありません。
C++の規格でもこの場合に例外を飛ばすことは要求していなかったと思います。
Re:混ぜるな危険 (スコア:1)
Re: (スコア:0)
そのコードはnewしていないですよ
Cと同じようにスタックオーバーフローするだけじゃないですか?
Re:混ぜるな危険 (スコア:1, おもしろおかしい)
おまいら、なに釣られてるんだよ。
元記事は
> 少しでもC++を使うのなら、C++を完璧にマスターし完全なコーディングをしなければ、ぱっと見はわからない落とし穴を無意識のうちに掘りまくることになります。
の例を己の身を犠牲にして示してるんだよ。讃えてやれよ。
Re: (スコア:0)
設計の悪さを感じるのは、私だけ? "const foo& arg" でないとすると、 arg は func1 内で作業用に使われるということだから、 それってスタイル的にどうなのかなぁ、と。
Re: (スコア:0)
同感。
foo がレジスタに乗るほどの大きさなら良いけど、
もし乗らないほど大きいとしたら、値渡しするのは筋の悪い設計だと思いますね。
Re: (スコア:0)
これからは (スコア:0)
Re: (スコア:0)
いや、早く滅んでくれC++
Re: (スコア:0)
Re: (スコア:0)
Re:これからは (スコア:1)
そこでDelphi Languageですよ
Re: (スコア:0)
> まともなオブジェクト指向の言語がごまんとあるので、オブジェクト指向"風"超高級アセンブラの存在意義なんて無いよね。
C++はマルチパラダイム言語だから、「まともなオブジェクト指向の言語」とC++のオブジェクト指向的な
部分だけ比較しても意味ないと思うけど。
Re: (スコア:0)
C++自体よりも、C++をまともに使えないくせに
C++案件に入ってくるプログラマが滅んで欲しい。
# プロといえないプログラマが多すぎる。
# だめなプログラマが、仕事の規模を無駄に膨らましてる感じ。
GNU go (スコア:0)
Re: (スコア:0)
>ここはGNU goを大改造してだな
投了してよい?(Y/N/Go)