C# 対 C++: それらの違い
C#との主な違い C++
- C++ は、基本言語 C にオブジェクト指向機能を追加した低レベルプログラミング言語ですが、C# は高レベル言語です。
- C++ はマシン コードにコンパイルされますが、C# は CLR (共通言語ランタイム) に「コンパイル」され、ASP.NET では JIT によって解釈されます。
- C++ はオブジェクト指向言語ですが、C# はコンポーネント指向プログラミング言語と見なされます。
- In C++ メモリを手動で管理する必要がありますが、C# は仮想マシンで実行され、メモリ管理が自動的に実行されます。
- In C++ 開発は特定のアーキテクチャに従う必要があり、移植可能でなければなりませんが、C# 開発はシンプルで最新の汎用オブジェクト指向プログラミング言語である必要があります。
何ですか C++?
C++ C プログラミング言語と Simula67 (最初のオブジェクト指向言語) の機能を備えたコンピュータ プログラミング言語です。 C++ クラスとオブジェクトの概念を導入しました。
これは、高レベルおよび低レベルの言語機能をカプセル化します。 したがって、それは中級レベルの言語とみなされます。 以前は、C 言語のすべてのプロパティを備えていたため、「クラス付き C」と呼ばれていました。
C#とは何ですか?
Cシャープ によって開発されたオブジェクト指向プログラミング言語です。 Microsoft .Net Framework上で動作する。強力な型付け、命令型、宣言型、オブジェクト指向(クラスベース)、コンポーネント指向プログラミングなどの機能を備えている。 Microsoft .NET プラットフォーム内で。
「Cシャープ」という名前は、楽譜からインスピレーションを得たものです。 ここで「#」記号は、書かれた音符のピッチを半音高くする必要があることを示します。
の歴史 C++
C++ 言語はAT&Tベル研究所のBjarne Stroustrupによって開発されました。StroustrupはC言語の強力な支持者であり、Simula67の崇拝者でもありました。彼は両方の言語の長所を組み合わせようとしました。彼はオブジェクト指向プログラミング機能をサポートし、C言語のパワーを維持した言語を作成することを目指していました。その結果、 C++.
C#の歴史
Anders Hejlsberg は C# 言語開発の主要貢献者です。1999 年に彼は、当時「Cool」と呼ばれていた新しい言語を開発するためのチームを結成しました。このプロジェクトは 2000 年 XNUMX 月に .Net Developers Conference で承認され、発表されました。この言語は後に C# に改名されました。
の原則 C++ 開発
- プログラムはシンプルでオブジェクト指向であり、理解しやすいものでなければなりません
- 開発は堅牢で安全な環境で行う必要があります。
- コードは特定のアーキテクチャに従う必要があり、移植可能でなければなりません。
- コードは「解釈しやすく、動的」である必要があります。
C# 開発の原則
- シンプル、モデム、汎用、オブジェクト指向である必要があります。 プログラミング言語.
- 言語と実装は次のサポートを提供する必要があります。 ソフトウェア工学 原則
- C# は、ホスト システムと組み込みシステムの両方のアプリケーションを構築するのに理想的な選択肢です。
さて、このC#対 C++ チュートリアルでは、Cシャープと C++.
C++ | C# | |
---|---|---|
言語の種類 | C++ 低レベルでプラットフォームに依存しないプログラミング言語です。 | C# は高級言語です。 |
コンパイル | C++ マシンコードにコンパイルされる | C# は CLR (共通言語ランタイム) に「コンパイル」され、ASP.NET の JIT によって解釈されます。 |
メモリ管理 | In C++オブジェクトを動的に割り当てる場合は、メモリを手動で管理する必要があります。 | C# はメモリ管理を自動的に実行します |
多重継承 | C++ 多重継承をサポートする | C# は多重継承をサポートしていません。 |
難易度 | C++ より複雑な機能が含まれます。 | C# には複雑な機能はありません。階層がシンプルで、非常に理解しやすいです。 |
デフォルトのアクセス指定子 | 公開中 C++ 構造体用。クラス用プライベート | C# .net のプライベート。 |
プラットフォーム | C++ は、あらゆる種類のプラットフォームで動作する言語です。また、Unix および Linux システムでも同様に人気があります。 | C# は標準化されていますが、Windows 以外ではあまり見かけません。 |
スタンドアロンアプリケーション | C++ スタンドアロン アプリケーションを作成できます。 | C# ではスタンドアロン アプリケーションを作成できません。 |
オブジェクト指向 | C++ 完全なオブジェクト指向言語ではありません。 | C# は純粋なオブジェクト指向言語です。 |
境界チェック | 配列の境界チェックはサポートされていません。 | 配列の境界チェックをサポートします。 |
ガベージコレクション | C++ ガベージコレクションをサポートしていません。 | C# はガベージ コレクションをサポートしています。 |
多重継承 | C++ 多重継承をサポートします。 | C# は複数のクラスの継承を提供しません。 |
Foreach ループ | 旧バージョンの C++ for eachループはサポートされていません。(範囲ベース forループで C++ 追加されたのは C++ 11) | C# は各ループをサポートします。 |
ポインタの使用 | ポインターはプログラム内のどこでも使用できます。 | ポインタはアンセーフ モードでのみ使用できます。 |
に使用 | ゲームで広く使用されています。 | C#プログラミングを使用して作成できます Windows、モバイル、コンソール アプリケーション。 |
バイナリのサイズ | C++ はるかに軽量です。 | C# には多くのオーバーヘッドがあるため、コンパイルする前にライブラリをインクルードする必要があります。 |
プロジェクトの種類 | C++ プログラマーは通常、ハードウェアと直接連携するアプリケーション、または他の言語よりも優れたパフォーマンスを必要とするアプリケーションに重点を置きます。 | C# は最新のアプリ開発に使用されます。 |
コンパイラの警告 | C++ 構文が正しければ、ほとんど何でもできます。したがって、柔軟な言語ですが、実行中の OS に重大な損害を与える可能性があります。 | C# は高度に保護されています。 損傷を引き起こす可能性のあるコードを誤って作成した場合、コンパイラはエラーと警告をスローします。 |
コンパイル結果 | コンパイル後、 C++ コードはマシンコードに変換されます。 | コンパイル後、C# コードは中間言語コードに変換されます。 |
スイッチステートメント | In C++ Switch ステートメントでは、テスト変数は文字列にできません。 | C# switch ステートメントでは、文字列である場合とそうでない場合があります。 |