これからプログラミングの勉強を始めるにあたり、C言語を選択する方もいると思います。
それだけC言語は有名ですが、C言語そのものは高級言語とも呼ばれていて、Web系よりも難しくて派生が多いことで知られています。
互換性を持っていながらも、また違った機能も持ち合わせているのです。
そんな人気のC言語について紹介したいと思います。
C言語について
C言語というと、「C」、「C++」、「C#」がありますが、それら のC言語がなかった頃のOSは、アセンブリ言語で作られていました。アセンブリ言語というのは、CPUと直接的にコミュニケーションすることができる言語です。
ただアセンブリ言語による命令は、CPUに理解可能な機械語と1対1の関係にあり、さらに機械語をそのままの状態でプログラムとして書いていることから、全体的に使い勝手があまり良くないと言えます。特に何度も繰り返すようなループ処理の場合は、それをアセンブリ言語で記入すると、コードの行数が多くなって処理に時間がかかることになり、その分開発が遅くなることも考えられます。
そういうときに登場したのがC言語になり、C言語で記入したプログラムは、アセンブリ言語よりも行数が少なくて分かりやすいのです。
プログラムのコンパイルで機械語になりますので、結果的にアセンブリ言語で記入するのと同じ効果を得ることができます。速度に関してはアセンブリ言語の方が早いですが、その反面開発の効率については、C言語の方が容易だったこともあり、UNIXを開発していた言語はすべてC言語に書き直されたという経緯があります。
では何故UNIXが関わってくるのかですが、C言語の開発者は、UNIX自体の開発も行っていたことが理由と言われています。
つまりC言語とUNIXは、どちらも元は同じだということです。
C言語の効率の良さが、異種ハードへの移行性を高める結果になり、それが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言語はアセンブリ言語に次いで処理速度が速いのが特徴になり、一般的なプログラム言語である、Ruby、PHP、Javaという高級プログラム言語の中では最も速くなっています。
C言語が速い理由は、CPUの距離からも分かります。
実際の処理は、C言語、OS、アセンブリ言語、CPUという順番で翻訳されながらCPUが処理していくことになりますが、中でもOS自体もC言語で作られているのです。OSの言語とOS上で稼働するプログラム言語が同じですので無駄がなくなり、それで処理される速度が速くなります。
OS自体がC言語になるため、家電製品などに組み込んだプログラムを始め、OS上で稼働するソフトウェアなどもC言語での作成が可能です。
さらに処理の速度が速いことから、高速処理が必要なシステムで利用されることも多きなります。
◆C++(シープラプラ)
C言語にオブジェクト指向の機能を追加したのが、C++というプログラム言語になります。
C言語とC++については、これまで互換性について問題になることが多かったです。
例えば、C言語にC++機能を取り入れたり、後から出されたプログラムに先に出されたプログラムの機能を取り入れたりする、といった処置が行われたこともありました。それほど関係の深い言語になり、C言語とC++はそれぞれ混在させての使用もできます。
C言語と同じように、ハード側での稼働が得意な言語であることから、様々な種類の家電製品や産業用ロボット、パソコンのデバイスドライバーやOSで稼働するアプリケーションなどが挙げられます。
◆C#(シーシャープ)
C#は、マイクロソフトが開発したプログラミング言語のことで、Delphiの開発エンジニアがたくさん関係しているのが特徴です。
そういうこともあり、C言語が元になったものもありますが、Delphiの構文がそのままの形で使用されている部分を見ることができます。
C#は仕組み自体がJavaとよく似ているのが特徴で、さらにNET Framework上での稼働もできるということから、Windows以外のOS上での稼働もできます。ただ、Javaほどの知名度はありません。
「C#」というように、言語名にCがありますが、C言語との互換性はありません。
ゲームプログラミングには様々な言語が使用されていますが、その中でも最も多い言語のひとつが実はC#でもあるのです。
その理由として挙げられるのが、Unity(ユニティ)やMonoGame(モノゲーム)といった、C#のゲーム開発としては最適と言われる、ゲームフレームワークの登場があります。
C#のゲーム開発に最適なゲームフレームワークは実用的で、様々なプラットフォーム向けへのゲームの書き出しや配信ができるような環境が整っているのです。
プログラマーが一度制作したゲームは、プラットフォーム上への移植が簡単です。
今までは「iOSのゲームはiOS向けの開発」、「AndroidのゲームはAndroid向けの開発」を別々にするなど、手間がかかりました。それを全て避けることができるため、これまでよりも開発するときの効率が大きくアップしました。
ゲームに限らず、Webアプリケーションやスマホアプリの開発などにも使用されることが多いです。
例えば、検索エンジンで有名な「Bing」も、C#によって作られています。
C言語と関係性のある言語
C言語と特に互換性はなくても、以下の言語は様々なところに影響を与えています。
◆Java
Javaは、サンマイクロシステムズがオラクルから買収された後に手掛けたプログラム言語です。
C言語、C++からプログラムの文法を受け継いでいますが、特にC言語と合わせて一つのプログラムを動かすことはできません。
Javaのコンセプトは「Write once, run anywhere」になり、OSを選ぶことなくプログラムを実行できるのが特徴です。
◆Objective-C(オブジェクティブシー)
こちらはStepstone社が開発したプログラム言語になります。
アップルを去ったスティーブ・ジョブズが、後に創立したNeXT Computer社が、その権利を買い取ったことで話題になりました。
ゲームを開発するために必要なのがプログラム言語ですが、その言語のひとつにC言語があります。
昔からプログラムとしておなじみの言語で、主なものとしては、C++、Java、C#、Objective-Cなどがあります。
ゲーム開発の仕事に就きたい方は、最初にチェックしておくといいと思います。