C89 ⊂ C++ だけど C99 ⊄ C++ だから、C 言語と言っても色々あることを考えないといけません。また、C# は C と似てないだけでなく、C# はオブジェクト指向言語だけど C++ はオブジェクト指向言語ではないので、C# が比較対象として出てくることが信じられないですね。C# が C++ と同類の言語だと思ってる人って多いんでしょうか?
C++ は C++0x から言語の方向性をジェネリックプログラミングの方へ大きく拡張させるので、このトピックで挙がっているどの言語とも似ていない言語にどんどん近付いていくと思います。
似てるとしたら Objective-C++ かな (スコア:2, 参考になる)
C89 ⊂ C++ だけど C99 ⊄ C++ だから、C 言語と言っても色々あることを考えないといけません。また、C# は C と似てないだけでなく、C# はオブジェクト指向言語だけど C++ はオブジェクト指向言語ではないので、C# が比較対象として出てくることが信じられないですね。C# が C++ と同類の言語だと思ってる人って多いんでしょうか?
C++ は C++0x から言語の方向性をジェネリックプログラミングの方へ大きく拡張させるので、このトピックで挙がっているどの言語とも似ていない言語にどんどん近付いていくと思います。
また、本文では挙がっていませんが、C++ を丸ごと含んでいるという意味で一番似ているのは Objective-C++ かな。
Kenta MURATA
Re: (スコア:2, すばらしい洞察)
そういう区別が付く人はいいんです。それらの違いがわからず「自分はCが書けるからC++もわかっている(拡張子.cppのファイルに有効に機能するコードが書ける)」と思い込んでる人がC/C++なる選択肢を選ぶから酷いことになるんですよ。
既にコメントが付いていますが、似てる似ていないは主観によるところが大きいですが、各種構文、言語として用意されている演算子と優先順位、関数の呼び出し方法などなど似てる点は多いと思います
Re: (スコア:2, 参考になる)
複数の言語を比較する場合、各言語が第一級で何を表現する能力を持っているかを考えたほうがいいです。
たとえば、C言語は、手続きとしての関数、構造体、整数、浮動小数点数、ポインタなど。C++ は手続きとしての関数、構造体、数値、ポインタ、クラス、クラステンプレートと関数テンプレート、のような感じです。C# は無名関数を第一級で書けたりしますよね (C++ も C++0x から書けるようになるんでしたよね)。このような第一級で扱える概念の比較が、言語の比較だと私は思うのです。
各言語は第一級で表現できない概念を複数持っていますが、第一級で
Kenta MURATA
Re:似てるとしたら Objective-C++ かな (スコア:1)
「第一級で扱える概念の比較」だけが「似ている似ていない」の結論を出すのでしょうか? 事前に比較範囲を明示していればわかりますが、これでは後出しじゃんけんで、言語ごとに違う機能があると言っているだけにしか聞こえません。そしてそんなことは百も承知です。しかも並べられても似ていない理由にはなってないし。
「C++ はオブジェクト指向言語ではない」と結論づけている点についても説明が欲しいです。第一級の定義がよくわかりませんが、C++におけるclassは第一級に含まれないのでしょうか?
Re: (スコア:0)
喧嘩しているわけではないので後出しじゃんけんでも問題はないと思いますが、自分の意見が否定されてプライドが傷つきましたか?
> 「C++ はオブジェクト指向言語ではない」と結論づけている点についても説明が欲しいです。
どこからそんな結論を引き出してきたのやら。
あなたは後出しじゃんけんを気にするよりも、読解力のなさを恥じたほうがいいようですよ。
muraken> 各言語は第一級で表現できない概念を複数持っていますが、第一級で表現可能なものを組み合わせることで、ほとんどの場合について説明的に実装する事が可能
Re: (スコア:0)
オブジェクト指向の言語は必ずオブジェクトに属さなければなりません。
C++の場合、クラスや構造体によってオブジェクト指向のコードを
表現できるだけですね。
※ だからめんどうごとは少ないと思うのだけど。。。
オブジェクト指向は、カプセル化と隠蔽と多態 ができればいいのでしたっけ?