未経験者からプログラマーZET

未経験でもプログラマーに絶対になる!プログラミング初心者のための情報サイト

プログラミングの勉強

【C言語入門】C言語の違いと比較、C、C++、C#、いったいなにがちがうの?

2017/11/17

初めてプログラムを勉強するときにC言語を選択する方も多いと思います。

それだけ有名なのですが、C言語は高級言語と呼ばれ、WEB系に比べると難しく派生も多いです。

互換性がありながらも、違った機能を持っています。

C言語を勉強すれば、C++やC#も余裕でしょ?と思うとドツボにはまってしまうことになるかもしれません。

歴史からC言語の特徴を知る

C系言語の根源であるC言語の歴史について知ることで、派生するC++C#どんな意味を持っているかを理解できます。

歴史を見るとC言語が非常に効率のよい言語だということがよくわかりますよ。

C++やC#はC言語から生まれた

C言語がまだなかった時代、OSはアセンブリ言語で作られていました。

アセンブリ言語はCPUと直接コミュニケーションがとれる言語です。

しかしアセンブリ言語の命令はCPUに理解できる機械語と1対1の関係にあります。機械語をそのままプログラムとして書いているため、使い勝手がよくありません。

何回も繰り返すループ処理はアセンブリ言語で書くとコードの行数が増えてしまい処理に時間がかかります。その分開発が遅くなってしまうわけです。

 

ところがC言語が開発されると状況は変わります。

C言語で書いたプログラムの方が行数も少なくわかりやすく書くことができます。

プログラムをコンパイルすると機械語になるので、アセンブリ言語で書くことと同様の効果が得られるのです。

速度面ではアセンブリ言語の方が早い反面、開発の効率はC言語の方が容易であったため、UNIX(サーバーのOS)を開発していた言語はすべてC言語に書き直されました。

なぜここでUNIXがでてくるかっですって?

実はC言語の開発者はUNIXの開発もおこなっていたからです。C言語もUNIXも生みの親は同じなのですね。

そしてその効率のよさが異種ハードへの移植性を高め、C言語の普及につながったと考えられます。

 

1980年代にパーソナルコンピュータが定着し始め、1990年代には最初に学ぶプログラミング言語として主流になったのです。

その後、オブジェクト指向の登場によりC言語の使い勝手を良くするため、さまざまな派生プログラム言語が開発されました。

主な言語は、C++、Java、C#、Objective-C です。

それぞれが違ったコンセプトを持つプログラムのため、特徴にも個性があり、さまざまな環境で使われています。

以上が簡単ですがC言語の歴史です。C言語はプログラムの歴史とも深い関わりがあるのがわかります。

C系言語の種類と使われているシステム

・C/C++
産業用ロボットや家電製品、OS、OS上で動くソフトウェアなど

・Java
大規模システム、WEBアプリケーション、Androidアプリなど

・C#
デスクトップアプリ、WEBアプリケーション、WEBサイトなど

・Objective-C
Apple社製品のアプリケーション

C系言語のそれぞれの特徴。CとC++の違いに注目

C系言語の成り立ちや特徴について、もう少し詳しく見ていきます。

C言語

アセンブリ言語の次に処理速度が速いため、一般的なプログラム言語(Ruby、PHP、Javaなど高級プログラム言語)の中では最速です。

速さの理由はCPUからの距離でイメージできます。

C言語→OS→アセンブリ言語→CPU

という順序で翻訳されてCPUが処理をするのですが、OSもC言語で作られています

OS上で動くプログラムとOSの言語が同じだと無駄に翻訳しなくてよいので処理速度が速くなります。

OS本体が作れる言語のため、家電製品などの組み込み系プログラムやOS上で動くソフトウェアもC言語で作ることができます。

また、処理速度が速いため、高速処理を求められるシステムで用いられることも多いです。

C++(シープラプラ)

C++はC言語にオブジェクト指向の機能を追加したプログラム言語です。

C言語とC++の間では、互換性の問題で過去に議論が行われてきました。

ある時期ではC++の機能をC言語に取り入れるなど、後発プログラムが先発プログラムの機能を増やすといった対応も行われました。

それほど関係性が深い言語であるため、C言語とC++は混在させて使用することが可能です。

C言語同様ハード側で動くことを得意としている言語なので、産業用ロボットや家電製品、パソコンのデバイスドライバーやOS上で動くアプリケーションが得意です。

C#(シーシャープ)

マイクロソフトが開発したプログラミング言語です。

開発にはDelphi開発エンジニアが多数参加しています。

そのためC言語を元にしているようにみえますが、Delphiの構文がそのまま使われている部分もあります。

仕組みがJavaと似ていて、.NET Framework上で動きますのでWindows以外のOS上でも稼働しますがJavaほど有名ではありません。

言語名にCが入っていますが、C言語との互換性はありません。

C言語と関係のある言語

C言語は互換性はなくなくともいろいろな言語に影響を与えています。

Java

サンマイクロシステムズがオラクルに買収されたのちに開発したプログラム言語です。

C言語/C++の構文記法など受け継がれていますがC言語との互換性はありません。

オブジェクト指向プログラミング言語=Javaというイメージの時代もありましたが、現在はAndroidアプリの開発言語というイメージが強い言語です。

Javaが作られたコンセプトは「Write once, run anywhere」、OSを選ばずプログラムを実行することができるという特徴があります。

その背景には、Java仮想マシンがあります。

それぞれのOS上にJava仮想マシンを構築し、OSとJavaプログラムを翻訳する為、OSに依存しないプログラムができる仕組みです。

大規模なソフトウェアを得意とし、みずほ銀行のシステムもJavaで作られています。

Objective-C(オブジェクティブシー)

Objective-CはStepstone社が開発したプログラム言語です。

のちにアップルを去ったスティーブ・ジョブズが創立したNeXT Computer社が、権利を買い取っています。

その後NeXT社をApple社が買収したことから、Apple社のmacOS、iOSの専用言語となりました。

C++のようにオブジェクト指向を可能にした形の言語ですが、C言語部分とオブジェクト指向部分が混在しているような言語です。

ソースコード内では@をつけることでオブジェクト指向部分のプログラムであることを切り分けています。

次のページではC言語の勉強方法についてご紹介します。
Page / 1 2

-プログラミングの勉強