C / C ++は1つの言語ですか、それとも2つの言語ですか?C++はクラスを備えたCであると聞きました。そうですか?
8 に答える
C ++は1982年から1983年にCから分岐しました、そしてそれはコンピュータの年で長い時間です。ただし、C標準ライブラリ自体を含むC ++互換のCライブラリは多数あり、プログラムの安定したストリームがCからC++に移植されています。多くのCプログラマーは、C++と互換性のある機能しか知らないか使用していません。
それらは、別々の委員会からの異なるISO規格によって定義されています。互換性のある機能を定義している場合でも、多くの場合、異なる用語で定義されています。
C / C ++を参照することは、イタリア語/スペイン語を参照することとほぼ同じくらい有効です。誰に、いつそのような用語を使用するかに注意する必要があります。しかし、確かに両方向にアイデアが普及しており、類似点は偶然ではありません。
「C/C++」は正確にゼロ言語です。それは存在しません。
一方、Cは言語です。
C ++は別の言語であり、Cに似ていますが、クラスや他の多くの違いもあります。
明確にするために、@Zoidbergは次の場所にスポットを当てていました。
CとC++は完全に異なる2つの言語です。C withClassesはC++の前身でしたが、この用語は今でも非現代的なC ++でよく使用されます(たとえば、あちこちで生のポインターを使用します)。
2つの言語です。C ++を「クラス付きのC」と呼ぶのは、象を4本足の動物と呼ぶようなものです。あなたがそれをマウスと比較するまで、それは本当のようです。
Cから派生した多くの言語があります:C ++、Java、C#、JavaScript、csh、リストは続きます。それらはすべて多くの点で異なりますが、類似した構文を共有しています。
もちろん、CはBから派生しています。しかし、それは別の話です(そして、Bについてはもう誰も気にしません)。
簡単な答え:2つの言語
これらは2つの異なる言語ですが、ほとんどすべてのCコードが有効な(必ずしも適切ではない)C++コードです。
C ++は、最初は「Cですが、クラスがあります」と考えられていましたが、時間が経つにつれて、ますます異なり、Cコードは非常に悪いC++コードになりました。CまたはC++、あるいはその両方を学ぶことができますが、通常はそれらを混同することはありません(ただし、混同することはできません)。
それらは2つの異なる言語です。C ++は、その一部がCに由来し、ある意味でCと互換性があるため、このように名付けられました。
ScottMyersのEffectiveC++によると、C++は次の4つのコンポーネントを備えた統一言語と見なすことができます。
- C言語部分、ブロック、ステートメント、プリプロセッサーなど
- Objected Oriented C ++:クラス、カプセル化、継承、ポリモーフィズムなどを含む
- テンプレートC++:C ++テンプレート、メタプログラミング関連のものを含む
- STL。
したがって、C++はある意味でCよりも強力です。
C /C++は2つの言語です。Cは1つの言語であり、C++はもう1つの言語です。C ++は「より良い」Cと見なされます。Cは手続き型ですが、C++はオブジェクト指向です。C ++は、Cに比べて多くの改善があり、Cと同様の構文を持っています。
「C」という名前は、関連する言語のファミリーを指し、その一部は国際標準として形式化されています。これらには、K&R C、ANSI C、C99、およびC11が含まれます。
「C++」という名前は、関連する言語のファミリーを指し、その一部は国際標準として形式化されています。これらには、C ++ 98、 C ++ 03、 C ++ 11、 C ++ 14、および推測されるC++17が含まれます。
「C/C ++」という用語は、C++の設計者によって意図的に維持されているCとC++の共通部分を非公式に指すために多くの人が使用しています。
C ++の直前のバージョンは、実際には元々「CwithClasses」と呼ばれていました。これについては、BjarneStroustrupの1994年の著書「TheDesignand Evolution of C ++」(およびここでも)で詳しく説明されています。名前は最終的に「C++」に変更されました。これは主に、Cコミュニティの好意により、「CwithClasses」を「C」または「newC」に短縮することがあまりにも魅力的になったためです。
C ++には、Cにはない多くの言語機能があります(その逆はそれほどではありません)。特に、クラスベースモデルは、暗黙の関数呼び出しを呼び出す機能があるため、非常に強力であるため、C ++は(有機的に)高レベルのプログラミングスタイルを進化させ、C++の一般的な使用法をCの使用法とは大きく異なります。この最も注目すべき例は、Resource Acquisition Is Initializationと呼ばれる概念に関連しています。これは、標準クラス string、vector、shared_ptr 、および標準I/Oライブラリのストリームクラスで具体化されます。
その他の注意事項:
GCCでは、これらの言語バリエーションのどれに対してコンパイルするかを指定できます(他のコンパイラーと同様に)が、いくつかの制限があります。
C++98とC++03の機能の違いは最小限であり、多くの場合、本質的に同じ言語として扱われます。
CおよびC++の一般的なサブセットに対処する上位の質問:
私見ですが、答えはC / C ++は1つの言語ではなく、次の2つの言語だと思います。
- Cプログラミング言語
- C++プログラミング言語
C ++言語は、C言語から派生しています。C ++は、「クラス」機能が追加されたCプログラミング言語の名前です。つまり、基本的なC言語アーキテクチャが拡張され、オブジェクト指向プログラミングが可能になりました。インクリメントを意味する「++」演算子を使用します。C ++はCの増分であり、手続き型の方法またはオブジェクト指向の方法、あるいはその両方をプログラミングの方法で使用できます。C ++を使用すると、Cよりも簡単にコードを記述できます。ただし、C ++を使用しているため、C言語が現在適切でないことを意味するわけではありません。各言語は、プログラマーが必要とするソフトウェアの目的のために使用されます。そのため、ANSIはCを標準にしました。