違いを解説君

あるゆる物事の"違い"をわかりやすく解説する情報マガジン

コンピューター

ITの違い

c言語とc++とc#の違いをわかりやすく解説!特徴を比較チェック!

投稿日:

プログラミングをしたことはありますか?

 

はなこ
プログラミングを勉強しようと思っているの。

『C言語』だとか、『C++』、『C#』なんてのもあるじゃない?

いったい、どれを覚えればいいのかわからなくて。

最初に覚えるべきなのは、やはり『C言語』からじゃないのかな?

一番古くからあるものらしいしね。

たろう
はなこ
でも、『C言語』は難しいって聞いたことあるんだけど。

『C#』は新しい言語で、覚えやすいとも言われたことがあるわ。

 

今回は、『C言語』『C++』『C#』の特徴について調べ、その違いを解説します。

スポンサーリンク

『C言語』『C++』『C#』の特徴

まずは、『C言語』『C++』『C#』の特徴について調べてみましょう。

『C言語』とは?

1972年に、AT&Tベル研究所のデニス・リッチーが主体となって開発した汎用プログラミング言語

のことです。

『C言語』は、

Unix上でユーティリティを作成するためのプログラミング言語

として開発されました。

『C言語』が誕生するまでは、一般的にはアセンブラと呼ばれる、コンピュータが理解できる機械語に直接対応した言語が利用されていました。

言語仕様がシンプルで、コンパイラ(プログラム言語を機械語に翻訳するソフトウェア)の開発が簡単な上に、ドキュメントも整備されていたことから多くのプログラマーに利用されるようになり、広く普及することとなりました。

『C++』とは?

1983年に、AT&Tベル研究所の計算機科学者ビャーネ・ストロヴストルップによって公開された汎用プログラミング言語

のことです。

『C++』は、

『C言語』にオブジェクト指向の要素を取り入れたプログラミング言語

として開発されました。

特徴として、オブジェクト指向の概念である『クラス』や『テンプレート』などの機能が追加されています。

また、『C言語』とは互換性があるため、『C言語』で書いたプログラムもコンパイルができます。

『C#』とは?

2002年に、Microsoftのアンダース・ヘルスバーグが設計したプログラミング言語

のことです。

『.Net Framework』というアプリケーション開発・実行環境の中のひとつであり、言語自体は『C++』によく似ています。

最大の特徴は、共通中間言語と呼ばれる、プラットフォーム(CPUやOSなどの動作環境)に依存しない形にコンパイルすることです。

簡単にいえば、

どんな環境でも動作可能なプログラム

を生成することができる点が挙げられます。

例えば、『C言語』や『C++』の場合、プラットフォームが変われば、再度コンパイルする必要があります。

 

また『C#』には、『C言語』や『C++』にはないガベージコレクションという機能があることも特徴です。

ガベージコレクションとは、消費したリソース(一時的に保管されたデータなど)を自動的に開放する機能のことです。

『C言語』や『C++』の場合、確保したリソースは、プログラムによって開放しなければなりません。

『C#』の思想としては、『C言語』や『C++』よりも『Java』という言語に近いといえます。

 

はなこ
難しい言葉が連続して、いまいちよくわからないんだけど、結局なにが違うの?
じゃあ、今度は違いについて見ていこうか。
たろう

 

『C言語』『C++』『C#』の違い

タイピング

タイピング

『C言語』『C++』『C#』の違いは、主に次のようになります。

『C言語』『C++』『C#』の違い

  • 『C++』『C#』は、オブジェクト指向プログラミングが容易なように設計された言語である。
  • 『C言語』『C++』は、対象のプラットフォーム上だけで動作する形にコンパイルされるが、『C#』は共通中間言語にコンパイルされる。
  • 『C#』にはガベージコレクションの機能がある。

大きな違いのひとつとしては、

『C++』『C#』が、オブジェクト指向プログラミングが容易にできるように設計されている

という点が挙げられます。

オブジェクト指向プログラミングとは、『カプセル化』『継承』『ポリモルフィズム』の概念を持った新しいプログラミング手法です。

『カプセル化』は、

必要なものだけを公開して内部の実装は隠しておく

という考え方のことです。

余計なものを非公開にすることで、使う側は内部の詳細を気にすることなく使用することができ、外部に影響を与えることなく内部の実装を変更することができるようになります。

『継承』は、

作成したオブジェクトに別の機能を追加することができる仕組み

です。

『継承』によって、オブジェクトの再利用が容易にできるようになります。

『ポリモルフィズム』とは、

場面に応じてオブジェクトの動作や仕様が変化する仕組み

のことです。

例えば、図形をオブジェクトとして扱う場合に、それが三角形や四角形、丸など、様々な形に変化しても、共通の処理(例えば回転や拡大・縮小など)を利用することができるようになります。

 

『C#』が共通中間言語にコンパイルされる

ことは、前に書いたとおりです。

これによって、コンパイルされたプログラムをそのまま異なるプラットフォーム上で動作させることができます。

つまり、環境によってもう一度コンパイルする必要がなくなるわけです。

ガベージコレクションも『C#』だけが持つ特別な機能です。

確保したリソースを開放する処理は、プログラムで記述する場合かなりの手間になります。

また、開放を忘れるとメモリリークという現象(消費メモリが少しずつ増えていく現象)が発生し、トラブルの原因となります。

ガベージコレクションがあれば、リソースを開放するという処理をしなくてもシステム側が勝手に必要に応じてリソース開放をしてくれます。

 

はなこ
『C#』は一番新しい言語なだけに、いろいろな機能があるようね。
今からプログラミングを勉強するするのなら、まずは『C#』を覚えるのがいいんじゃないかな?
たろう

スポンサーリンク

まとめ

今回の違いのポイントについて、まとめていきましょう。

ポイント

  • 『C言語』とは、1972年に、AT&Tベル研究所のデニス・リッチーが主体となって開発した汎用プログラミング言語のことである。
  • 『C++』とは、1983年に、AT&Tベル研究所の計算機科学者ビャーネ・ストロヴストルップによって公開された汎用プログラミング言語のことである。
  • 『C#』とは、2002年に、Microsoftのアンダース・ヘルスバーグが設計したプログラミング言語のことである。
  • 『C++』『C#』は、オブジェクト指向プログラミングが容易なように設計された言語である。
  • 『C言語』『C++』は、対象のプラットフォーム上だけで動作する形にコンパイルされるが、『C#』は共通中間言語にコンパイルされる。
  • 『C#』にはガベージコレクションの機能がある。

プログラミング言語としての難易度は、『C++』が最も高く、習得が難しいでしょう。

『C言語』は習得しやすい言語ですが、ポインタの概念を理解できずに挫折する人が多いです。

この3つの言語の中では、まずは最も新しい『C#』から学習することが最も無難な選択となるでしょう。

関連記事

-ITの違い

Copyright© 違いを解説君 , 2019 All Rights Reserved.